无公网 IP:通过隧道发布子域
没有公网 IP 时,仍可使用子域映射。关键是让 FRP 或 Cloudflared 把外部请求带到 fn-knock 的网关入口,再由网关按 Host 路由到内网服务。
路径映射仍可用于旧配置,但新部署优先选择“内网穿透 / 子域映射”。
前置条件
- 已部署 fn-knock,网关端口在本机可用;
- 已准备 FRP 服务端或 Cloudflare Zero Trust 账号;
- 有可管理的域名,或 Tunnel 提供的公网 Host;
- 已准备登录凭据与真实外网验证条件。
配置步骤
- 在
系统设置 → 模式选择内网穿透,并选择子域映射。 - 在
子域映射设置根域、认证 Host 和第一个业务 Host。业务 Host 的目标填写内网服务地址,默认开启“要求登录”。 - 在
内网穿透配置 FRP 或 Cloudflared,使外部流量转发到 fn-knock 的网关端口。 - 在隧道提供商侧为认证 Host 和业务 Host 配置 DNS / Public Hostname,并保持 Host、WebSocket 和真实客户端 IP 传递正确。
- 配置对外 HTTPS。由 Tunnel 或前置反代终止 TLS 时,明确回源协议与证书校验方式;不要把内部
localhost地址当成浏览器访问地址。 - 从移动网络打开认证 Host,完成登录后再访问业务 Host。
为什么不用 DDNS
隧道场景中,公开域名通常解析到 FRP 服务器或 Cloudflare 的边缘网络,而不是家庭宽带地址。此时为同一个 Host 再设置家庭地址 DDNS 会造成解析冲突。只有 DNS 最终需要指向会变化的自有公网入口时,才配置 DDNS。
验证链路
依次检查:
- 隧道状态和日志;
- 公网 DNS 是否指向正确入口;
- 认证 Host 是否可打开并完成登录;
- 请求日志是否显示正确 Host 和真实客户端 IP;
- 业务 Host 是否匹配正确上游。
如果 DNS 能解析但请求日志没有记录,问题在隧道或前置平台;如果日志记录了请求但转发失败,再检查映射和上游服务。
