IDCNLink - 全球网络加速服务商 - 机场

Mihomo DNS 配置:从最小 YAML 到 Fake-IP 排查

更新于 2026-11-09 · idcnlink.online

简答:Mihomo DNS 配置先确认真正生效的 YAML,再按 enable、enhanced-mode、nameserver 和 nameserver-policy 逐项设置。普通桌面可先使用 redir-host;启用 TUN 并需要统一接管 DNS 时,再根据应用兼容性切换 Fake-IP。修改后必须重载配置,并用本地 DNS 监听测试和实际访问结果交叉确认。

定义:Mihomo DNS 配置是通过 dns 区块定义本地 DNS 监听、上游解析器、域名分流、Fake-IP 或 redir-host 模式,以及节点域名和直连域名解析方式的一组配置。

先试这一步:确认配置位置、模式与监听端口

本文是面向 Mihomo 使用者的第三方使用指南,不代表任何客户端或服务商官方。配置前先备份当前 YAML,并确认你修改的是 Mihomo 实际加载的配置文件,而不是订阅生成文件、客户端覆写文件或 Merge 片段。

现象先查层级判断标准下一步
改完 DNS 没变化配置来源当前运行配置中的 dns 字段仍未改变检查 Profile、订阅覆写、Merge 和 Script
域名能解析但节点连不上节点域名解析nameserver 正常,但代理节点域名解析失败补充 proxy-server-nameserver
局域网设备打不开Fake-IP 过滤与 TUN局域网域名被映射为 Fake-IP 或 DNS 未被正确接管加入局域网过滤项并检查 dns-hijack
改端口后无法查询监听地址和端口端口被其他进程占用,或测试仍使用旧端口更换端口并重新测试

Mihomo 官方文档说明,enable: false 时会使用系统 DNS;listen 可提供 UDP 和 TCP DNS 服务;enhanced-mode 支持 fake-ip 与 redir-host。字段的默认值和支持范围应以当前文档为准,可查看 Mihomo DNS 配置文档。

建议首次测试使用本机回环地址和不常用端口,例如 127.0.0.1:1053。如果客户端只允许填写端口而不允许填写监听地址,应根据客户端页面的实际字段调整;不要直接把 DNS 监听暴露到公网。

最小可用 Mihomo DNS YAML

下面是可作为起点的结构片段,适合先验证 DNS 模块是否工作。它不是所有客户端都能直接覆盖的完整配置,必须合并到已有 YAML 的顶层 dns: 区块中,避免重复写多个同级 dns 字段。

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
  fake-ip-filter:
    - '*.lan'
    - '*.local'
    - localhost

default-nameserver 用于解析 DNS 服务器自身的域名,官方文档要求其使用 IP 地址,也可以使用加密 DNS;nameserver 是普通域名查询使用的主要上游。DoH、DoT、DoQ、UDP 和 TCP 的写法可参考 Mihomo DNS 类型说明。

这份最小配置选择 redir-host,原因是它通常更容易与局域网、部分应用和需要真实目标地址的场景兼容。若你的应用依赖 TUN 接管、规则按域名分流,或需要统一处理大量应用 DNS,再评估 Fake-IP,而不是一开始同时修改多个高级字段。

修改后依次执行:保存备份、在客户端执行配置检查、重载或重新启用 Profile、确认日志没有 YAML 错误,再测试 127.0.0.1:1053。如果客户端没有独立的配置检查按钮,应先通过 API 或客户端日志确认重载是否成功;不要仅凭界面显示“已连接”判断 DNS 已生效。

核心字段怎么组合:enable、nameserver 与分流

enable:决定是否启用 Mihomo 内置 DNS。关闭后,解析通常回到系统 DNS,TUN 或系统代理是否仍能接管流量取决于客户端和 TUN 配置。

listen:指定 Mihomo DNS 服务监听地址和端口。绑定 127.0.0.1 只允许本机访问;绑定局域网地址可供其他设备使用,但需要同时考虑防火墙、访问控制和 DNS 暴露风险。

ipv6:设为 false 时,AAAA 查询会返回空结果。只有在确认当前网络、节点和应用不需要 IPv6 时才建议关闭;关闭后可能改变部分应用的连接路径。

default-nameserver:用于解析 DoH 或其他基于域名的上游地址。它不是普通网页域名的主要解析列表,不能简单替代 nameserver。

nameserver:普通域名查询的主要上游。可填写 UDP、TCP、DoT、DoH 或 DoQ 地址,但不同上游的连通性、返回结果和网络路径可能不同,应在实际环境中验证。

fallback 与 fallback-filter:用于备用解析和结果筛选。官方文档指出,配置 fallback 后会启用相应过滤逻辑;其中 geosite 过滤方向已标记为弃用,应优先考虑 nameserver-policy 做域名分流。

