原始端口访问:直连授权
适用于设备有公网入站,并且需要直接访问 SSH、远程桌面或其他原始 TCP/UDP 端口的环境。访客先从 fn-knock 网关完成认证,fn-knock 再按出口 IP 临时开放受保护端口。
- 网络拓扑:公网直达
- 路由方式:原始 TCP/UDP 端口
- 访问方式:登录后获得 IP 授权
- 后台位置:
系统设置 → 模式 → 直连模式(不推荐)
直连模式依赖宿主机防火墙,当前主要用于飞牛 fnOS FPK 和 OpenWrt。Docker 和 Windows 部署不支持由 fn-knock 管理宿主机防火墙,不应使用本方案。
适用边界
选择直连授权前,确认:
- 后台中能看到
直连模式(不推荐),并且当前部署支持主机防火墙。 - 设备有可用的公网 IPv4、IPv6 或可控的端口转发。
- 目标是保护原始端口,而不是 HTTP/HTTPS 网站。
- 你能够从本地或控制台恢复防火墙,避免配置错误后失联。
直连模式不是内网穿透方案。没有公网入站时,应使用内网穿透:子域路由;网站服务优先使用公网直达:子域路由。
fn-knock 只控制网络入口。SSH、远程桌面和其他上游服务仍需及时更新、限制权限并启用自身认证。
请求过程
- 访客从公网打开 fn-knock 网关,默认端口
7999。 - 访客完成登录。
- 若会话设置和所用凭据允许,fn-knock 将访客当前出口 IP 写入临时授权;否则需要手动白名单。
- 访客使用同一出口 IP 连接原始业务端口。
- 会话或授权过期后,业务端口再次拒绝该 IP。
开始前
切换模式前完成以下准备:
- 记录管理入口、网关入口和需要保护的端口。
- 确认 TOTP、密码、Passkey 或 OIDC 至少有一种能够登录。
- 备份现有模式、路由和防火墙配置。
- 保留局域网访问或设备控制台作为恢复入口。
模式切换会调整防火墙规则。不要在唯一的远程管理连接中首次启用。
1. 启用直连模式
进入 系统设置 → 模式,选择 直连模式(不推荐) 并保存。
启用后应满足:
- fn-knock 网关端口可以从计划中的公网入口访问。
- SSH、远程桌面等受保护端口默认不对未授权 IP 开放。
- 局域网或明确保留的管理来源仍可恢复配置。
飞牛 fnOS FPK 和 OpenWrt 的防火墙实现不同。切换后立即从外网做一次未登录测试,确认业务端口确实被拒绝。
2. 配置认证入口
配置至少一种登录方式,并确保公网可以打开 fn-knock 网关。域名示例:
auth.example.com:7999- 公网
443转发到网关7999时,可使用https://auth.example.com
认证入口应使用 HTTPS,避免凭据和会话信息通过明文传输。证书配置见 SSL 证书。
3. 设置登录后的 IP 授权
进入 系统设置 → 会话,配置登录后的 IP 处理方式:
| 方式 | 适用场景 |
|---|---|
| 跟随会话 | 推荐用于直连模式;会话有效期间维持对应 IP 授权 |
| 不自动授权 IP | 只使用登录会话;原始端口仍需手动白名单才能访问 |
| 自定义 | 需要固定授权窗口时使用 |
直连模式保护的是网络端口。若关闭自动 IP 授权,浏览器登录成功并不表示 SSH 或远程桌面端口会自动开放。
服务范围受限的登录凭据不会创建自动 IP 授权。这包括受限的 TOTP、其关联 Passkey / OIDC,以及受限服务范围的账号密码账号;这是为了避免一个受限凭据通过来源 IP 扩大访问范围。直连授权应使用未限制服务范围的凭据,或手动添加当前公网 IP / CIDR;随后从外网重新验证端口。
4. 配置域名、DDNS 和证书
动态公网地址可以使用 DDNS 更新 auth.example.com。只发布实际可从公网到达的地址记录。
为认证域名配置受信任证书。自动 HTTPS 仅适用于支持该能力的部署;Docker 和 OpenWrt 需要自行提供证书或使用前置 TLS 入口。
5. 从外网验证
使用手机蜂窝网络或另一条外网连接测试:
- 未登录时连接受保护端口,应被拒绝或超时。
- 打开认证入口并完成登录。
- 使用同一网络再次连接受保护端口,应能进入服务自身的认证流程。
- 在
系统设置 → 会话或 IP 授权列表中确认当前出口 IP 和有效期。 - 注销或等待授权过期,再次确认端口被关闭。
测试 SSH 时不要复用已经建立的连接,应新建连接验证规则是否生效。
出口 IP 变化
移动网络、公司代理和部分家庭宽带可能频繁改变出口 IP。出口 IP 变化后,原授权不会自动适用于新地址,需要重新打开认证入口登录。
严格限制来源时,可手动添加稳定的 IP 或 CIDR。不要为移动网络填写过大的网段,否则会扩大暴露范围。
部署限制
| 部署方式 | 直连授权 | 说明 |
|---|---|---|
| 飞牛 fnOS FPK | 支持 | 可管理主机防火墙 |
| OpenWrt 插件 | 支持 | 规则作用于路由器防火墙 |
| Docker Compose / Docker FPK | 不支持 | 容器不能代替宿主机防火墙管理 |
| Windows x86_64 | 不支持 | 安装器的程序级规则不等同于直连授权;管理后台不提供该模式 |
常见故障
| 症状 | 优先检查 |
|---|---|
| 登录成功但原始端口仍不可达 | 登录后的 IP 授权方式、当前出口 IP、端口转发 |
| 未登录也能访问业务端口 | 路由器或宿主机仍有绕过 fn-knock 的放行规则 |
| 启用后远程管理失联 | 使用本地或控制台恢复防火墙和运行模式 |
| IPv4 可用、IPv6 仍暴露 | IPv6 防火墙未同步限制,或 AAAA 指向了其他入口 |
| 授权很快失效 | 会话有效期过短,或出口 IP 已变化 |
| 登录成功但没有自动 IP 授权 | 登录凭据限制了服务范围;改用未限制范围的凭据或手动添加 IP / CIDR |
| Docker 中找不到该模式 | 属于部署限制,应改用子域路由 |
完整排查入口见 FAQ。
