跳到正文

常见问题

按症状定位问题。先确认当前部署方式、运行模式,以及访问的是管理入口还是网关入口。

管理入口打不开或无法登录

桌面图标和网关入口应该打开哪一个

目的入口
修改配置、查看日志、切换模式飞牛桌面的 敲门 knock;群晖从 DSM 主菜单打开 敲门 knock;OpenWrt 使用 服务 → 敲门 Knock;macOS 在本机打开 127.0.0.1:7991;Windows 使用管理程序打开本机管理页
验证公网、域名、隧道或业务映射实际网关端口或对应外部域名;默认通常为 7999

OpenWrt 默认管理端口是 7991,网关仍是 7999。macOS 与 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 部署

macOS 管理页打不开

在安装 fn-knock 的 Mac 本机打开 http://127.0.0.1:7991/,并执行 sudo knock status。若服务未就绪,使用 sudo knock logs 检查 LaunchDaemon 和五个运行端口;不要把 7991 改为公网监听。需要从另一台电脑管理时,使用 SSH 本地转发。完整步骤见 macOS 部署

群晖提示无法读取 DSM 会话

关闭当前 fn-knock 页面,确认 DSM 登录仍有效,再从 DSM 主菜单重新打开 敲门 knock。群晖管理入口需要从 DSM 桌面窗口读取会话;直接收藏或打开 launch.htmlindex.cgi,以及在新标签页复制内部地址,都可能缺少所需的 DSM 上下文。

只有 administrators 组成员能进入管理界面。仍然失败时,先在套件中心确认 fn-knock 已启动,再重新登录 DSM。不要改为公开 7998;完整入口与端口说明见群晖 DSM 7 部署

后台提示存储错误

当前版本使用 SQLite,新安装不需要 Redis。

  • 新安装:检查数据目录权限、端口冲突和服务日志。
  • 从早期 Redis 版本升级:保留旧 Redis 数据卷,按 Docker 部署 的迁移步骤处理。
  • OpenWrt:确认 /etc/fn-knock/gateway/etc/fn-knock/data 仍然存在;从旧版本升级时再检查 UCI 数据目录是否已由 /var/lib/fn-knock 迁移。

不要为新安装额外创建空 Redis。旧数据迁移完成并确认后台正常后,再移除旧 Redis 服务和数据卷。

忘记管理密码

管理密码与访客认证凭据不是同一项。按部署方式进入本机控制台或容器执行重置,不要删除数据目录:

  • Docker:见 Docker 部署 的管理密码恢复说明。
  • OpenWrt:见 OpenWrt 部署
  • 飞牛 fnOS FPK:优先从飞牛桌面重新进入 敲门 knock
  • macOS:执行 sudo knock reset-panel-password
  • Windows:优先在 fn-knock Windows 管理程序中点击“清除管理密码”。管理程序无法打开时,在应用安装目录中以管理员 PowerShell 运行 .\fn-knock-service.exe reset-panel-password

管理正常,但外网访问失败

后台能打开,外部域名仍超时

后台正常只说明管理服务在运行。按顺序检查:

  1. 当前网络拓扑是否选对:公网直达或内网穿透。
  2. 外部流量是否到达实际网关端口,而不是管理端口;默认通常为 7999
  3. DNS 是否指向当前公网或隧道入口。
  4. 公网直达时,路由器端口转发和主机防火墙是否放行。
  5. 内网穿透时,隧道是否在线并指向正确的本地网关。
  6. 请求日志 中是否能看到该请求。

无法配置公网入站时,使用内网穿透:子域路由

Windows 的 7999 从局域网或公网访问不到

当前 Windows 版的 7999 默认监听全部 IPv4 / IPv6 接口;访问不到通常是入站链路尚未打通,而不是网关只监听回环。安装器创建的 FnKnock Gateway 入站程序规则只覆盖 Windows 的“域”和“专用”网络配置文件,不覆盖“公用”网络。

按链路检查:Windows 当前网络配置文件和第三方安全软件、路由器或 NAT 转发、IPv6 防火墙,以及运营商是否允许入站。管理后台 7991 仍严格限制在本机,不能作为公网回源。Windows 不支持按登录状态动态管理防火墙或直连授权。