nameserver-policy:按域名或 geosite 等条件指定解析器,并优先于普通的 nameserver 和 fallback 查询。可先用明确的域名后缀测试,确认规则命中后,再扩大范围。

dns:
  nameserver-policy:
    '+.lan':
      - system
    'geosite:cn':
      - https://doh.pub/dns-query
      - https://dns.alidns.com/dns-query
    '+.example.com':
      - https://1.1.1.1/dns-query

上面是结构示例,不代表每个环境都应使用同一组上游。对于企业内网域名、家庭路由器域名或本地服务,应优先使用实际网络提供的内部 DNS;不要把内部域名交给公网解析器。

Fake-IP、redir-host 和 normal:按故障选择

模式主要特点适合场景常见问题
fake-ip为域名返回 Fake-IP,并由 Mihomo 映射回原域名TUN 接管、按域名规则分流、需要减少重复解析的场景局域网、游戏、部分登录和内置网络检测可能不兼容
redir-host保留解析得到的真实地址先求兼容性、普通桌面代理、局域网设备较多的场景部分分流依赖域名时,可能需要更仔细的规则配置
normal不是当前 DNS 文档中与 fake-ip、redir-host并列的增强模式值需核对当前客户端或衍生版本是否自定义支持不要把其他软件的字段直接套入 Mihomo

官方 DNS 文档列出的增强模式是 fake-ip 和 redir-host。如果某个客户端界面出现“normal”,应先查看该客户端对应的配置说明和最终生成 YAML,不能仅凭界面名称推断 Mihomo 内核会接受该值。

Fake-IP 的地址池由 fake-ip-range 指定,过滤项由 fake-ip-filter 控制。官方示例支持域名通配符;可先加入 *.lan、*.local 和已确认的内网域名。过滤项过宽可能让更多请求回到真实解析,过滤项过窄则可能导致局域网或特殊应用异常。

切换模式时只改一个变量:先从 Fake-IP 切换到 redir-host,清理 DNS 缓存和 Fake-IP 缓存,再重复同一个访问测试。若问题消失,可以初步判断兼容性与 Fake-IP 映射有关,但仍不能据此断定是某个具体应用的唯一原因。

节点域名、直连域名与规则 DNS

proxy-server-nameserver 只用于解析代理节点域名。节点订阅已经成功导入,但节点域名解析失败时,补充这一项比盲目增加普通 nameserver 更有针对性。

dns:
  proxy-server-nameserver:
    - https://doh.pub/dns-query
  direct-nameserver:
    - system
  respect-rules: false

如果启用 respect-rules,DNS 连接会遵守路由规则,官方说明同时要求配置 proxy-server-nameserver,并不建议将它与 prefer-h3 一起使用。启用前应准备回滚:保留原配置,将 respect-rules 改回 false,重载后重新测试节点和网页访问。

direct-nameserver 用于直连出口的域名解析;direct-nameserver-follow-policy 决定它是否遵守 nameserver-policy。如果你配置了内部 DNS、分流 DNS 或企业域名,必须明确哪些域名应走内网解析,避免使用公网 DNS 查询内部名称。

DNS 解析路径并不等于完整流量路径。一次网页访问至少可能包含客户端 DNS、代理节点域名解析、规则匹配、TCP 或 UDP 建连,以及应用自身的 DoH/DoT。Mihomo 官方给出了 DNS 处理流程图,可参考 DNS resolve process 对照排查。

TUN、dns-hijack 与 DNS 绕过排查

TUN 模式下,DNS 是否被接管取决于 TUN 的 dns-mode、dns-hijack、路由和系统行为。官方文档列出 disabled、native、hijack 三类模式;Windows 使用 hijack 时还涉及 strict-route,Linux 可能涉及 auto-redirect。

需要注意,官方文档说明 macOS 和 Windows 无法自动劫持发送到本地网络的 DNS 请求;Android 开启 Private DNS 时,也可能无法自动劫持 DNS。因此,看到 Mihomo 日志有查询记录,并不等于所有应用的 DNS 都已经经过 Mihomo。

  1. 先关闭应用内置的“安全 DNS”“Private DNS”或 DoH 选项进行对照测试;如果关闭后才恢复,说明应用可能绕过了系统 DNS。
  2. 确认 TUN 的 DNS 模式、DNS 劫持目标和路由状态,修改前记录原值,出现断网时按原值回滚。
  3. 检查监听端口是否真的被 Mihomo 占用,避免系统 DNS、路由器 DNS 或其他软件同时使用同一端口。
  4. 使用同一域名分别测试系统解析、Mihomo 本地监听和实际应用访问,不能只看其中一项。

