选择运行方式
系统设置 → 模式 把网络拓扑和路由方式组合成几个选项。配置前分别确定三件事:流量如何到达设备、网关如何找到服务、服务允许谁访问。
Web 服务以 Host 路由为主线。路径模式保留给已有路径入口或无法迁移的应用,不建议用于新部署。
本页的公网直达和应用内隧道步骤只适用于网关有受支持外部监听方式的部署。Windows x86_64 新安装时 7999 只监听本机回环,管理程序也没有公开监听范围、FRP 或 Cloudflared 的内置设置;不要把本页当作 Windows 的公网部署教程。Windows 若由同机独立进程提供隧道或反向代理,只能将其作为回源 127.0.0.1:7999 的自管方案,详见 Windows x86_64 部署。
1. 选择网络拓扑
| 条件 | 后台选择 | 外部流量 |
|---|---|---|
| 设备有可达的公网 IPv4 / IPv6 | 子域模式 | 域名直接进入网关 |
| 设备没有公网入口 | 内网穿透 | FRP 或 Cloudflared 把请求送到网关 |
| 必须登录后继续访问原始端口 | 直连模式(不推荐) | 先进入网关登录,再由防火墙放行来源 IP |
是否有公网 IP 只决定入口拓扑,不决定 Web 服务必须使用路径。内网穿透 也可以选择子域映射。
2. 选择路由
Host 路由:Web 服务默认选择
在公网直连的 子域模式,或 内网穿透 → 子域映射 中,请求按 Host 分发:
auth.example.com -> 认证服务
nas.example.com -> http://127.0.0.1:5666
alist.example.com -> http://127.0.0.1:5244每个服务保留根路径,静态资源、WebSocket 和回调地址通常更容易正常工作。两个拓扑共用同一套 子域映射 配置,但能力不同:
- 公网直连子域模式可配合宿主机防火墙、智能连接和协议映射。
- 内网穿透子域映射可继续使用 FRP / Cloudflared,但不提供智能连接和协议映射。
配置步骤见 子域模式上手。
路径路由:兼容方案
内网穿透 → 路径模式 使用一个 Host 下的路径前缀分发服务:
https://example.com/alist -> http://127.0.0.1:5244
https://example.com/fnos -> http://127.0.0.1:5666部分应用需要剥离前缀、改写 HTML 或根目录兼容,仍可能因绝对路径、Service Worker 或回调 URL 失效。已有路径部署可以继续使用;新接入优先改用 Host 路由。配置步骤见 内网穿透上手。
TCP / UDP 与原始端口
协议映射为 SSH、数据库、DNS 等非 HTTP 服务额外监听 TCP / UDP 端口,只在公网直连子域模式中提供。见 协议映射。直连模式不转发服务;它在登录后把当前来源 IP 加入放行范围,再访问5666、22等原始端口。见 直连模式上手。
3. 选择访问策略
当前 Host 编辑页直接提供 要求登录 开关。关闭即公开,开启即登录优先:
| 配置 | 公网请求的结果 | 适用情况 |
|---|---|---|
关闭 要求登录(当前登录优先映射) | 直接代理到上游 | 明确准备公开的服务 |
开启 要求登录 | 没有有效的来源 IP 授权或会话时,跳到 auth.example.com;完成后返回原 Host | 大多数私有 Web 服务 |
后端仍能识别历史配置中的 strict_whitelist:这类规则即使关闭 要求登录 也不一定公开,仍按有效来源授权记录判断(手动或登录后自动创建),浏览器会话 Cookie 本身不能替代来源条件。当前界面没有新建或切换严格白名单规则的控件;需要退出它时,记录完整映射后按当前界面重新创建。新映射中,手动来源授权可独立放行;自动 IP 授权通常允许同一来源继续访问,但不会覆盖已携带的服务范围拒绝。IP 白名单 不是严格来源限制开关。需要在请求到达映射前收窄来源时,使用网关可见性或外部网络层规则。
登录凭据还可以限制允许访问的服务范围。即使浏览器已有会话,超出凭据范围的 Host 仍会被拒绝。
Basic Auth 跳过 不属于 fn-knock 的访问策略。它把一组用户名和密码注入到发往上游的请求,用于通过目标服务自己的 Basic Auth;它不是 fn-knock 为访客提供的登录方式。
本地来源例外
当网关识别到回环、私网或链路本地来源时,认证结果为 local_exempt,常规登录和严格白名单检查都会放行。该行为把局域网视为信任边界的一部分:
- 不要用局域网测试结果判断公网认证是否生效。
- 隧道或前置代理必须正确传递真实客户端 IP;否则所有访客可能表现为同一个代理来源,甚至被识别为本地来源。
- 应在移动网络下验证登录、白名单和退出后的实际结果。
推荐组合
| 场景 | 网络拓扑 | 路由 | 访问策略 |
|---|---|---|---|
| 有公网和域名的 Web 服务 | 子域模式 | Host | 开启 要求登录;如需收窄入口,另配网关可见性 |
| 无公网、使用 Cloudflared | 内网穿透 → 子域映射 | Host | 开启 要求登录 |
| 无公网、使用 FRP | 内网穿透 → 子域映射 | Host | 开启 要求登录;确认 PROXY Protocol 保留来源 IP |
| 迁移中的旧路径部署 | 内网穿透 → 路径模式 | 路径 | 按映射决定是否登录 |
| 必须访问大量原始端口 | 直连模式(不推荐) | 原始端口 | 登录后来源 IP 放行 |
切换时会保留或停止什么
- 从路径模式切到任一子域路由后,路径映射会隐藏;进入公网直连子域模式时,界面会提示是否清理路径规则。
内网穿透的子域映射与路径模式都可使用 FRP / Cloudflared;切离内网穿透时,系统会尝试停止正在运行的隧道。- 离开公网直连子域模式后,协议映射功能会关闭;关闭功能开关会清空现有协议映射。
- 直连模式依赖宿主机防火墙。Docker 和不具备宿主机管理能力的部署无法选择它。
- Docker 不会写宿主机防火墙,也不支持智能连接;OpenWrt 不提供 Web 终端和应用内 FPK 更新,局域网分流 DNS 需自行配置,不能把智能连接当作一键可用能力。
- Windows 不支持直连授权、应用内宿主机防火墙管理、智能连接、内置 FRP / Cloudflared、Web 终端或 SSH 安全;网页更新页也不能安装 Windows 更新。
切换后应从真实外部网络检查入口、Host、客户端 IP、授权类型和上游目标,而不只检查页面是否能打开。
