通过 fn-knock 使用飞牛 App
飞牛 App 最终连接的地址必须与 fn-knock 的发布方案一致。App 是否能直接处理网页认证跳转、Cookie 和 Passkey,取决于客户端版本及其网络实现;手机浏览器中的会话不一定会自动共享给原生 App。配置后应以 App 的实际登录、文件和媒体操作验证,不能只以浏览器能打开为准。
有两种链路:
| 方案 | App 填写地址 | fn-knock 的作用 |
|---|---|---|
| 子域网关或隧道子域 | 飞牛业务 Host,例如 https://nas.example.com | 每个 App 请求经过 Host 路由和访问策略 |
| 直连授权 | 飞牛原始公网地址与端口 | 浏览器先登录,fn-knock 按来源 IP 临时开放原始端口 |
子域网关或隧道子域映射
为飞牛创建一个业务 Host,例如 nas.example.com,Target 指向飞牛服务的内网地址;认证 Host 和飞牛 Host 都进入同一网关。
- 在手机浏览器打开飞牛 Host,确认未登录时会进入认证 Host,并完成登录。
- 在 App 中填写
https://nas.example.com,或包含实际对外端口的完整地址。 - 在 App 中完成其自身的飞牛账号登录,并测试目录、上传、下载、媒体与长连接。
- 在 fn-knock 请求日志中确认 App 请求的 Host、客户端 IP、认证结果和上游 Target。
若 App 没有复用浏览器 Cookie,开启“要求登录”的 Host 可能反复返回网页认证跳转。不要因此把业务 Host 直接改成公开。可先确认 App 是否支持系统浏览器认证或 Cookie 持久化;无法兼容时,使用受控的直连授权方案,或仅在网络层对 VPN / 固定可信来源开放。
不要在子域方案中给 App 填写未经过网关的 5666 等原始公网端口,否则认证、会话和来源 IP 判断会被绕过。
直连模式
直连模式使用网关入口完成认证,再允许当前公网 IP 访问原始端口。它只适用于飞牛标准 FPK;敲门 knock Lite、Docker、OpenWrt、通用 Linux、群晖 DSM 7 SPK 和 Windows 不提供该动态端口授权。
- 在
系统设置 → 模式选择直连模式(不推荐),保留本地恢复入口。 - 在
系统设置 → 会话将登录后的 IP 授权设为跟随会话或所需时长。 - 在手机浏览器访问网关入口完成登录。
- 确认当前移动网络出口 IP 已出现在 IP 授权列表。
- 在 App 中填写飞牛服务的原始公网地址和端口,并测试实际功能。
网络切换导致公网 IP 变化后,App 的原始端口连接无法自行刷新授权。重新在浏览器访问网关入口,再回到 App 测试。
服务范围受限的登录凭据不会生成自动 IP 授权。需要直连时使用未限制范围的凭据,或由管理员手动添加当前来源;不要为移动网络填写过大的 CIDR。
排查
| 现象 | 检查项 |
|---|---|
| App 无法连接 | App 地址是否对应实际发布 Host、DNS / 证书、隧道或公网入口 |
| 浏览器能打开、App 不能 | App 是否共享浏览器 Cookie、是否能处理认证跳转、HTTPS 证书支持和地址格式 |
| App 反复要求登录 | 查看请求日志中的认证状态;确认 App 是否保留 Cookie,不要缓存认证响应 |
| 换网络后失效 | 查看会话、客户端 IP 和直连模式的白名单;必要时重新登录 |
| 页面异常或反复登录 | Cookie 域、认证 Host、真实客户端 IP 和上游代理缓存 |
| 直连登录后端口仍不通 | IP 授权策略、凭据服务范围、当前出口 IP、飞牛服务监听和防火墙同步 |
从移动网络测试时关闭 Wi-Fi,并在切换网络后新建 App 连接。测试完成后检查是否仍有不再需要的自动或手动 IP 授权。