官方 TUN 文档还指出,dns-hijack 默认按 UDP 处理,若写明协议可指定其他方式;具体可查看 Mihomo TUN 配置文档。TUN 设置会影响整台设备的网络,修改前应准备禁用 TUN、恢复系统代理或删除路由的回滚路径。

配置不生效、端口占用和节点连不上的完整流程

  1. 确认文件:在客户端打开当前 Profile 或配置详情,确认修改的文件就是运行文件;如果配置来自订阅,检查是否存在覆写、Merge、Script 或自动生成环节。
  2. 确认 YAML:检查缩进、冒号、列表短横线和重复顶层字段。不要把 Tab 与空格混用,也不要把完整 dns: 区块嵌套到另一个 dns: 下。
  3. 确认重载:重载后查看日志和运行配置。若配置启用了外部控制器,可通过官方 API 的运行配置接口读取当前配置;相关接口说明见 Mihomo API 文档。
  4. 确认端口:Linux 或 macOS 可运行 dig @127.0.0.1 -p 1053 example.com;Windows PowerShell 可使用 nslookup -port=1053 example.com 127.0.0.1。预期是收到 DNS 响应;超时则优先查监听地址、端口、防火墙和客户端是否已重载。
  5. 确认上游:临时只保留一个已知可达的 nameserver,避免多个上游返回结果不同导致判断混乱。验证成功后再逐项加回 DoH、DoT、fallback 或 policy。
  6. 确认节点:普通域名能解析但节点仍无法连接时,单独检查 proxy-server-nameserver;不要把节点域名解析问题误判为代理协议或线路问题。
  7. 确认缓存:切换 Fake-IP、上游或策略后,清理 DNS 缓存和 Fake-IP 缓存,再重复同一域名测试。单次成功只能证明一次查询成功,不能证明所有应用和所有规则均已生效。

如果配置恢复正常,建议一次只启用一个高级项,例如先启用 nameserver-policy,再测试 respect-rules,最后处理 TUN 劫持。这样可以把故障范围限制在一个变量内。

按场景选择的配置思路

场景建议起点暂时不要做成功判据
普通桌面代理enable: true、回环监听、redir-host、单一 nameserver一开始同时启用 TUN、fallback 和 respect-rules本地 DNS 查询成功,网页和节点访问均正常
TUN 全局接管先验证 DNS 监听,再配置 dns-mode 和 dns-hijack未准备回滚就修改系统路由目标应用的 DNS 和连接均经过预期链路
局域网设备保留 *.lan、*.local 等已确认域名的真实解析把所有局域网域名交给公网 DoH路由器、NAS 或内网服务可按原域名访问
节点域名失败单独补充 proxy-server-nameserver反复更换协议或节点而不测 DNS节点域名能解析,随后再判断代理连接

如果你使用的是 OpenWrt 或其他透明代理环境,还要额外检查路由器 DNS 监听、端口转发、DNS 劫持规则和 LAN 防火墙。不要直接把桌面端的回环监听地址复制到局域网设备上;监听范围不同,所需的网络权限和风险也不同。

常见问题

Mihomo DNS 配置应该写在哪个文件?

应写入 Mihomo 当前实际加载的配置或其明确的覆写层。订阅客户端可能通过 Profile、Merge、Script 或生成器覆盖手工修改,因此不能只看本地文件;重载后应通过运行配置、日志或客户端状态确认最终结果。

Mihomo 的 Fake-IP 和 redir-host 怎么选?

需要 TUN 接管和按域名分流时可测试 Fake-IP;更重视普通桌面、局域网和应用兼容性时可先用 redir-host。切换后应清理 DNS 与 Fake-IP 缓存,并用同一组域名重复测试。

为什么 nameserver 能用,但代理节点仍然连不上?

普通域名解析和代理节点域名解析可能走不同路径。检查节点域名是否能解析,并按需配置 proxy-server-nameserver;如果节点域名已解析成功,再继续排查端口、协议、路由和节点本身。

respect-rules 要不要打开?

它会让 DNS 连接遵守路由规则,但官方文档要求同时配置 proxy-server-nameserver,并不建议与 prefer-h3 一起使用。除非你明确需要 DNS 按路由规则出站,否则先保持关闭更容易定位问题。

Mihomo DNS 配置改了却不生效怎么办?

先确认修改的是运行配置,而不是订阅源文件;再检查 YAML 缩进、重复 dns 区块、客户端覆写和重载日志。最后用本地监听端口测试,而不是只看客户端是否显示已连接。

相关阅读

参考资料

  1. Mihomo 官方 DNS 配置文档
  2. Mihomo 官方 DNS 类型说明
  3. Mihomo 官方 DNS 解析流程
  4. Mihomo 官方 TUN 配置文档
  5. Mihomo 官方 API 文档