若在同一台 Windows 主机上自行运行隧道或反向代理,建议它回源到 127.0.0.1:7999,但该进程不由 fn-knock 管理,且必须保留 Host 与真实客户端 IP。

飞牛原生 FPK 的 7999 被跳到其他端口

飞牛系统的 强制 HTTPS 连接 可能在请求到达 fn-knock 前执行重定向。

进入 飞牛系统设置 → 安全性 → 端口设置 → 设置,关闭 强制 HTTPS 连接,再测试 7999

飞牛端口设置页面

自动 HTTPS 启动失败

自动 HTTPS 只在当前部署显示该功能、且主机实际具备入站链路和 80 端口时才可用。Docker、OpenWrt 和群晖 DSM 7 SPK 不提供该开关。检查:

  • 80 是否被其他服务占用。
  • 当前权限是否允许监听低端口。
  • 飞牛系统端口重定向或其他前置入口是否冲突。
  • SSL 证书是否已经配置。

自动 HTTPS 不会代替证书申请。Windows 的 7999 虽默认监听全部接口,开启该功能也不会自动打通防火墙、路由器/NAT 或运营商入站限制。Docker、OpenWrt 和群晖应在前置代理、边缘平台或网关外部终止 TLS。见 SSL 证书

未登录也能直接访问业务端口

存在绕过 fn-knock 的入口。检查路由器端口转发、宿主机防火墙、IPv6 防火墙和前置代理,关闭直接指向业务服务的公网规则。

直连授权应只公开认证网关,登录后再临时放行当前出口 IP。Docker、macOS 和 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 隧道

子域打开了错误的服务

检查:

  1. 前置代理或隧道是否保留原始 Host。
  2. 根域名与子域映射是否匹配。
  3. 是否有重复或兜底映射抢先命中。
  4. 公网回源是否指向实际网关端口。

管理入口不能作为业务回源。

路径映射出现资源 404 或登录循环

上游应用没有正确处理路径前缀、重定向、Cookie 或 WebSocket。新配置应迁移到独立子域;只有上游明确支持前缀部署时才继续使用路径模式。

一键发现扫描不到服务

先确认目标是 fn-knock 运行环境可以访问的本地 IPv4 HTTP 服务。服务发现不扫描公网、IPv6、域名或非 HTTP 协议;Docker 中的 127.0.0.1 只指容器自身。

把扫描 CIDR 收窄到目标实际网段,确认没有超过 16 个 CIDR、合计 1024 台主机,再从 fn-knock 所在环境直接访问目标端口。TCP 端口开放但不能通过 HTTP 分析时,也不会生成候选。完整范围和强度设置见服务发现与批量接入

EdgeOne 或 ESA 出现登录循环、页面异常

检查:

  • 回源是否指向 fn-knock 的实际网关端口。
  • 子域映射是否启用了对应平台支持。
  • 缓存是否关闭,WebSocket 是否开启。
  • 真实客户端 IP 请求头是否正确传递。
  • 双栈回源是否把请求分到不同入口。

专题配置见 腾讯云 EdgeOne阿里云 ESA

回到家庭 Wi-Fi 后仍走公网

客户端仍在使用公网 DNS 结果。飞牛标准 FPK 使用智能连接时,检查:

  • 系统设置 → 功能 → 智能连接 是否启用。
  • 本机局域网 IP 是否正确。
  • 路由器 DHCP DNS 或客户端 DNS 是否指向 fn-knock 所在设备。
  • 客户端 DNS 缓存是否刷新。

智能连接只用于飞牛标准 FPK 子域模式的局域网 DNS 优化,不会修改公网 DNS。OpenWrt、Docker 和其他部署不提供该能力;需要分流时应在路由器或独立 DNS 中自行配置。见 智能连接

登录或会话异常

TOTP、密码、Passkey 和 QQ 怎么选

  • TOTP:默认登录方式,也是绑定 Passkey、QQ 和其他外部账号的基础;必须保留可用恢复方式。
  • 账号密码:适合不方便使用身份验证器的成员。
  • Passkey:在已有 TOTP 身份上提供便捷登录。
  • QQ:把一个 QQ 账号绑定到已有 TOTP 后提供快捷登录,继承该 TOTP 的服务范围,不是独立用户。

