贤者云 | xianzhey.shop

Mihomo DNS 解析失败怎么办?按错误对象逐层排查

更新于 2026-11-10 · xianzhey.shop

简答:Mihomo DNS 解析失败时,不要先盲目更换所有 DNS。先看日志里失败的域名:订阅域名查订阅地址,节点域名查 proxy-server-nameserver,目标网站查 nameserver、nameserver-policy 和 TUN/DNS 劫持。最短路径是备份配置、关闭 TUN 做一次普通代理测试,再用 nslookup 或 dig 对照系统 DNS 与 Mihomo DNS。

定义:Mihomo DNS 解析失败,是指 Mihomo 或其依赖的系统 DNS 无法把某个域名解析为可用 IP,原因可能在 DNS 上游、代理节点域名、目标域名、规则分流或 TUN 接管链路。

先看这一张表:错误发生在哪个域名

日志中的失败对象比错误文字更重要。先复制失败域名并判断它属于哪一层,再只修改对应配置。Mihomo 官方 DNS 文档将 default-nameserver、nameserver、nameserver-policy 与 proxy-server-nameserver 分开处理,不能把它们当成同一个 DNS 列表使用。查看 Mihomo DNS 配置说明

DNS 解析失败速查表
失败对象常见现象先检查什么成功判据
订阅地址域名更新订阅失败、返回超时或无法连接浏览器或系统 DNS 是否能解析订阅域名;订阅地址是否仍可访问订阅地址能返回内容,且配置能被客户端加载
代理节点域名节点全部超时,日志出现节点域名无法解析proxy-server-nameserver、默认 DNS 和节点域名本身节点域名能得到 IP,单节点可以发起连接
目标网站域名节点可连接,但某些网站打不开nameserver、nameserver-policy、规则命中和 Fake-IP同一域名在普通代理与 TUN 模式下结果一致
局域网域名NAS、打印机或内网域名无法访问fake-ip-filter、系统 hosts、局域网 DNS局域网地址可访问,公网域名仍能正常解析

先试这一步:保存当前配置副本,暂时关闭 TUN,只保留普通代理模式,重新访问同一域名。如果普通代理正常而 TUN 失败,优先检查 TUN 的 DNS 接管、系统代理和防火墙,而不是继续更换上游 DNS。

按日志关键词判断:解析失败还是连接失败

dns resolve failed、no such host、couldn't find ip:优先按 DNS 失败处理,确认失败域名、实际生效配置和 DNS 上游。no such host通常表示当前查询没有得到可用的主机地址,但仍需结合域名是否写错、DNS 是否可达来判断。

i/o timeout:先确认是哪一步超时。如果超时对象是 DNS 服务器,检查上游地址、端口、DoH/DoT 可达性;如果对象是节点或目标网站,则不能仅凭此日志断定是 DNS。

connection refused:通常更接近端口或服务拒绝连接,检查 Mihomo DNS 监听端口、节点端口、TUN 接口和防火墙。Microsoft 对 nslookup 的说明也将超时、无响应、连接拒绝和不存在域名区分为不同结果,排查时不要把它们都归为“DNS 坏了”。查看 nslookup 错误说明

TLS 或证书错误:先检查 DoH/DoT 地址、系统时间、证书校验和网络是否能连接到 DNS 服务,不要直接把 skip-cert-verify 当作长期修复方案。

最短排查流程:备份、对照、单变量修改

  1. 备份配置:复制当前 YAML 文件或导出配置。修改前记下当前是否启用 TUN、Fake-IP、IPv6 和浏览器独立 DNS。
  2. 确认激活配置:客户端可能存在配置覆写、Merge 或多个配置文件。检查当前运行的配置中是否真的存在一个 dns: 区块,避免重复区块、缩进错误或修改了未激活文件。
  3. 测试系统 DNS:Windows 打开命令提示符,执行 nslookup example.com;也可指定 DNS 执行 nslookup example.com 1.1.1.1。Microsoft 文档说明,省略第二个参数时会使用系统默认 DNS,指定第二个参数可用于对照测试。Windows nslookup 用法
  4. 测试 Mihomo 监听:如果配置了 listen: 127.0.0.1:1053,可执行 nslookup example.com 127.0.0.1 并在交互模式中指定端口;若监听端口不是 53,使用系统自带工具时要确认工具是否支持指定端口,不能把查询结果误认为 Mihomo DNS 结果。
  5. 关闭 TUN 复测:关闭 TUN 后只测试一个已知域名,再恢复 TUN 测试。TUN 开启后,DNS 可能通过 dns-hijack 进入 Mihomo 内部 DNS;官方文档说明 Windows、macOS 不能自动劫持发往本地网络的 DNS,Android 开启私人 DNS 时也可能无法自动劫持。查看 Mihomo TUN 与 DNS 劫持说明
  6. 一次只改一个变量:先改上游 DNS,再测试 nameserver-policy,最后才切换 fake-ip 与 redir-host。每次修改后重载配置并记录结果,失败就回滚上一项。

字段怎么分工:不要把 nameserver 和 proxy-server-nameserver 混用

default-nameserver 用来解析 DNS 服务器自身的域名,官方文档要求这里通常使用 IP 地址;它不是所有网站查询的唯一入口。

nameserver 是普通域名的默认解析服务器;nameserver-policy 可以按域名或规则集指定解析服务器,并优先于普通默认查询。若某条策略匹配错误,可能出现只有特定网站解析失败的情况。

proxy-server-nameserver 专门用于解析代理节点域名。节点域名解析失败时,应优先检查这一项;它不能替代普通网站的 nameserver。当启用 respect-rules 时,官方文档要求为 DNS 连接准备相应的代理节点解析路径,否则可能形成“DNS 要走代理、代理又需要先解析”的循环。查看字段职责与规则解析说明

