常见问题
按症状定位问题。先确认当前部署方式、运行模式,以及访问的是管理入口还是网关入口。
管理入口打不开或无法登录
桌面图标和网关入口应该打开哪一个
| 目的 | 入口 |
|---|---|
| 修改配置、查看日志、切换模式 | 飞牛桌面的 敲门 knock;OpenWrt 使用 服务 → 敲门 Knock;Windows 使用 fn-knock Windows 管理程序打开本机管理页 |
| 验证公网、域名、隧道或业务映射 | 实际网关端口或对应外部域名;通常为 7999,飞牛 Docker FPK 默认是 8999 |
OpenWrt 默认管理端口是 7991,网关仍是 7999。Windows 管理页严格限定为 127.0.0.1:7991,不能从另一台机器打开。其他部署的端口见端口与入口。
Windows 管理页打不开
先打开 fn-knock Windows 管理程序,确认 FnKnock 服务状态为就绪,再点击“打开管理后台”。初装默认地址是 http://127.0.0.1:7991/;只能在安装该程序的 Windows 主机上访问。
若服务无法就绪,优先检查五个默认端口是否被占用。通过管理程序修改端口并保存,避免直接编辑 %ProgramData%\FnKnock\config\runtime.json。完整步骤见 Windows x86_64 部署。
后台提示存储错误
当前版本使用 SQLite,新安装不需要 Redis。
- 新安装:检查数据目录权限、端口冲突和服务日志。
- 从早期 Redis 版本升级:保留旧 Redis 数据卷,按 Docker 部署 的迁移步骤处理。
- OpenWrt:确认
/etc/fn-knock/gateway和/var/lib/fn-knock仍然存在。
不要为新安装额外创建空 Redis。旧数据迁移完成并确认后台正常后,再移除旧 Redis 服务和数据卷。
忘记管理密码
管理密码与访客认证凭据不是同一项。按部署方式进入本机控制台或容器执行重置,不要删除数据目录:
- Docker:见 Docker 部署 的管理密码恢复说明。
- OpenWrt:见 OpenWrt 部署。
- 飞牛 fnOS FPK:优先从飞牛桌面重新进入
敲门 knock。 - Windows:优先在
fn-knock Windows 管理程序中点击“清除管理密码”。管理程序无法打开时,在应用安装目录中以管理员 PowerShell 运行.\fn-knock-service.exe reset-panel-password。
管理正常,但外网访问失败
后台能打开,外部域名仍超时
后台正常只说明管理服务在运行。按顺序检查:
- 当前网络拓扑是否选对:公网直达或内网穿透。
- 外部流量是否到达实际网关端口,而不是管理端口。通常为
7999,飞牛 Docker FPK 默认是8999。 - DNS 是否指向当前公网或隧道入口。
- 公网直达时,路由器端口转发和主机防火墙是否放行。
- 内网穿透时,隧道是否在线并指向正确的本地网关。
请求日志中是否能看到该请求。
无法配置公网入站时,使用内网穿透:子域路由。
Windows 的 7999 从局域网或公网访问不到
这是新安装 Windows 版的预期行为:7999 只监听 127.0.0.1,管理程序没有受支持的公开监听范围设置。不要用路由器端口转发、管理面板反代或手改运行配置绕过该限制。
若在同一台 Windows 主机上自行运行隧道或反向代理,它可以回源到 127.0.0.1:7999,但不由 fn-knock 管理,且必须保留 Host 与真实客户端 IP。需要完整的公网直达、直连授权或应用内隧道管理时,选择其他部署方式。
飞牛原生 FPK 的 7999 被跳到其他端口
飞牛系统的 强制 HTTPS 连接 可能在请求到达 fn-knock 前执行重定向。
进入 飞牛系统设置 → 安全性 → 端口设置 → 设置,关闭 强制 HTTPS 连接,再测试 7999。

