国内家用网络环境,最容易被忽视的点是DNS。现代DNS服务系统已经变得相当复杂,也可以说很智能。对一个域名的解析可以根据查询方的IP返回不同的结果,即所谓调优。
调优是好事,但也有坏事。
GFW 会把黑名单里的域名直接搭配一个随机IP,让你在国内访问不了。不仅如此,对境外域名的解析请求如果被误发给国内服务商,可能会被追踪到正在翻墙。这就是DNS泄露。
现在中美AI竞争激烈,DNS泄露不仅要考虑GFW,还要顾及使用某些敏感美国AI,比如Claude会出现的环境检测。必须把DNS服务做得天衣无缝才行。让国内域名用优化线路,让国外域名统统走VPS节点。
我在这套方案上折腾了好久,最后选择了 mosdns-x,一个小众的定制开源项目作为家里 DNS 解析的核心。
为什么选 mosdns-x
mosdns-x 是基于 mosdns v4 继续维护的开源分支。它可以把域名匹配、缓存、广告过滤和上游转发放在同一套配置里,还能根据查回来的结果决定下一步。比如国内 DNS 返回的地址命中了我配置的污染 IP 名单,就改问 Google。各个分组也可以设自己的备用上游。 mosdns-x 官方文档 · 更新记录
这次升级,家里已经跑过的规则和插件配置可以继续用。我先用独立端口验证新版,再让它接管原入口,OpenClash 继续查原来的地址。
架构说明:国内网站走宽带直连,解析交给国内上游,让 CDN 按家里的线路调度。境外域名用加密上游,防的是明文查询途中收到伪造答复。有些网站固定走日本节点,我给它们单独配了日本 DNS,按日本出口的线路选地址。
家里的设备照常用路由器提供的 DNS,分流和广告过滤都在 mosdns 里处理。
一、家里的 DNS 查询先到哪里

家里的设备通过 DHCP 拿到路由器的 DNS 地址。查已经配置好的内网主机名,dnsmasq 可以直接回答。普通外部查询走这条路:
设备 → OpenWrt 的 dnsmasq → OpenClash → mosdns-x → 上游 DNS
中间经过 OpenClash,是因为这套配置用的是 redir-host。OpenClash 必须要拿到域名和 IP 对应关系,才能供后面的流量分流使用。OpenClash 会把DNS普通查询交给本机的 mosdns-x,缓存、广告过滤和上游选择都在那里处理。 Mihomo DNS 配置
还有两类查询单独走。dnsmasq 保留少量指定域名的转发规则,比如代理节点的域名。代理节点和 DNS 上游的域名需要有单独的引导解析,避免出现还没连上节点,就要靠这个节点解析自身地址的情况。
二、mosdns 的域名分流规则
| 查询场景 | mosdns 怎样选上游 | 解决什么问题 |
|---|---|---|
| 家里直连的国内站 | 走国内 DNS | 保留国内 DNS 和 CDN 面向家庭线路的地址调度 |
| 通用境外站 | 走通用加密上游 | 用 TLS 保护与上游之间的查询和答复,减少传输途中被篡改的机会 |
| 经日本节点访问的指定域名 | 优先问日本专用 DoT,约 1.5 秒未取得答复时启用通用远程上游 | 让候选地址更贴合日本出口的网络 |
比如打开一个指定走日本节点的网站,mosdns 先向日本专用 DNS 查询,设备拿到 IP 后,OpenClash 再按流量规则把网站连接交给日本节点。DNS 分组和代理规则要配套。若还想从多个候选 IP 里测速挑一个,也该由实际连接网站的日本节点去测。 VPS 出口的 DNS 优化
名单之外的域名先问 Google。约 3 秒未取得答复时可以启用国内上游,答复里有中国 IP 也会再查国内上游。这条回落会用到国内明文 DNS。缓存、广告规则和其余分支的先后顺序见下图。 配置说明

三、为什么把上游规则收进 mosdns
以前 dnsmasq 自己也有一份很长的国内域名转发表,命中就直接问公共 DNS。结果是,改了 mosdns 里的国内规则,这些查询还是走原来的路。把那批转发规则移走以后,普通外部查询才集中到一处选上游,内网名称仍然由 dnsmasq 处理。
为什么不用 SmartDNS
国内 DNS 和 CDN 已经能给出候选 IP。
在独立 DNS 主机上跑两套相同的 mosdns-x 策略,其中一套加 SmartDNS 测速。客户端分别用两套方案选出的 IP 访问同一批网站,保留原域名和 TLS 校验,白天、晚间各测一轮。事先定的保留条件是,至少 20% 的可比域名在两个时段都达标。达标要同时满足两条速度要求,首字节时间至少缩短 15%,也至少少 30 毫秒,失败率还得保持或下降。

两轮共有 19 个域名可比。白天有 3 个达标,晚间有 1 个,两轮都达标的只有 1 个,占 5.3%。
SmartDNS 在国内使用收益很小,反而增加了系统复杂度。
四、把 DNS 验收交给 AI
有AI之后,DNS部署,mosdns-x配置文件改写,路由器规则修正,都可以交给AI来完成。Codex或者Claude Code能够在网络探查之后出具任务书,照样执行即可。
Claude 需要注意的是,改造 OpenClash 的配置要重启代理服务,中间断网可能会让 Claude 检测你在国内。最好用Codex。
优化之后,我让Codex做了验证。
- 从内网设备发起查询。核对本地名称能否解析、广告规则是否生效,以及国内、境外、日本分组是否命中预期上游。日本分组还要核对网站连接的实际代理出口。
- 检查路由器有没有接管发往外部 53 端口的 UDP 和 TCP 查询。测试流量走物理网卡,避开客户端自己的 TUN。到路由器外网口确认哪些域名走了明文,并核对上游超时后的回落去向。
- 单独测客户端的 DoH 和 DoT 能否绕过本地规则。有公网 IPv6 的测试设备就补查 IPv6 下的接管和出口。
目前运转良好,打开国内站速度飞快,境外站无DNS泄露。