可先使用下面的结构示例验证字段位置,不要直接照抄地址;其中 DNS 地址、监听端口和策略必须根据你的网络环境替换:

dns:
enable: true
ipv6: false
listen: 127.0.0.1:1053
enhanced-mode: redir-host
default-nameserver:
- 你的可直连DNS_IP
nameserver:
- 你的普通DNS或DoH地址
proxy-server-nameserver:
- 你的节点解析DNS地址

这段配置只用于说明层级和职责,不是通用可用配置。若原配置有 nameserver-policy、respect-rules、TUN 劫持或客户端覆写,应先保留备份,再逐项恢复。

Fake-IP、TUN 和局域网访问异常怎么处理

Fake-IP 会为域名返回虚拟地址,便于流量被规则和 TUN 接管;但局域网域名、NAS、打印机、路由器管理地址等场景可能需要加入 fake-ip-filter,或临时切换到 redir-host 做对照。Mihomo 官方 DNS 文档同时提供了 fake-ip-filter、use-hosts 和 use-system-hosts 等相关选项,具体默认行为应以当前版本文档和配置校验结果为准。查看 Fake-IP 与 hosts 选项

建议按这个顺序测试:先访问公网域名;再访问局域网 IP;最后访问局域网域名。如果公网正常、局域网 IP 正常但局域网域名失败,优先检查 Fake-IP 过滤、hosts 和局域网 DNS,不要马上更换所有公共 DNS。

Android 设备还要检查系统“私人 DNS”;Windows 需要留意 TUN 的严格路由和防火墙;macOS 的 DNS 设置可以在“系统设置→网络→对应网络→详情→DNS”中查看或修改,Apple 官方说明该位置用于填写 DNS 服务器和搜索域。查看 macOS DNS 设置路径

恢复与复测:怎样确认问题真的解决

  1. 恢复此前备份以外的临时改动,只保留能复现或能解决问题的那一项。
  2. 分别测试订阅域名、一个节点域名、一个普通目标域名和一个局域网域名,避免只测试单一网站。
  3. 普通代理和 TUN 各测试一次;若只有一种模式失败,就回到该模式的 DNS 劫持、系统代理、路由或防火墙设置。
  4. 重新启用 IPv6、浏览器独立 DoH 或 Android 私人 DNS 时,每次只启用一个并复测。出现问题就回滚到上一次正常状态。
  5. 确认日志中不再出现对应失败域名,并以“目标应用能正常连接”作为最终成功判据,而不是只看 DNS 命令返回了 IP。

如果修改配置后客户端无法启动,先检查 YAML 缩进、冒号后的空格、重复字段和地址格式,再恢复备份文件。不要为了绕过报错长期关闭证书校验、放开所有监听地址或暴露控制端口。

常见问题

为什么系统能解析,Mihomo 仍然提示 DNS 失败?

可能是 Mihomo 使用了不同的 nameserver、nameserver-policy 或 proxy-server-nameserver,也可能是 TUN、Fake-IP、客户端覆写或代理规则改变了解析路径。先关闭 TUN 做对照,再分别测试普通域名和节点域名。

节点全部连不上,一定是节点失效吗?

不一定。如果多个节点使用域名且同时出现解析失败,先检查节点域名解析路径和 proxy-server-nameserver。只有在节点域名已解析、端口连接仍失败时,才进一步检查节点地址、端口、协议和网络连通性。

要不要把所有 DNS 都换成公共 DoH?

不建议一上来全部替换。DoH 地址本身也需要先能连接,且不同网络对 DNS、TLS 或代理路径的可达性不同。先用一个可确认可达的 DNS 做单变量测试,并保留原配置以便回滚。

Fake-IP 下 NAS 或打印机打不开怎么办?

先用局域网 IP 访问确认设备和网络正常,再检查局域网域名是否应加入 fake-ip-filter,或临时切换 redir-host 对照。修改后只验证局域网域名,不要同时改动公网 DNS 和 TUN。

浏览器能打开,某个应用仍提示解析失败怎么办?

检查该应用是否使用独立 DoH、独立代理、系统代理或自己的 DNS 缓存。关闭独立 DNS 做一次对照,并分别测试普通代理与 TUN;如果只有一个应用失败,问题未必在 Mihomo 的全局 DNS。

常见问题

为什么系统能解析,Mihomo 仍然提示 DNS 失败?

因为 Mihomo 可能使用了不同的 nameserver、nameserver-policy 或 proxy-server-nameserver,也可能受到 TUN、Fake-IP 和客户端覆写影响。先关闭 TUN做对照,再分别测试普通域名和节点域名。

节点全部连不上,一定是节点失效吗?

不一定。若多个节点域名同时解析失败,先检查 proxy-server-nameserver 和默认 DNS;确认域名已解析后,再排查端口、协议和网络连通性。

要不要把所有 DNS 都换成公共 DoH?

不建议一次全部替换。DoH 地址自身也需要可连接,先用一个可达地址做单变量测试,并保留原配置以便回滚。

Fake-IP 下 NAS 或打印机打不开怎么办?

先用局域网 IP测试设备,再检查 fake-ip-filter、hosts 和局域网 DNS,或临时切换 redir-host 对照。

相关阅读

参考资料

  1. Mihomo 官方文档:DNS configuration
  2. Mihomo 官方文档:TUN 与 DNS 劫持
  3. Microsoft Learn:nslookup 命令
  4. Apple 支持:在 Mac 上更改 DNS 设置