自动 HTTPS 启动失败
自动 HTTPS 只在当前部署显示该功能、且主机实际具备入站链路和 80 端口时才可用。Docker 和 OpenWrt 不提供该开关。检查:
80是否被其他服务占用。- 当前权限是否允许监听低端口。
- 飞牛系统端口重定向或其他前置入口是否冲突。
- SSL 证书是否已经配置。
自动 HTTPS 不会代替证书申请。Windows 新安装的网关默认只监听回环,开启该功能不会让它自动成为公网入口。Docker 和 OpenWrt 应在前置代理、边缘平台或网关外部终止 TLS。见 SSL 证书。
未登录也能直接访问业务端口
存在绕过 fn-knock 的入口。检查路由器端口转发、宿主机防火墙、IPv6 防火墙和前置代理,关闭直接指向业务服务的公网规则。
直连授权应只公开认证网关,登录后再临时放行当前出口 IP。Docker 和 Windows 不支持由 fn-knock 管理宿主机防火墙。
域名、子域或隧道不工作
应该选择哪种方案
| 条件 | 方案 |
|---|---|
| 有公网入站,主要访问 Web 服务 | 公网直达:子域路由 |
| 没有公网入站 | 内网穿透:子域路由 |
| 需要保护 SSH、远程桌面等原始端口 | 原始端口访问:直连授权 |
| 必须保留旧路径前缀 | 内网穿透中的路径模式,仅用于兼容 |
先按网络拓扑选入口,再按 Host、路径或 TCP/UDP 选择路由,最后为服务设置访问策略。
隧道模式需要 DDNS 吗
通常不需要:
- FRP 使用服务端地址和外部端口。
- Cloudflared 使用 Cloudflare Tunnel 绑定的域名。
只有隧道入口本身依赖动态公网地址时,才为该入口配置 DDNS。
FRP 和 Cloudflared 怎么选
- 已有 FRP 服务端,希望控制公网端口和流量:使用 FRP。
- 已使用 Cloudflare,希望减少公网服务器维护:使用 Cloudflared。
两者都应把认证域名和业务域名转到 fn-knock 网关,并保留原始 Host。见 内网穿透。
Cloudflared 回源应填 HTTP 还是 HTTPS
- fn-knock 本地网关没有配置证书:使用
http://...:<实际网关端口>。 - 本地网关已配置有效证书,且 Cloudflared 信任该证书:使用
https://...:<实际网关端口>。
Cloudflared 与 fn-knock 在不同容器时,localhost 指向错误的容器,应使用可互通的容器名或局域网地址。见 Cloudflared 隧道。
子域打开了错误的服务
检查:
- 前置代理或隧道是否保留原始 Host。
- 根域名与子域映射是否匹配。
- 是否有重复或兜底映射抢先命中。
- 公网回源是否指向实际网关端口。
管理入口不能作为业务回源。
路径映射出现资源 404 或登录循环
上游应用没有正确处理路径前缀、重定向、Cookie 或 WebSocket。新配置应迁移到独立子域;只有上游明确支持前缀部署时才继续使用路径模式。
EdgeOne 或 ESA 出现登录循环、页面异常
检查:
- 回源是否指向 fn-knock 的实际网关端口。
- 子域映射是否启用了对应平台支持。
- 缓存是否关闭,WebSocket 是否开启。
- 真实客户端 IP 请求头是否正确传递。
- 双栈回源是否把请求分到不同入口。
专题配置见 腾讯云 EdgeOne 和 阿里云 ESA。
回到家庭 Wi-Fi 后仍走公网
客户端仍在使用公网 DNS 结果。飞牛原生 FPK 使用智能连接时,检查:
系统设置 → 功能 → 智能连接是否启用。- 本机局域网 IP 是否正确。
- 路由器 DHCP DNS 或客户端 DNS 是否指向 fn-knock 所在设备。
- 客户端 DNS 缓存是否刷新。
智能连接只用于子域模式的局域网 DNS 优化,不会修改公网 DNS。Docker 不提供该能力。见 智能连接。
登录或会话异常
TOTP、密码和 Passkey 怎么选
- TOTP:默认登录方式,也是绑定 Passkey 和外部账号的基础。
- 账号密码:适合不方便使用身份验证器的成员。
- Passkey:在已有 TOTP 身份上提供便捷登录。
切换到账号密码登录模式后,登录页不会显示 Passkey 或外部账号入口。见 认证与登录。
登录页的人机验证在哪里配置
进入 系统设置 → Challenge。PoW 与 Turnstile 的区别见 Challenge;Cloudflare 配置见 Turnstile。
“记住我”如何影响会话
会话时长在 系统设置 → 会话 中配置。启用“记住我”会使用长期会话时长;若 IP 授权设置为跟随会话,对应授权也会延长。
只在个人可信设备上使用长期会话。
删除 TOTP 后其他登录方式失效
删除某个 TOTP 会同时使关联的 Passkey 和外部账号绑定失效。删除前应确认还有其他可用身份;删除后需要重新绑定关联登录方式。
登录成功后仍回到登录页
按顺序检查:
- 认证域名和业务域名是否使用相同的公开协议。
- 根域名、Cookie 作用域和 Passkey RP ID 是否匹配。
- 浏览器是否阻止 Cookie。
- 边缘平台是否缓存了登录响应。
- 前置代理是否传递了正确的
Host、X-Forwarded-Host和X-Forwarded-Proto。 - 系统时间是否准确。
系统遇到同一认证页或同一目标持续循环时会暂停自动回跳。此时从原始业务 Host 重新发起访问,不要反复刷新或复制认证回调地址。
飞牛 App 直接填写地址后无法登录
飞牛 App 不会代替浏览器完成 fn-knock 认证:
- 子域或内网穿透:先在手机浏览器打开同一外部域名并登录。
- 直连授权:先在浏览器打开实际网关端口,再回到 App 连接原始地址。
完整步骤见 使用飞牛 App。
更换网络后突然失去访问权限
移动网络、代理和家庭宽带可能改变出口 IP。重新打开认证入口登录,并在 系统设置 → 会话 查看 IP 漂移轨迹。
该轨迹记录会话从原 IP 迁移到新 IP 的过程,不是普通请求日志。
会话旁的飞牛图标表示什么
表示该登录会话附着了飞牛 token,常见于飞牛 App 或网页继续复用当前登录。踢出、退出或会话过期时,附着 token 也会失效。见 会话管理。
路由、安全或日志异常
登录成功后仍提示不在白名单
先确认该 Host 是否继承了历史 strict_whitelist 规则:
- 关闭
要求登录:当前登录优先映射会公开访问,不检查登录和白名单;历史严格白名单映射不适用。 - 开启
要求登录:手动来源授权可独立放行;自动 IP 授权通常允许同一来源继续访问,但不会覆盖已携带的服务范围拒绝;没有可用来源授权时再检查会话。 - 历史严格白名单规则:即使关闭
要求登录也不一定公开;只按有效来源授权记录判断(手动或登录后自动创建),浏览器会话 Cookie 本身不能替代来源条件。
当前 Host 编辑界面没有严格白名单选择。遇到历史规则时,应确认当前出口 IP 的手动或自动授权记录;若只允许手动来源,关闭登录后自动 IP 授权并检查遗留自动记录。需要退出该规则时,先记录完整映射配置,再按当前界面重新创建映射;单独关闭 要求登录 不足以公开。
飞牛分享链接被拦截
飞牛分享直通可用于子域路由和内网穿透,不适用于直连模式。确认请求命中了真正指向飞牛的 Host 映射或默认路由。见 飞牛分享直通。
请求日志在哪里开启
进入 系统设置 → 日志 开启。开启后侧边栏出现 请求日志,可按日期查看命中的 Host、上游和响应状态。见 请求日志。
通用黑名单和扫描器黑名单有什么区别
- 扫描器黑名单:根据未认证的异常路径探测自动封禁。
- 通用黑名单:管理员从日志或黑名单页面明确封禁 IP。
通用黑名单只接受精确 IPv4 或 IPv6,不接受 CIDR。网段或地区限制使用 网关可见性;单个异常 IP 使用 通用黑名单。
为什么应尽早配置 HTTPS
HTTPS 保护登录凭据和会话 Cookie,也是 Passkey 的正常使用条件。公网域名、FRP 和 Cloudflared 的公开入口都应使用受信任证书。见 SSL 证书。
安装、升级或数据异常
OpenWrt 如何安装和升级
OpenWrt 支持匹配架构的 .ipk 和 .apk 包。安装后入口为 服务 → 敲门 Knock。
升级时安装新版软件包;应用内 FPK 更新不适用于 OpenWrt。正常升级会保留 /etc/config/fn-knock 和 /var/lib/fn-knock。完整命令见 OpenWrt 部署。
Docker 升级后数据为空
先停止继续写入,确认旧数据卷仍在。当前版本使用 SQLite;只有从早期 Redis 版本升级时才执行 Redis 到 SQLite 的历史迁移。
不要删除旧卷、不要用空卷覆盖原挂载,也不要在新安装中额外添加 Redis。按 Docker 部署 的备份和迁移步骤恢复。
Windows 如何更新或清理数据
通过 fn-knock Windows 管理程序或系统托盘的“检查更新”安装 Windows 更新;网页 关于 / 更新 只显示版本和说明。升级前导出备份,安装器在启动失败时会恢复前一版程序和数据。
卸载 Windows 程序后,%ProgramData%\FnKnock 会保留以便恢复,其中含 SQLite、证书与配置。确认不再需要恢复后,才以管理员权限单独删除该目录。
更新后功能入口与旧文档不一致
先确认当前部署能力:
| 能力 | 飞牛 fnOS FPK | Docker | OpenWrt | Windows x86_64 | | --- | --- | --- | --- | | 主机防火墙与直连授权 | 支持 | 不支持 | 支持 | 不支持 | | 自动 HTTPS | 支持 | 不支持 | 不支持 | 需要实际入站链路;新安装网关默认回环 | | 智能连接 | 支持 | 不支持 | 当前软件包需自行配置分流 DNS | 不支持 | | 更新安装 | 支持 | 不支持 | 不支持 | Windows 管理程序处理 |
部署边界和推荐入口见选择部署与访问方案。
