智能连接
这页解决什么问题
智能连接 解决的是这样一个很常见的体验问题:
- 你在外网时,通过
alist.example.com:7999、fnos.example.com:7999这类子域访问服务 - 回到家里同一个局域网后,却还在继续绕公网入口
- 结果变成:
- 访问链路更长
- 速度不一定最好
- 某些设备还可能受公网 DNS 缓存或 NAT 环回影响
它的目标就是:
当你的设备回到局域网后,让这些子域优先解析回 fknock 所在机器的局域网 IP。
先明确:它只适用于子域模式
智能连接 只在:
子域模式
下可用。
原因很直接:
- 它依赖的是“同一父域下多个子域”这套访问模型
- 后台会把当前所有 Host 映射对应的域名,同步成局域网 DNS 规则
所以它不适用于:
直连模式反代模式
如果你当前不是子域模式,页面会直接提示:
- 仅子域模式可用
建议先配合阅读:
它到底做了什么
可以把它理解成:
- fknock 继续负责外网统一入口
- 但在局域网里,再额外提供一层“本地 DNS 纠偏”
- 让你常用的子域,在局域网里直接解析到选定的本机私网 IPv4
例如你原来在公网下访问的是:
auth.example.com:7999alist.example.com:7999fnos.example.com:7999
开启后,在局域网里它们可以被解析到类似:
192.168.31.20
这类本机地址。
需要特别注意:
- 它不会改你的公网 DNS 记录
- 也不会替你更新 DDNS
- 它只是让“局域网里的设备”优先用本地 DNS 结果访问这些子域
这套本地 DNS 规则会由:
dnsmasq
来承载。
会同步哪些子域
这一点很关键。
智能连接 不需要你手动一条条维护域名列表。
它会自动同步:
- 当前
子域映射里的鉴权子域 - 当前
子域映射里的业务子域
也就是说,只要这些 Host 映射已经存在,例如:
auth.example.comalist.example.comjellyfin.example.com
保存后它们就会一起进入同步列表。
另外还有两个边界:
- 如果你后来增删了 Host 映射,后台会继续自动重新同步
- 如果当前还没有任何可同步的子域映射,这个功能也无法真正保存生效
使用前你需要准备什么
正式开启前,建议先确认下面几件事:
1. 已经切到子域模式
并且至少已经完成:
- 根域名配置
- 鉴权服务配置
- 至少一条业务 Host 映射
2. 机器上有可用的私网 IPv4
页面里只会列出适合作为局域网入口的:
- 私网 IPv4
例如常见的:
192.168.x.x10.x.x.x172.16.x.x - 172.31.x.x
如果页面里没有可选项,通常说明:
- 当前网卡没有合适的私网地址
- 或者你看到的只是 Docker / Tailscale / WireGuard 这类不适合作为局域网入口的接口
3. 局域网设备真的会把这台机器当 DNS
这是最容易忽略的一步。
智能连接 并不是“点开关就全网自动生效”,而是要求你的局域网设备后续查询 DNS 时,能问到这台 fknock 所在机器。
最常见的两种做法是:
- 把路由器 DHCP 下发的 DNS 服务器改成 fknock 的局域网 IP
- 或在要测试的手机、电脑上手动把 DNS 服务器改成这个局域网 IP
如果这一步没做,就算后台显示已同步,客户端也仍然可能继续走原来的公网 DNS 结果。
4. 53 端口没有被别的 DNS 服务占用
dnsmasq 需要监听:
53
如果本机已有别的 DNS 服务占用了它,初始化或重启时就会失败。
常见表现是:
- 提示
DNS 53 端口不可用 - 或提示
权限不足/地址已被使用
推荐配置顺序
路径:
系统设置 → 功能 → 智能连接
推荐按这个顺序做:
- 先确认
子域映射已经配置完成 - 进入
系统设置 → 功能 - 打开
智能连接 - 如果页面提示
dnsmasq未就绪,先完成安装 / 初始化 - 选择一个本机局域网 IP
- 点击
保存并同步 - 再去修改路由器 DHCP DNS,或在测试设备上手动改 DNS
- 重新连一次网络,或等待本地 DNS 缓存刷新后再测试
dnsmasq 未就绪时应该怎么理解
开启 智能连接 时,后台会先检查:
dnsmasq是否已安装dnsmasq是否已初始化完成dnsmasq服务是否能正常启动
因此页面里你会看到几种典型状态:
未安装待初始化未运行已就绪
可以这样理解:
未安装:系统里还没有可用的dnsmasq待初始化:已经检测到程序,但还没完成服务准备或初始配置未运行:配置存在,但服务当前没有正常工作已就绪:可以开始同步局域网 DNS 规则
如果你点击初始化后依然失败,优先检查:
53端口是否被别的 DNS 服务占用- 当前系统是否允许安装和启动
dnsmasq - 目标机器上是否已经具备正常的服务管理环境
选哪个本机局域网 IP
推荐选择:
- 你希望局域网客户端真正访问到的那块网卡地址
通常就是:
- 家庭主路由所在网段下的 NAS 地址
例如:
192.168.31.20 (eth0)
不建议随便选一个“看起来也是私网”的地址,因为不同地址可能分别对应:
- 主局域网
- Docker 网桥
- 虚拟网卡
- 其他不面向普通客户端的内部网络
一个最稳妥的判断方法是:
- 你在手机或电脑上,平时通过哪一个局域网 IP 能直接访问这台机器,就优先选哪一个
开启后用户侧还需要做什么
这是最重要的落地环节。
保存成功后,后台只是完成了:
- 本地 DNS 规则同步
但真正让客户端生效,还需要客户端把 DNS 查询发到这台机器。
通常做法是:
方案一:改路由器 DHCP
把局域网里自动下发的 DNS 服务器改成:
- fknock 所在机器的局域网 IP
这样后续手机、电脑重新拿到网络配置后,就会自动使用这台机器进行 DNS 解析。
方案二:只在单台设备上手动改 DNS
如果你只是想先验证效果,也可以只在:
- 手机
- 笔记本
- 平板
上手动把 DNS 改成 fknock 的局域网 IP。
DNS 缓存别急着忽略
这套本地 DNS 规则会使用较短的本地 TTL,默认大约:
30 秒
所以你在刚保存完、刚切回 Wi-Fi 时,如果测试结果还没立刻变化,不一定是功能失效,也可能只是客户端还在用旧缓存。
这时可以优先尝试:
- 等几十秒再测一次
- 重新连接 Wi-Fi
- 手动刷新本机 DNS 缓存
它不会替你做什么
为了避免误解,下面几件事不是 智能连接 负责的:
不是公网 DNS 托管
它不会自动帮你修改:
- 域名注册商的解析记录
- Cloudflare DNS
- DDNS 提供商记录
公网解析是否正确,仍然要靠:
不是模式切换工具
它不会把:
反代模式直连模式
自动转换成子域模式。
不是“开关一开,全网自动都懂了”
如果你的路由器、手机、电脑根本没有把 DNS 查询发到 fknock 所在机器,那它也无法替你接管解析结果。
最常见的几个问题
我已经保存成功了,为什么回到家里 Wi-Fi 还是在走公网
优先检查这几件事:
- 测试设备的 DNS 服务器是不是已经改成 fknock 的局域网 IP
- 当前子域是不是已经在
同步的子域列表里 - 客户端是不是还在用旧 DNS 缓存
- 你选择的本机 IP 是不是正确的那块局域网接口
多数情况下,问题都不在“保存失败”,而在:
- 客户端根本没有真正使用这台机器做 DNS
页面提示没有可同步的子域
这通常说明当前还没有可用的 Host 映射。
优先回到:
先确认:
- 根域名已保存
- 鉴权服务已创建
- 至少有一条业务子域映射
页面里没有可选的局域网 IP
这通常说明:
- 当前没有检测到合适的私网 IPv4
- 或检测到的只是被排除的虚拟网卡
优先检查:
- 这台机器当前是否真的连在局域网里
- 主网卡是否已经拿到
192.168.x.x / 10.x.x.x / 172.16-31.x.x这类地址 - 是否只是 Docker、隧道或其他虚拟接口在线
初始化时提示 53 端口不可用
这通常说明当前机器上已经有别的 DNS 服务占用了:
53
处理思路通常是:
- 先确认是谁占用了这个端口
- 停掉冲突的 DNS 服务,或重新规划 DNS 角色
- 再回到页面重新初始化
什么时候最值得开启
它最适合下面这些场景:
- 你已经把主要访问方式定成
子域模式 - 平时既会在外网访问,也会在家里 Wi-Fi 下继续访问
- 不想让
auth.example.com、alist.example.com这类地址在局域网里还继续绕公网 - 你可以控制路由器 DHCP DNS,或至少能改自己设备上的 DNS
如果你连局域网 DNS 都不方便控制,这个功能就算能开,也不一定会带来明显效果。
