Skip to content

无公网 IP:通过隧道发布子域

没有公网 IP 时,仍可使用子域映射。关键是让 FRP 或 Cloudflared 把外部请求带到 fn-knock 的网关入口,再由网关按 Host 路由到内网服务。

路径映射仍可用于旧配置,但新部署优先选择“内网穿透 / 子域映射”。

前置条件

  • 已部署 fn-knock,网关端口在本机可用;
  • 已准备 FRP 服务端或 Cloudflare Zero Trust 账号;
  • 有可管理的域名,或 Tunnel 提供的公网 Host;
  • 已准备登录凭据与真实外网验证条件。

配置步骤

  1. 系统设置 → 模式 选择 内网穿透,并选择 子域映射
  2. 子域映射 设置根域、认证 Host 和第一个业务 Host。业务 Host 的目标填写内网服务地址,默认开启“要求登录”。
  3. 内网穿透 配置 FRP 或 Cloudflared,使外部流量转发到 fn-knock 的网关端口。
  4. 在隧道提供商侧为认证 Host 和业务 Host 配置 DNS / Public Hostname,并保持 Host、WebSocket 和真实客户端 IP 传递正确。
  5. 配置对外 HTTPS。由 Tunnel 或前置反代终止 TLS 时,明确回源协议与证书校验方式;不要把内部 localhost 地址当成浏览器访问地址。
  6. 从移动网络打开认证 Host,完成登录后再访问业务 Host。

为什么不用 DDNS

隧道场景中,公开域名通常解析到 FRP 服务器或 Cloudflare 的边缘网络,而不是家庭宽带地址。此时为同一个 Host 再设置家庭地址 DDNS 会造成解析冲突。只有 DNS 最终需要指向会变化的自有公网入口时,才配置 DDNS。

验证链路

依次检查:

  1. 隧道状态和日志;
  2. 公网 DNS 是否指向正确入口;
  3. 认证 Host 是否可打开并完成登录;
  4. 请求日志是否显示正确 Host 和真实客户端 IP;
  5. 业务 Host 是否匹配正确上游。

如果 DNS 能解析但请求日志没有记录,问题在隧道或前置平台;如果日志记录了请求但转发失败,再检查映射和上游服务。

QQ群:1081609274