Mihomo DNS 配置保姆级教程:解决延迟与泄露的终极方案

不管是玩 NAS 还是折腾软路由,Mihomo(原 Clash Meta)凭借强大的性能和灵活的规则,几乎成了大家的必修课。但很多朋号新手入门时,往往只关注“节点选得好不好”,却忽略了“DNS 配”得对不对。

其实,DNS 配置才是网络体验的基石。配不好,轻则打开网页慢如蜗牛、游戏延迟爆炸,重则 DNS 泄露,不仅隐私全无,还可能被运营商骚扰。

今天就把 Mihomo 的 DNS 配置掰开了揉碎了讲一遍,希望能帮你彻底搞定这个“隐形杀手”。

一、 为什么 DNS 这么重要?

简单来说,互联网世界靠 IP 地址通信,而人类只记得域名。DNS 就是把域名翻译成 IP 的电话本。

  1. 访问速度:本地解析成功,直连飞快;解析慢,网页转圈半天。
  2. 分流准确性:很多规则是基于域名的,如果 DNS 解析错了(比如把谷歌解析到了腾讯的 IP),规则就失效了。
  3. 隐私与安全:防止 DNS 泄露可以保护你的真实 IP 和上网习惯不被追踪。

DNS解析原理图:展示域名如何转换为IP地址的过程

DNS 架构示意图:域名解析是网络通信的第一步

二、 核心配置参数详解

打开 Mihomo 的配置文件(通常是 config.yaml),找到 dns 段落。很多一键脚本生成的默认配置其实很简陋,建议大家手动微调。

1. 基础解析与监听

dns:
  enable: true
  listen: 0.0.0.0:53
  ipv6: true # 是否解析 IPv6,一般建议 true,除非你的网络不支持
  • listen:这是 DNS 监听端口。0.0.0.0:53 表示监听所有网卡的 53 端口。如果你在路由器上跑,这没问题;如果在电脑上跑且系统自带 DNS 服务(比如 systemd-resolved),为了避免端口冲突,建议改成 1053 之类的端口,然后在系统设置里手动指向它。
  • ipv6:现在的网络基本都是双栈的,开启它能避免很多奇怪的连不上问题。

2. nameserver(默认解析器)

这是最重要的部分,处理所有未命中规则的流量,或者作为 fallback 的后备。

  nameserver:
    - 223.5.5.5
    - 119.29.29.29
    # 或者支持 DoH/DoT 的加密 DNS
    # - https://doh.pub/dns-query

避坑指南:这里尽量填写国内公信力强的 DNS(如阿里、腾讯)。为什么?因为大多数国内服务直接访问是最快的,用国内 DNS 解析国内 IP,直连速度才拉得满。不要上来就全填 8.8.8.8,国内解析会慢半拍。

3. proxy-server-nameserver(代理解析器)

这是 Mihomo 强大的地方。专门用于解析“需要走代理的域名”的 DNS。

  proxy-server-nameserver:
    - https://1.1.1.1/dns-query # Cloudflare
    - https://8.8.8.8/dns-query # Google

原理:当你访问 google.com 时,Mihomo 会自动用这一组 DNS(通过代理通道)去查询 IP。这样就能绕过 DNS 污染,拿到真实的 IP 地址,然后再通过代理节点上网。

Mihomo 配置界面截图,展示DNS设置选项

Mihomo 配置界面参考:可视化配置更加直观

4. nameserver-policy(分流策略)

这是进阶玩家的神器,可以给不同的域名指定不同的 DNS 服务器。

  nameserver-policy:
    'geosite:cn': 223.5.5.5
    'geosite:geolocation-!cn': https://1.1.1.1/dns-query
    '+.internal.domain.com': 10.0.0.53 # 内网域名指定内网 DNS
  • geosite:cn:所有在国内的域名,强制走国内 DNS 解析,保证速度。
  • geosite:geolocation-!cn:所有非国内域名,强制走代理 DNS 解析,保证准确。
  • 这样配置后,结合下面的 enhanced-mode,体验会非常丝滑。

5. enhanced-mode(增强模式)

Mihomo 提供了三种模式:fake-ipredir-hostmapping

  • fake-ip(推荐)
    • 优点:速度最快。它会返回一个虚假的 IP 给客户端,流量发出时再替换成真实 IP。这能极大地减少握手延迟。
    • 缺点:某些老古董软件或网银可能会因为 IP 变了而报警。
  • redir-host(兼容)
    • 优点:兼容性最好,拿回来真实的 IP。
    • 缺点:每次都要等 DNS 解析完成才开始连接,会有轻微延迟。

一般家用或折腾脚本,推荐 fake-ip,配合上面的策略基本无解。

  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - '*.lan'
    - '+.local'
    # 过滤掉局域网和本地域名,防止内网设备失联

三、 常见问题与解决方案

1. 为什么提示 DNS 泄露?

如果你在浏览器访问 ip.sb 或类似网站,显示的 DNS 是你运营商的 IP,而不是节点的 IP。

  • 原因:系统 DNS 设置没生效,或者 App 使用了硬编码 DNS(没走系统代理)。
  • 解决:确保 Mihomo 开启了 Tun 模式(透明代理)。Tun 模式会接管系统的所有流量,包括 DNS 包,只要上面的 fake-ip-filter 配置得当,基本能杜绝泄露。

2. 苹果全家桶 AirDrop / 网盘无法连接?

  • 原因:苹果设备依赖 mDNS(组播 DNS)进行局域网发现,强制走代理就断了。
  • 解决:在 fake-ip-filter 中加入 *.local 和局域网网段,或者在路由规则里放行所有局域网 IP 段(如 192.168.x.x, 10.x.x.x)。

3. 某些游戏登不上或加速器失效?

  • 原因:游戏客户端讨厌 fake-ip,因为它发现 IP 每次都在变。
  • 解决:将游戏进程或者对应的游戏域名,通过 nameserver-policy 单独指定为模式,或者直接在 fake-ip-filter 里加上该游戏域名。

四、 总结一套“万能模板”

最后,给懒得研究细节的朋友一套相对通用、兼顾速度与准确的模板配置片段(基于 Tun 模式):

dns:
  enable: true
  listen: 0.0.0.0:53
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - '*.lan'
    - 'localhost.ptlogin2.qq.com'
    - '+.srv.nintendo.net'
    - '+.stun.playstation.net'
    - '+.msftncsi.com'
    - '+.msftconnecttest.com'
    - '+.xboxlive.com'
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  proxy-server-nameserver:
    - https://dns.alidns.com/dns-query
    - https://1.1.1.1/dns-query
  nameserver-policy:
    'geosite:cn': [223.5.5.5, 119.29.29.29]
    'geosite:geolocation-!cn': [https://1.1.1.1/dns-query, https://8.8.8.8/dns-query]
    '+:.internal': [10.0.0.1] # 你的内网 DNS

配置这东西,没有绝对的最优,只有最适合你网络环境的。遇到问题多看 Log,看看到底是哪个域名解析错了,对症下药才是正道。

如果你在配置过程中遇到了什么奇怪的问题,欢迎在评论区交流,一起把这块硬骨头啃下来!

标签: none

评论已关闭