探索者加速器 - Telescope

Mihomo 怎么配置 DNS?从最小配置到连接验证

更新于 2026-10-30 · telescope.lat

简答: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 就认为它一定会生效。

  1. 打开 Mihomo 所使用的前端,确认当前启用的配置、订阅或配置文件名称。
  2. 先复制一份配置文件作为备份,记录原来的 dns: 内容。
  3. 在当前生效配置中查找是否已有 dns:、listen:、enhanced-mode: 或前端的 DNS Override。
  4. 将下面的最小配置放到顶层 dns: 节点,不要缩进到 proxies:、proxy-groups: 或 rules: 内。
  5. 保存后重新载入配置;如果前端有“合并配置”“脚本”或“覆盖设置”,再次检查最终配置是否保留了这些字段。
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-query

fake-ip-filter 的写法支持域名通配;官方示例使用了 *.lan。局域网域名、设备名、本机服务和 NTP、STUN 等场景是否应排除,要根据实际故障逐项添加,不能把所有域名都加入过滤列表。每添加一条,都应重新测试对应的局域网访问或应用连接。

如果 TUN 开启后出现局域网打不开、设备名无法解析或某个应用连接异常,先临时切回 redir-host 验证问题是否与 Fake-IP 有关;确认后再恢复 Fake-IP,并只增加必要的过滤项。这样可以保留回滚路径,也避免把 DNS、TUN 和路由规则同时改乱。

配置后怎么验证:按四层检查,不要只看能否打开网页

  1. 检查 YAML:确认冒号、缩进、列表短横线和字段层级正确。配置载入失败时,先看 Mihomo 或前端日志中的 YAML 错误位置。
  2. 检查监听:确认 127.0.0.1:1053 没有被其他程序占用,并确认前端是否真的把系统或 TUN 的 DNS 请求导向该端口。
  3. 检查解析:在 Mihomo 日志或控制面板中查看目标域名是否产生 DNS 请求,以及返回的是 Fake-IP 还是真实 IP。单独执行系统 nslookup 只能说明系统 DNS 的结果,不能证明 Mihomo 已接管。
  4. 检查节点域名:如果订阅节点使用域名,确认 proxy-server-nameserver 能解析该域名;节点能显示在列表中,不等于节点域名已经成功解析。
  5. 检查连接分层:先关闭 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。

相关阅读

参考资料

  1. Mihomo 官方 DNS 配置文档
  2. Mihomo 官方 DNS 类型说明
  3. MetaCubeX Mihomo 官方配置示例
  4. Mihomo 官方通用配置文档