切换到账号密码登录模式后,登录页不会显示 Passkey、QQ 或其他外部账号入口。见 认证与登录绑定 QQ 快捷登录

登录页的人机验证在哪里配置

进入 系统设置 → Challenge。PoW 与 Turnstile 的区别见 Challenge;Cloudflare 配置见 Turnstile

“记住我”如何影响会话

会话时长在 系统设置 → 会话 中配置。启用“记住我”会使用长期会话时长;若 IP 授权设置为跟随会话,对应授权也会延长。

只在个人可信设备上使用长期会话。

删除 TOTP 后其他登录方式失效

删除某个 TOTP 会同时使关联的 Passkey、QQ 和其他外部账号绑定失效。删除前应确认还有其他可用身份;删除后需要重新绑定关联登录方式。

登录成功后仍回到登录页

按顺序检查:

  1. 认证域名和业务域名是否使用相同的公开协议。
  2. 根域名、Cookie 作用域和 Passkey RP ID 是否匹配。
  3. 浏览器是否阻止 Cookie。
  4. 边缘平台是否缓存了登录响应。
  5. 前置代理是否传递了正确的 HostX-Forwarded-HostX-Forwarded-Proto
  6. 系统时间是否准确。

系统遇到同一认证页或同一目标持续循环时会暂停自动回跳。此时从原始业务 Host 重新发起访问,不要反复刷新或复制认证回调地址。

飞牛 App 直接填写地址后无法登录

飞牛 App 是否能处理网页认证跳转并复用 Cookie,取决于客户端版本。浏览器会话不一定自动共享给原生 App:

  • 子域或内网穿透:先在手机浏览器打开同一外部域名并登录。
  • 直连授权:先在浏览器打开实际网关端口,再回到 App 连接原始地址。

完整步骤见 使用飞牛 App

更换网络后突然失去访问权限

移动网络、代理和家庭宽带可能改变出口 IP。重新打开认证入口登录,并在 系统设置 → 会话 查看 IP 漂移轨迹

该轨迹记录会话从原 IP 迁移到新 IP 的过程,不是普通请求日志。

会话旁的飞牛图标表示什么

表示该登录会话附着了飞牛 token,常见于飞牛 App 或网页继续复用当前登录。踢出、退出或会话过期时,附着 token 也会失效。见 会话管理

路由、安全或日志异常

登录成功后仍提示不在白名单

先确认该 Host 是否继承了历史 strict_whitelist 规则:

  • 关闭 要求登录:当前登录优先映射会公开访问,不检查登录和白名单;历史严格白名单映射不适用。
  • 开启 要求登录:手动来源授权可独立放行;自动 IP 授权通常允许同一来源继续访问,但不会覆盖已携带的服务范围拒绝;没有可用来源授权时再检查会话。
  • 历史严格白名单规则:即使关闭 要求登录 也不一定公开;只按有效来源授权记录判断(手动或登录后自动创建),浏览器会话 Cookie 本身不能替代来源条件。

当前 Host 编辑界面没有严格白名单选择。遇到历史规则时,应确认当前出口 IP 的手动或自动授权记录;若只允许手动来源,关闭登录后自动 IP 授权并检查遗留自动记录。需要退出该规则时,先记录完整映射配置,再按当前界面重新创建映射;单独关闭 要求登录 不足以公开。

飞牛分享链接被拦截

飞牛分享直通可用于子域路由和内网穿透,不适用于直连模式。确认 /s/... 请求的实际路由结果指向飞牛;如果它被另一条路径规则或错误的默认路由接管,直通不会生效。见 飞牛分享直通

请求日志在哪里开启

进入 系统设置 → 日志 开启。开启后侧边栏出现 请求日志,可按日期查看命中的 Host、上游和响应状态。见 请求日志

CPU 或内存很高,但事件中心没有告警

当前默认需要使用率持续达到 80%30 秒才产生告警,短暂尖峰不会立即形成事件;恢复也要持续回落到 60%。Windows 不提供系统资源监控,Docker 中的数值按容器运行环境可见的资源边界解释。

先确认平台能力、事件系统和资源事件正常,再区分“资源事件产生条件”和“通知规则触发条件”。后者只决定已有事件何时发送,不改变采样阈值。见事件中心与通知

