TrustedAccessPath - 全球网络加速服务

Mihomo DNS怎么配置:先跑通,再分流与 TUN 排查

更新于 2026-10-31 · tapcloud.shop

简答:Mihomo DNS 配置建议分三步:先在当前配置的 dns 段启用内置 DNS 并填入可达的上游,再选择 fake-ip 或 redir-host,确认基础解析正常后才加入 nameserver-policy 和 TUN 的 dns-hijack。先备份配置,只改 dns 段;启动后用 nslookup 或 dig 查询 Mihomo 的监听地址,确认返回结果和日志,再判断是否需要分流。本文只讲 Mihomo 内核 DNS 配置,不覆盖其他客户端的菜单路径。

定义:Mihomo DNS 配置是通过 YAML 文件中的 dns 字段,定义内置 DNS 服务、上游解析器、增强模式、域名分流和 TUN 劫持行为。

先试这一步:只改最小 DNS 配置并确认能解析

不同前端保存配置的位置可能不同,先在 Mihomo 前端的当前配置、配置文件或生成配置中找到 dns: 段。不要一开始同时修改代理组、规则、TUN 和 DNS;如果启动失败,很难判断是哪一处造成的。Mihomo 使用 YAML,缩进和冒号后的空格都会影响解析,制表符不应作为缩进。可先参考Mihomo YAML 语法说明。

将原文件复制一份后,再合并下面这段最小配置。示例只监听本机回环地址,适合单机排查;它不是完整的代理配置,不能单独替代你的节点、规则或端口设置。

dns:
enable: true
listen: 127.0.0.1:1053
ipv6: false
enhanced-mode: redir-host
default-nameserver:
- 223.5.5.5
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query

这里的 default-nameserver 用于解析 DNS 服务本身的域名,官方文档要求该类地址可使用 IP;nameserver 是普通域名查询使用的上游;listen 是 Mihomo DNS 服务的监听地址。字段职责可对照Mihomo DNS 官方配置文档。

  • 停止条件:如果前端提示 YAML 错误、字段不识别或核心无法启动,立即恢复备份,不要继续加入其他字段。
  • 验证边界:核心启动成功只说明配置能被加载,不等于所有网页都能访问,也不等于代理节点已经连通。
  • 回滚:关闭 Mihomo,恢复备份文件或前端的原配置,再重新加载。

第二步:理解 Fake-IP、redir-host 与 DNS 分流

enhanced-mode 目前主要使用 fake-ip 或 redir-host。官方文档说明,redir-host 返回真实解析结果,fake-ip 会为域名分配 Fake-IP 地址;默认 Fake-IP 地址池通常使用 198.18.0.1/16,但应以当前文档和运行配置为准。

两种模式怎么选
模式适合场景常见观察结果排查建议
redir-host先确认基础 DNS、局域网和普通应用是否正常查询结果通常是上游返回的真实地址优先用于第一阶段,问题较容易分层定位
fake-ip需要配合规则或 TUN 处理域名流量的场景部分域名查询可能返回 Fake-IP 地址先验证基础解析,再维护 fake-ip-filter,不要盲目加入大量域名

Fake-IP 不是“更快”的保证,也不能单独证明代理出站正常。若使用 Fake-IP,应保留必要的局域网、内网或特殊域名过滤项。官方文档支持域名通配和域名集合,但通配写法必须符合 Mihomo 语法,建议先使用简单的 +.lan、+.local 等明确条目测试。

完成最小配置后,再按域名添加 nameserver-policy。它会按域名或规则集合选择解析器,优先级高于普通 nameserver 查询。示例:

dns:
nameserver-policy:
'+.example.internal':
- 10.0.0.1
'+.example.com':
- https://doh.pub/dns-query

上例中的域名只是结构示例,不代表你的网络一定存在这些域名或 DNS 服务;请替换为你能实际验证的内网后缀和上游。不要直接照搬地区性 DNS 地址,先用 nslookup 或 dig 检查可达性。

第三步:节点域名、respect-rules 与 TUN 的配置顺序

如果代理节点地址使用域名,Mihomo 需要先解析节点域名,才能建立代理连接。官方文档将 proxy-server-nameserver 定义为专门解析代理节点域名的 DNS;当它为空时,可能跟随普通 DNS 配置。因此,出现“DNS 查询正常但节点连不上”时,应优先检查节点域名解析,而不是马上更换全部上游。

需要让 DNS 查询遵守流量规则时,可以考虑 respect-rules: true。但官方文档明确说明,启用它需要配置 proxy-server-nameserver,否则可能出现解析依赖自身代理的循环。建议先保持关闭,完成普通 DNS 和节点域名验证后再单独开启。

dns:
respect-rules: true
proxy-server-nameserver:
- https://doh.pub/dns-query

  • 停止条件:开启 respect-rules 后出现节点域名超时、DNS 循环或核心日志持续报解析错误,先关闭该字段并恢复到已验证配置。
  • 验证边界:能解析节点域名只证明 DNS 层取得结果,不证明节点认证、路由规则或代理出站成功。

TUN 场景应放在最后处理。Mihomo 的 TUN 配置中常见 dns-hijack,用于接管经过 TUN 的 DNS 请求;但具体字段、权限和网卡行为会随系统及前端实现变化。先确认不启用 TUN 时 DNS 正常,再加入 TUN,并只增加必要的接管项。官方配置文档和Mihomo 配置索引可用于核对当前字段。

