Mihomo 怎么配置 DNS?从最小配置到连接验证
简答:Mihomo 配置 DNS,先确认当前使用的前端和实际生效的 YAML,再在 dns 节点中设置 enable、nameserver 与 enhanced-mode。新手可先使用 redir-host 验证基础解析;需要 TUN、透明代理或更完整的域名接管时,再切换到 fake-ip,并同步检查 fake-ip-filter、proxy-server-nameserver 和端口占用。
定义:Mihomo DNS 配置是通过配置文件中的 dns 节点,指定解析服务、监听地址、域名分流方式以及代理节点域名解析路径的过程。
先试这一步:确认配置位置,再使用最小 DNS 配置
本文是第三方使用指南,不代表任何客户端、订阅或服务的官方页面。Mihomo 的 DNS 配置通常写在当前配置文件的 dns: 节点下,但图形前端可能通过订阅合并、覆盖项、脚本或远程配置生成最终文件。因此,修改前不要只打开一个本地 YAML 就认为它一定会生效。
- 打开 Mihomo 所使用的前端,确认当前启用的配置、订阅或配置文件名称。
- 先复制一份配置文件作为备份,记录原来的
dns:内容。 - 在当前生效配置中查找是否已有
dns:、listen:、enhanced-mode:或前端的 DNS Override。 - 将下面的最小配置放到顶层
dns:节点,不要缩进到proxies:、proxy-groups:或rules:内。 - 保存后重新载入配置;如果前端有“合并配置”“脚本”或“覆盖设置”,再次检查最终配置是否保留了这些字段。
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
proxy-server-nameserver:
- https://doh.pub/dns-query上面的字段含义以 Mihomo 文档为准:enable: false 时会使用系统 DNS;listen 是 Mihomo DNS 服务的监听地址;default-nameserver 用于解析 DNS 服务自身的域名;nameserver 是普通域名的默认解析服务器;proxy-server-nameserver 专门用于解析代理节点域名。字段说明可查看 Mihomo 官方 DNS 配置文档。
端口提示:示例使用 127.0.0.1:1053,目的是减少与系统或路由器已有的 53 端口冲突。若前端要求使用其他端口,应以该前端的实际监听设置为准。修改监听端口后,必须重新载入并检查日志,不要仅凭配置文件内容判断成功。
核心字段怎么选:nameserver、fallback 和策略分流
| 字段 | 作用 | 新手建议 |
|---|---|---|
enable | 是否启用 Mihomo 内置 DNS | 需要由 Mihomo 接管解析时设为 true |
listen | 提供本地 DNS 服务的监听地址和端口 | 先使用未被占用的本地端口,例如 127.0.0.1:1053 |
default-nameserver | 解析 DoH、DoT 等 DNS 服务域名 | 填写可直接访问的 IP 类型 DNS;不要只填无法先解析的域名 |
nameserver | 默认域名解析服务器 | 先配置一到两个可用的 UDP、DoT 或 DoH 地址 |
fallback | 备用解析服务器 | 遇到特定解析结果异常时再添加,并配合过滤条件验证 |
nameserver-policy | 按域名或规则指定解析服务器 | 局域网域名、企业内网域名等有明确需求时再使用 |
proxy-server-nameserver | 解析代理节点域名 | 节点是域名而不是 IP 时建议单独配置 |
direct-nameserver | 指定直连出口使用的 DNS | 出现直连域名异常时再调整,修改后要测试直连业务 |
fallback 不是所有配置都必须添加。官方文档说明,配置 fallback 后会启用相应的备用解析筛选逻辑;而 nameserver-policy 更适合把特定域名交给指定 DNS。若只是想先确认内置 DNS 能否工作,优先保留最小配置,不要一次加入多个分流字段。
如果启用 respect-rules: true,DNS 连接会遵守路由规则,官方文档同时要求配置 proxy-server-nameserver,否则可能出现 DNS 请求和节点域名解析相互等待的情况。除非明确知道自己的路由规则如何处理 DNS,否则建议先保持默认值,再根据日志逐项验证。
Fake-IP、redir-host 和 normal 怎么选
Mihomo 官方 DNS 文档列出的常见增强模式包括 fake-ip 和 redir-host。选择时应结合使用方式,而不是把某一种模式当成所有环境的固定答案。
- redir-host:更适合先做基础连通性验证。域名解析后返回真实 IP,排查时比较容易与系统 DNS、路由和目标地址对应。
- fake-ip:由 Mihomo 为域名分配 Fake-IP,常用于 TUN 或需要更完整域名接管的场景。启用后必须关注
fake-ip-range与fake-ip-filter,局域网、主机名或某些需要真实地址的域名可能需要排除。 - normal:如果当前前端或内核文档明确支持该模式,再按照对应版本说明使用。不要只根据其他客户端的配置字段直接复制。
需要 Fake-IP 时,可以在最小配置基础上增加:
dns:
enable: true
listen: 127.0.0.1:1053
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter-mode: blacklist
fake-ip-filter:
- '*.lan'
- '*.local'
- localhost
default-nameserver:
- 223.5.5.5
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
proxy-server-nameserver:
- https://doh.pub/dns-queryfake-ip-filter 的写法支持域名通配;官方示例使用了 *.lan。局域网域名、设备名、本机服务和 NTP、STUN 等场景是否应排除,要根据实际故障逐项添加,不能把所有域名都加入过滤列表。每添加一条,都应重新测试对应的局域网访问或应用连接。
如果 TUN 开启后出现局域网打不开、设备名无法解析或某个应用连接异常,先临时切回 redir-host 验证问题是否与 Fake-IP 有关;确认后再恢复 Fake-IP,并只增加必要的过滤项。这样可以保留回滚路径,也避免把 DNS、TUN 和路由规则同时改乱。
配置后怎么验证:按四层检查,不要只看能否打开网页
- 检查 YAML:确认冒号、缩进、列表短横线和字段层级正确。配置载入失败时,先看 Mihomo 或前端日志中的 YAML 错误位置。
- 检查监听:确认
127.0.0.1:1053没有被其他程序占用,并确认前端是否真的把系统或 TUN 的 DNS 请求导向该端口。 - 检查解析:在 Mihomo 日志或控制面板中查看目标域名是否产生 DNS 请求,以及返回的是 Fake-IP 还是真实 IP。单独执行系统
nslookup只能说明系统 DNS 的结果,不能证明 Mihomo 已接管。 - 检查节点域名:如果订阅节点使用域名,确认
proxy-server-nameserver能解析该域名;节点能显示在列表中,不等于节点域名已经成功解析。 - 检查连接分层:先关闭 TUN,仅用普通代理测试;再开启 TUN;最后才测试 DNS 分流、IPv6 和局域网访问。每次只改一个变量。
如果 DNS 请求失败,先检查 default-nameserver 能否解析 DoH 域名;如果普通域名能解析但节点连不上,重点检查 proxy-server-nameserver;如果外网正常而局域网异常,重点回滚 Fake-IP 或补充最小的 fake-ip-filter;如果只有 IPv6 目标失败,可暂时将 ipv6 设为 false 做对照测试。Mihomo 还支持 UDP、TCP、DoT、DoH 等 DNS 类型,具体格式可参阅 Mihomo 官方 DNS 类型说明。
常见配置问题与恢复方法
改了 YAML,但 DNS 完全没有变化
常见原因是修改的文件不是当前生效文件,或者前端的 Merge、Override、Script 在载入时覆盖了 dns:。恢复方法是重新打开前端当前配置,确认最终内容,再暂时关闭相关覆盖项;如果无法确认,先恢复备份文件,不要继续叠加字段。
端口被占用,Mihomo 无法启动 DNS
将 listen 改为其他未占用的本地端口,并同步检查前端、TUN 或系统 DNS 转发设置。只改 YAML 而不改调用方,可能导致系统仍然访问旧端口。
开启 Fake-IP 后局域网设备打不开
先切回 redir-host 判断是否由 Fake-IP 引起;如果确认相关,再针对局域网后缀、设备名或本地服务域名增加过滤项。不要直接使用过大的过滤范围,否则可能让大量域名绕过预期的 DNS 处理。
国外域名解析异常或节点域名无法解析
先分别测试普通域名和节点域名。普通域名异常时检查 nameserver;只有节点域名异常时检查 proxy-server-nameserver。若启用了 respect-rules,还要确认 DNS 请求的路由规则没有形成循环。
IPv6 导致部分连接失败
这可能与系统、TUN、上游 DNS 和节点对 IPv6 的支持不一致有关。可暂时将 ipv6: false 作为对照测试;如果问题消失,再单独验证 IPv6,而不是同时修改 Fake-IP、DNS 分流和 MTU。
常见问题
Mihomo 的 DNS 配置应该写在哪里?
写在当前生效配置文件的顶层 dns: 节点下。使用图形前端时,还要确认订阅合并、Override、Script 或远程配置没有覆盖该节点;最终生效内容比本地原始 YAML 更重要。
Mihomo DNS 配置里必须写 fallback 吗?
不必须。基础验证可先只配置 default-nameserver、nameserver 和 proxy-server-nameserver。只有在确有备用解析或特定域名判断需求时,再增加 fallback 与相关筛选规则。
Fake-IP 和 redir-host 哪个更好?
没有适用于所有环境的固定答案。redir-host 更适合先验证基础解析和连接;fake-ip 更适合需要更完整域名接管的 TUN 等场景,但要同步检查 fake-ip-range 和 fake-ip-filter。
为什么节点能显示,却提示无法连接?
节点出现在列表中不代表节点域名解析成功。若节点地址是域名,先检查 proxy-server-nameserver;若启用 respect-rules,还要检查 DNS 请求是否被路由规则阻断或形成循环。
配置后如何确认 Mihomo DNS 已经生效?
依次检查配置载入日志、DNS 监听端口、Mihomo 日志中的域名请求、节点域名解析和实际连接。系统 nslookup 只能作为辅助,不能单独证明 Mihomo 已接管 DNS。