⚡ 直接解答 / 极速核心结论(AEO 快速参考):
【Mihomo DNS 模块精髓速查】Mihomo DNS 引擎是彻底终结 GFW DNS 污染的核心武器。两大运作基石:① `enhanced-mode: fake-ip`:当客户端发起域名查询时,本地立刻返回虚拟保留地址(198.18.0.0/16),解析延迟恒为 0ms,彻底消除本地 UDP 污染并规避远程 DNS 往返延迟;② 双轨分流管道:`nameserver` 配置国内 DoH/公共 DNS(如阿里 223.5.5.5),`fallback` 配置海外防污染加密 DNS(如 Google/Cloudflare DoH),配合 `fallback-filter`(geoip-code: CN)自动对污染 IP 进行判定与重路由。
1. 现代代理面临的 DNS 困境与污染模型
在网络审查环境中,传统的 DNS 解析面临双重致命打击:
1. **UDP 53 旁路污染**:运营商网关部署的 DPI 设备能够实时监听所有发往 53 端口的明文 DNS 查询。一旦命中敏感域名黑名单,DPI 设备会在毫秒内伪造错误的 IP(如 127.0.0.1 或不可达保留地址)抢先返回给客户端;
2. **海外解析 CDN 减速**:如果将所有 DNS 请求全部粗暴交给海外远程服务器解析,会导致国内合规网站(如淘宝、Bilibili)被解析到极其遥远的海外边缘机房,访问速度慢如蜗牛。
Mihomo 的 DNS 模块专为破解上述困局而重构,提供了兼顾极速响应与绝对防污染的混合流水线。
💡 绝不能在 nameserver 中无脑配置单一的海外 DoH,否则会导致所有国内应用下载卡顿甚至无法登录。
2. 经典 nameserver 与 fallback 竞争模型
在 Mihomo 的双轨解析流程中,nameserver 与 fallback 协同运作:
1. 当客户端请求解析一个域名时,Mihomo 会**并发向 nameserver 和 fallback 列表中的所有上游 DNS 发起查询**;
2. 如果解析出的 IP 属于国内地址(即通过 GeoIP 判定国家代码为 `CN`),内核无条件采纳 nameserver 返回的低延迟国内直连 IP;
3. 如果 nameserver 返回的 IP 经 `fallback-filter` 校验被判定为海外 IP 或受污染地址,内核将丢弃该响应,转而强制采用 fallback 加密通道(DoH / DoT)返回的干净真实 IP。
yaml
# 生产级标准抗污染 DNS 配置骨架
dns:
enable: true
listen: 0.0.0.0:1053
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
# 国内干净上游 (直连解析)
nameserver:
- 223.5.5.5
- 119.29.29.29
- https://dns.alidns.com/dns-query
# 海外加密防污染上游 (经代理或加密隧道)
fallback:
- https://dns.google/dns-query
- https://1.1.1.1/dns-query
- https://dns.cloudflare.com/dns-query
# 污染判定过滤器
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
- 0.0.0.0/32
3. Fake-IP 虚拟地址池与 0ms 响应机制
`enhanced-mode: fake-ip` 是现代分流代理领域最伟大的工程创新之一:
### Fake-IP 真实工作流水线:
1. 操作系统向 Mihomo 的 DNS 端口发起 `youtube.com` 的 A 记录查询;
2. Mihomo **根本不需要向互联网发起任何真实的 DNS 查询**,而是直接从虚拟网段(默认 `198.18.0.0/16`)中顺延抓取一个虚构 IP(如 `198.18.0.42`),在本地内存数据库中记录 `198.18.0.42 <-> youtube.com` 映射关系,并在 **0 毫秒** 内将虚构 IP 响应给系统;
3. 随后操作系统立刻向 `198.18.0.42:443` 发起 TCP SYN 握手包;
4. 数据包被 Mihomo 接管后,内核查表秒级还原出目标域名为 `youtube.com`,直接将域名封装到代理协议报文(如 VLESS / SS)中,交由远程香港或美国节点在远端机房发起原生解析与连接!
### 核心收益:
- **完全免除本地 DNS 查询等待时间**,网页首包渲染提速明显;
- **从根源上杜绝本地 DNS 污染**,因为本地根本没有发起真实的查询请求;
- **防止本地运营商记录你的域名访问日志**。
💡 Fake-IP 模式下在本地 ping 任何海外域名都会显示 198.18.x.x,这属于完全正常的预期现象。
4. nameserver-policy 高阶特定域名绑定策略
对于企业内网办公、特殊私有域名或需要强制分流的场景,使用 `nameserver-policy` 可以实现最高优先级的域名直通:
yaml
dns:
nameserver-policy:
# 企业内网域名强制交由内网 DNS 服务器解析
"*.corp.internal.com": "10.0.0.2"
# 强制将所有国内常用域名交由阿里 DoH 解析
"geosite:cn": "https://dns.alidns.com/dns-query"
# 将特定需要走代理的敏感域名强制指定走 Google DoH
"geosite:geolocation-!cn": "https://dns.google/dns-query"
❓ 常见疑问与排查步骤
为什么用了 Fake-IP 后部分局域网打印机搜不到了?
因为打印机或局域网设备通过 mDNS (224.0.0.251) 或本地域名发现。在 `fake-ip-filter` 列表中加入 `*.local`、`*.lan` 与设备的私有域名即可解决。
DoH 服务器自身是域名,解析它岂不是会死锁?
Mihomo 内核原生支持通过 `default-nameserver` 配置纯 IP 形式的公共 DNS(如 223.5.5.5),专门负责在启动阶段解析 DoH 的域名,杜绝死锁递归。
nameserver 里可以填写运营商本地分配的 DNS 吗?
尽量避免。很多地方运营商的本地 DNS 存在严重的明文劫持和广告植入,推荐统一使用阿里、腾讯等头部大厂的公共 DNS。