不要把 TUN 已开启、端口已监听或系统状态显示“已连接”当作网页可用的证明。至少分别验证:DNS 查询、节点连接、代理出站和目标网页访问。

如何验证 DNS 是否真正生效

  1. 查看运行配置:如果前端提供当前配置或 API 查看功能,确认运行中的 dns.enable、listen、enhanced-mode 和 nameserver 与文件一致。Mihomo API 文档说明,/configs 可获取当前运行配置,/cache/dns/flush 可清理 DNS 缓存;接口地址和密钥必须以你自己的配置为准,不能直接暴露到公网。参考Mihomo API 文档。
  2. 查询监听地址:Windows 可使用 nslookup example.com 127.0.0.1;macOS 或 Linux 可使用 dig @127.0.0.1 -p 1053 example.com。将 example.com 换成你实际可测试的域名。若无响应,先检查监听地址、端口占用和防火墙,不要马上修改上游。
  3. 观察模式差异:如果使用 fake-ip,查询结果可能落在 Fake-IP 地址池;如果使用 redir-host,通常会看到上游返回的真实地址。一次查询结果只能说明该次 DNS 请求,不代表长期稳定性。
  4. 检查节点域名:对订阅中实际使用的节点域名单独查询。节点域名无法解析时,先处理 proxy-server-nameserver 或上游可达性。
  5. 清理缓存后复测:修改策略或 Fake-IP 过滤后,清理 Mihomo DNS 缓存,再重新查询,避免旧结果干扰判断。

现象分流:启动失败、无响应、节点失败与局域网异常

Mihomo DNS 常见现象与优先检查项
现象优先检查不要直接下结论
核心无法启动YAML 缩进、冒号后的空格、重复键、前端生成配置是否覆盖手写配置不要先判断为 DNS 上游故障
DNS 监听无响应listen 地址、端口是否被占用、前端是否实际加载了该配置端口存在不等于 DNS 请求已被正确处理
普通域名能解析,节点仍连不上节点域名、proxy-server-nameserver、规则和代理出站日志不要把 DNS 正常等同于节点正常
Fake-IP 开启后应用异常fake-ip-filter、内网后缀、局域网地址和应用是否依赖真实地址不要一次性加入大量未知过滤项
TUN 开启后局域网打不开dns-hijack、内网域名解析、路由排除和系统权限不要仅凭“已连接”判断 TUN 配置正确
怀疑 DNS 泄露分开检查系统 DNS、Mihomo 监听、TUN 接管和实际出站日志单次网页测试不能证明长期不存在泄露

最小改动原则是:一次只改一个字段,记录修改前后的查询结果和日志;如果问题扩大,立即回滚到上一份能启动的配置。对于前端覆写、Merge 配置或订阅生成配置,应以“运行中的最终配置”为准,而不是只看本地手写文件。

常见问题

Mihomo 的 DNS 配置写在哪里?

写在 Mihomo 实际加载的 YAML 配置中的 dns: 段,但不同前端可能通过订阅、Merge 或覆写生成最终配置。找不到生效原因时,优先查看前端显示的当前配置或运行配置;只改本地文件而未被加载时,查询结果不会改变。

Fake-IP 和 redir-host 哪个更好?

没有脱离场景的统一答案。排查基础 DNS、局域网和节点解析时,建议先用 redir-host;需要配合规则或 TUN 处理域名流量时,再评估 fake-ip。选择模式不等于获得固定速度或稳定性。

为什么要配置 proxy-server-nameserver?

当代理节点地址是域名时,它负责为节点域名提供解析路径。尤其在开启 respect-rules 后,官方文档要求关注该字段,以避免 DNS 查询依赖尚未建立的代理连接。

配置改了但 DNS 结果不变怎么办?

按顺序检查:前端是否覆盖了手写配置、运行配置是否包含新字段、DNS 缓存是否需要清理、查询是否真的发往 Mihomo 的监听地址。浏览器可打开不代表它使用了你刚配置的 DNS。

可以直接把监听地址改成 0.0.0.0 吗?

不建议把排查配置直接暴露到所有网卡。先使用 127.0.0.1 完成本机验证;只有明确需要局域网设备使用时,才根据当前版本文档配置访问范围、认证和防火墙规则。

常见问题

Mihomo DNS 配置在哪里修改?

修改 Mihomo 实际加载的 YAML 配置中的 dns 段,但前端可能通过订阅、Merge 或覆写生成最终配置,应以运行配置为准。

Mihomo DNS 配置后启动失败怎么办?

先恢复备份,再检查 YAML 缩进、冒号后的空格、重复键和前端覆写;不要在未恢复基础配置前继续增加 Fake-IP、分流或 TUN 字段。

Fake-IP 和 redir-host 应该怎么选?

基础 DNS 和节点解析排查可先用 redir-host;确认基础解析正常后,再按规则或 TUN 需求评估 fake-ip。两者都不是速度或稳定性的保证。

为什么节点域名解析失败?

检查节点域名是否可解析、proxy-server-nameserver 是否需要单独配置,以及 respect-rules 是否造成解析依赖循环。普通域名能解析不代表节点域名一定能解析。

相关阅读

参考资料

  1. Mihomo 官方文档:DNS configuration
  2. Mihomo 官方文档:YAML 语法
  3. Mihomo 官方文档:Configuration 索引
  4. Mihomo 官方文档:API