通用黑名单和扫描器黑名单有什么区别

  • 扫描器黑名单:根据未认证的异常路径探测自动封禁。
  • 通用黑名单:管理员从日志或黑名单页面明确封禁 IP。

通用黑名单只接受精确 IPv4 或 IPv6,不接受 CIDR。网段或地区限制使用 网关可见性;单个异常 IP 使用 通用黑名单

为什么应尽早配置 HTTPS

HTTPS 保护登录凭据和会话 Cookie,也是 Passkey 的正常使用条件。公网域名、FRP 和 Cloudflared 的公开入口都应使用受信任证书。见 SSL 证书

安装、升级或数据异常

OpenWrt 如何安装和升级

OpenWrt 支持匹配架构的 .ipk.apk 包。安装后入口为 服务 → 敲门 Knock

升级时安装新版软件包;应用内 FPK 更新不适用于 OpenWrt。正常升级会保留 /etc/config/fn-knock/etc/fn-knock/gateway/etc/fn-knock/data;旧版默认 /var/lib/fn-knock 会在升级时迁移到新的持久化数据目录。完整命令见 OpenWrt 部署

Docker 升级后数据为空

先停止继续写入,确认旧数据卷仍在。当前版本使用 SQLite;只有从早期 Redis 版本升级时才执行 Redis 到 SQLite 的历史迁移。

不要删除旧卷、不要用空卷覆盖原挂载,也不要在新安装中额外添加 Redis。按 Docker 部署 的备份和迁移步骤恢复。

.knock 备份无法导入或导入后有警告

确认文件保持原始 .knock 扩展名、大小不超过 128 MiB,并且导出版本不高于当前实例。目标版本还必须落在错误提示显示的支持区间内;不要通过修改归档 JSON 伪造版本。

导入成功后的警告表示配置条目已经恢复,但网关、WAF、SSL 等某个运行态同步步骤失败,不代表整个导入已自动回滚。保留管理入口,按警告逐项检查并手动重新保存对应配置,不要先反复导入同一文件。见备份、恢复与数据清理

Windows 如何更新或清理数据

通过 fn-knock Windows 管理程序或系统托盘的“检查更新”安装 Windows 更新;网页 关于 / 更新 只显示版本和说明。升级前导出备份,安装器在启动失败时会恢复前一版程序和数据。

卸载 Windows 程序后,%ProgramData%\FnKnock 会保留以便恢复,其中含 SQLite、证书与配置。确认不再需要恢复后,才以管理员权限单独删除该目录。

macOS 如何更新、回滚或卸载

使用 sudo knock update 安装当前架构的新版本,使用 sudo knock rollback 切回保留的上一版本。sudo knock uninstall 会移除程序和 LaunchDaemon,但保留配置、数据与日志;只有 sudo knock uninstall --purge 并交互输入 DELETE 才会彻底清除。完整说明见 macOS 部署

更新后功能入口与旧文档不一致

先确认当前部署能力:

能力飞牛 fnOS FPKDockerOpenWrtLinux 服务macOS群晖 DSM 7 SPKWindows x86_64
主机防火墙与直连授权支持不支持不支持不支持不支持;不调用 iptables不支持不支持
自动 HTTPS支持不支持不支持支持;需 80 端口与入站链路支持;需手动打通防火墙与入站链路不支持支持;仍需打通防火墙、NAT 与入站链路
ACME DNS-01支持支持支持支持支持支持支持;内置客户端,固定 Let's Encrypt
智能连接支持不支持不支持不支持不支持不支持不支持
SSH 安全支持不支持不支持不支持不支持不支持不支持
Web 终端远程 SSH + 可选本机 PTY(默认关闭)仅远程 SSH远程 SSH + 可选本机 PTY(默认关闭)远程 SSH + 可选本机 PTY(默认关闭)远程 SSH + 可选本机 PTY(默认关闭)仅远程 SSH仅远程 SSH
内置 FRP / Cloudflared支持支持支持支持支持支持不支持
更新安装网页内更新拉取新镜像安装 IPK / APKsudo knock updatesudo knock updateDSM 套件中心 / SPKWindows 管理程序处理

部署边界和推荐入口见选择部署与访问方案

QQ群:1081609274