跳到正文

端口与入口

fn-knock 有两个面向用户的入口:管理入口用于修改配置,网关入口承接业务访问。飞牛原生 FPK 从桌面图标进入管理页;Docker、OpenWrt 和 Linux 的管理面板默认使用 7991。群晖 DSM 7 SPK 只能从 DSM 桌面的套件入口进入;macOS 和 Windows 的管理页固定为本机 127.0.0.1:7991,不能当作局域网或公网管理入口。网关通常使用 7999

799879977996 是组件之间的内部端口,不应直接暴露到公网。

默认端口

端口角色默认用途
7991管理面板Docker、OpenWrt 和 Linux 的默认管理入口;macOS 与 Windows 仅限本机回环访问
7998管理后端飞牛原生 FPK 的桌面 CGI 代理到这里;Docker 也在内部使用它
7997认证服务处理登录、退出、Passkey 和人机验证
7996网关管理端口管理后端与 Go 网关之间的内部通信
7999网关入口接收 Web 业务流量并执行认证与路由

端口可以在安装时修改。排错时以实际部署配置和后台显示的访问入口为准,不要假定所有安装都使用默认值。

完整的标准 FPK 中,桌面管理页及 Web 终端请求由 index.cgi 转发到 127.0.0.1 上的 Rust 管理入口(默认使用 7998)。这条链路不经过 fnOS 统一网关,也不经过 Go 网关、gRPC 或 WebSocket;终端交互复用管理入口的 HTTP 长轮询。

不同部署的对外端口

部署方式管理入口网关入口说明
飞牛原生 FPK飞牛桌面图标7999桌面 CGI 代理到本机 7998,不要把 7991 当作 FPK 管理入口
Docker Compose79917999默认只发布这两个端口
OpenWrt79917999内部管理后端默认改用 17998
Linux(systemd / OpenRC)79917999安装和 sudo knock config 可修改端口;799879977996 仅本机监听
macOS 13+本机 127.0.0.1:79917999Intel / Apple Silicon 原生包;内部端口仅本机监听,不修改 macOS 防火墙
群晖 DSM 7 SPKDSM 桌面套件入口7999不开放 7991;DSM CGI 代理内部管理服务,799879977996 仅本机监听
Windows x86_64管理程序打开 127.0.0.1:79917999,默认监听 0.0.0.0::管理后台强制本机访问;安装器仅添加“域/专用”网络配置文件的静态程序规则

Docker 的容器端口与宿主机发布端口由部署文件共同决定。完整配置见 Docker 部署

请求进入网关后会发生什么

网关入口只解决“流量从哪里进入”。进入后还要依次确定路由和访问策略:

  1. 网络拓扑:公网或局域网直达网关,或者由 FRP、Cloudflared 等隧道转入网关。
  2. 路由:Web 服务优先按请求 Host 分发,例如 nas.example.com;路径映射只用于兼容依赖 /alist 这类旧入口的服务。
  3. 访问策略:当前 Host 编辑页通过 要求登录 在公开访问和登录优先之间切换;已有严格白名单规则仍按来源 IP 执行。

TCP / UDP 协议映射会额外监听各自的对外端口,不经过 7999 的 HTTP Host 路由。直连模式则把网关作为登录入口,登录后再按来源 IP 放行原始端口。

local_exempt:局域网测试不代表公网已受保护

认证服务把网关识别到的回环、私网、链路本地等来源归为 local_exempt。这类请求会被视为本地网络访问,跳过常规登录和白名单检查;严格白名单也不会把它当作公网来源拦截。

因此:

  • 在同一局域网打开服务,不能验证公网登录策略是否生效。
  • 经反向代理或隧道接入时,应在请求日志中确认网关识别到的是真实公网客户端 IP,而不是代理节点的私网 IP。
  • 公网验证应使用移动网络等真实外部链路。

local_exempt 是来源网络例外,不是浏览器登录会话。退出登录不会改变该网络的本地例外属性。

平台能力边界

  • Docker 可以运行 Host / 路径网关,但不会替宿主机写防火墙规则,也不支持直连模式和智能连接。
  • 飞牛原生 FPK 可以管理宿主机防火墙,并提供直连模式和智能连接。
  • OpenWrt 可运行 Host / 路径网关、协议映射和内置隧道,但 fn-knock 不管理 OpenWrt 防火墙,也不提供直连模式或智能连接;端口放行与局域网 DNS 分流应在 OpenWrt 中自行配置。它同样不提供 SSH 安全或应用内 FPK 更新。
  • 群晖 DSM 7 SPK 的 7999 作为公开网关端口注册到 DSM 防火墙界面,但套件不能自行修改宿主机防火墙;它不支持直连模式、智能连接或 SSH 安全。
  • macOS 的管理面板强制本机访问,7999 可作为业务入口;它不调用 iptables、不管理 macOS 防火墙,也不支持直连、智能连接或 SSH 安全。协议映射所需端口必须由管理员手动放行。
  • Windows 的 7999 默认监听全部接口;安装器的 FnKnock Gateway 静态程序规则仅作用于“域/专用”网络配置文件。它仍不支持直连模式、应用内宿主机防火墙管理、智能连接、内置隧道或 SSH 安全。公网访问前必须检查路由器/NAT、IPv6、运营商和第三方安全软件。

远程 SSH Web 终端在各发行平台都可使用。完整的标准 FPK、Linux、macOS 与 OpenWrt 还支持默认关闭的本机 PTY;Lite、Docker、群晖、Windows 与开发环境仅提供远程 SSH。本机 PTY 不新增对外端口,也不通过 localhost SSH,而是由 Rust 管理服务以 fn-knock 服务的有效 UID / GID 直接启动;启用前应核对执行身份、Shell 与初始目录并完成风险确认。会话生命周期和权限边界见 Web 终端

对 Host 或路径路由,fn-knock 只能保护真正经过网关的请求。若上游服务仍监听公网或局域网可达地址,用户仍可能绕过网关直连它。直连授权是例外:它依赖支持的宿主机防火墙,仅在登录后的来源 IP 获授权时临时放行原始端口;不要另行添加宽泛的公网放行规则。

按链路排错

飞牛原生 FPK 管理页打不开时,先检查桌面图标、应用进程和 7998 后端;Docker 或 OpenWrt 再检查 7991、绑定地址和端口发布;macOS 使用 sudo knock statussudo knock logs,并确认从本机访问 127.0.0.1。业务域名打不开时,按以下顺序检查:

  1. 外部流量是否到达实际网关端口(通常为 7999)。
  2. 请求 Host 或兼容路径是否命中映射。
  3. 映射目标能否从 fn-knock 所在环境访问。
  4. 请求日志中的客户端 IP、授权类型和上游目标是否符合预期。

路径兼容规则见 路径映射,整体选择见 运行方式

QQ群:1081609274