Mihomo DNS 设置怎么配置:模板、Fake-IP 与排查方法
简答:Mihomo DNS 主要写在配置文件的 dns 段。新手可先用 redir-host 和基础 nameserver,确认核心能启动、域名能解析后,再按需启用 Fake-IP、nameserver-policy 或 TUN 的 DNS 劫持。
定义:Mihomo DNS 配置是通过 YAML 文件中的 dns 字段,指定解析服务、解析模式、域名分流和系统 DNS 接管方式。
先复制最小配置,再逐项确认是否生效
本文是与 Mihomo 项目及开发者无隶属关系的第三方使用指南。Mihomo 的 DNS 配置通常放在配置文件顶层的 dns: 节点下;具体编辑入口会因客户端不同而变化,客户端界面路径未在本文核实,优先使用客户端提供的配置文件编辑、覆写或配置查看功能。
先备份当前配置,只增加下面这一段,不要同时修改代理组、规则和 TUN。官方文档列出的基础字段包括 enable、listen、ipv6、enhanced-mode、nameserver 和 fallback。mihomo 官方 DNS 配置文档
dns:
enable: true
listen: 0.0.0.0:1053
ipv6: false
enhanced-mode: redir-host
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
fallback:
- tls://1.1.1.1
- tls://8.8.4.4- 适用目的:先确认 Mihomo 可以启动,并具备独立 DNS 监听服务。
- 判定正常:配置加载不报 YAML 错误,核心保持运行,客户端日志没有 DNS 初始化失败。
- 注意:这里的域名解析服务仅作为示例,实际可用性和访问路径需要在你的网络环境中自行验证。
如果配置文件已有 dns:,不要再复制第二个同级字段;应在原有节点内修改。YAML 对缩进敏感,建议统一使用两个空格,不要混用 Tab。官方示例同样使用层级缩进表示字段关系。MetaCubeX mihomo 配置示例
这些 DNS 字段分别负责什么
| 字段 | 作用 | 新手建议 | 异常时看什么 |
|---|---|---|---|
enable | 是否启用 Mihomo 内置 DNS;关闭时会使用系统 DNS。 | 需要由 Mihomo 处理 DNS 时设为 true。 | 设为 false 后,系统解析可能绕过 Mihomo。 |
listen | DNS 服务监听地址和端口,支持 UDP、TCP。 | 先使用未被其他程序占用的端口,例如 0.0.0.0:1053。 | 若核心启动失败,检查端口是否已被占用。 |
ipv6 | 是否解析 IPv6;设为 false 时,AAAA 查询返回空解析。 | 没有验证 IPv6 链路前,可先保持关闭。 | 只看 IPv4,不代表 IPv6 路径已经正常。 |
enhanced-mode | 选择 fake-ip 或 redir-host 两种 DNS 处理模式。 | 先用 redir-host 验证基础连通性。 | 切换模式后分别测试局域网、应用和域名解析。 |
nameserver | 默认域名解析服务器。 | 先配置一到两个可验证的 DNS 地址。 | 检查 DNS 地址格式和网络是否能访问。 |
fallback | 备用解析服务器;配置后会配合 fallback 过滤逻辑使用。 | 基础配置正常后再增加。 | 检查是否因过滤条件导致解析结果与预期不同。 |
proxy-server-nameserver | 只用于解析代理节点域名。 | 节点地址是域名且经常解析失败时再配置。 | 查看节点域名是否能先被解析。 |
direct-nameserver | 用于直连出口的域名解析。 | 存在直连解析需求时再单独指定。 | 检查直连域名是否被错误地交给其他解析器。 |
以上字段职责和可用值以 Mihomo DNS 官方文档为准;其中 enhanced-mode 的可选值是 fake-ip 和 redir-host,官方文档还说明了各类 nameserver 的使用范围。DNS configuration - mihomo docs
Fake-IP 和 redir-host 怎么选
redir-host 会保留较直观的真实解析结果,适合先排查 DNS、局域网设备、企业内网、NAS、游戏或部分依赖真实地址的应用。它的优点是故障定位更直观,缺点是需要结合规则和流量路径处理 DNS。
fake-ip 会为域名分配 Fake-IP 地址,常用于需要让 Mihomo 根据域名识别连接的场景。它可能让部分局域网、内网、游戏或特殊应用出现兼容性问题,因此不建议在尚未确认基础 DNS 正常时直接切换。官方文档说明,Fake-IP 相关配置包括 fake-ip-range、fake-ip-filter 和 fake-ip-filter-mode。mihomo DNS 字段说明
| 场景 | 优先尝试 | 原因 |
|---|---|---|
| 第一次配置 DNS | redir-host | 变量较少,便于确认是 DNS 还是规则问题。 |
| 需要域名识别和分流 | fake-ip | 便于核心保留域名与连接的对应关系。 |
| 访问局域网设备 | redir-host 或增加过滤 | 避免局域网域名被错误映射为 Fake-IP。 |
| 切换 Fake-IP 后应用异常 | 临时切回 redir-host | 用单变量对照判断是否由 Fake-IP 引起。 |
如果确实需要 Fake-IP,可在确认核心能启动后再加入:
dns:
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter-mode: blacklist
fake-ip-filter:
- '*.lan'
- '*.local'示例中的过滤域名需要按你的局域网实际域名调整,不能把它当作适用于所有网络的完整清单。
nameserver、fallback 和域名分流怎么组合
可以把解析链路简单理解为:default-nameserver 负责解析 DNS 服务自身的域名,nameserver 负责常规域名解析,fallback 提供备用解析路径,nameserver-policy 则按域名或规则集合指定解析服务器。官方文档明确区分了这些字段的职责。mihomo DNS configuration
如果 DNS 服务使用 IP 地址,例如普通 UDP、DoT 的 IP 或直接可访问的地址,通常不需要为它额外解决域名;如果使用 DoH 域名,则要注意 DNS 服务域名本身不能依赖一个尚未建立的代理解析链路。
dns:
enable: true
default-nameserver:
- 223.5.5.5
nameserver:
- https://doh.pub/dns-query
fallback:
- tls://1.1.1.1
nameserver-policy:
'+.lan':
- system
'rule-set:cn':
- https://doh.pub/dns-query上面的 nameserver-policy 只是结构示例。rule-set:cn 只有在配置中确实存在对应规则集合时才有意义;如果没有该规则集合,应删除这一项,避免把未定义的名称当成可用配置。
proxy-server-nameserver 只解决代理节点域名,direct-nameserver 只解决直连出口域名。不要为了“配置更完整”而盲目同时添加它们;先确认普通 nameserver 已能工作,再根据日志中出现的节点解析或直连解析问题单独增加。
TUN 和 DNS 劫持要不要一起开
只修改顶层 dns: 并不会自动接管所有系统应用的 DNS 请求。需要处理系统流量时,通常还要配置顶层 tun:,但这属于独立变量,建议在基础 DNS 已经验证成功后再开启。Mihomo 官方 TUN 文档列出了 dns-mode、dns-hijack 和 strict-route 的关系。TUN - mihomo docs
tun:
enable: true
auto-route: true
strict-route: true
dns-hijack:
- any:53
- tcp://any:53- 先确认适用性:这是系统级网络配置,可能影响其他网卡、虚拟机、局域网设备和企业网络。
- Windows:官方文档说明,
strict-route可用于阻止 Windows 多网卡 DNS 解析造成的泄漏,但也可能使部分应用异常。 - macOS 和 Windows:官方文档说明,不能自动劫持发送到本地网络的 DNS 请求。
- Android:如果系统 Private DNS 已启用,DNS 请求可能无法被自动劫持;官方文档明确提示这一限制。
如果开启 TUN 后“能打开网页但局域网设备失效”,先关闭 dns-hijack 或临时停用 TUN,确认问题是否随开关变化,再根据实际需求增加局域网排除项。不要同时修改 MTU、规则和 DNS,否则很难判断是哪一项造成变化。
配置不生效时,按这个顺序验收
- 检查 YAML:确认只有一个顶层
dns:,字段名称使用半角冒号,列表项前有短横线,缩进统一。若核心直接退出,先回滚到备份文件。 - 检查监听端口:确认
listen的端口未被其他 DNS 服务占用。若修改端口后核心能启动,说明原端口可能存在冲突,但不能仅凭这一点断定具体占用程序。 - 检查解析:在客户端日志或 DNS 面板中查看是否出现查询记录;再用系统工具查询一个常见域名。Windows 可运行
nslookup example.com 127.0.0.1,其中example.com仅为示例域名,请替换为你要测试的域名;若监听端口不是 53,应把命令中的 DNS 地址改成实际监听地址和端口。 - 检查代理节点域名:如果普通域名能解析,但订阅节点连接失败,单独检查节点域名是否需要
proxy-server-nameserver。该字段只用于代理节点域名解析,不能替代普通nameserver。 - 检查直连域名:如果只有直连规则失败,再考虑
direct-nameserver;不要在普通 DNS 尚未验证时直接增加多个解析出口。 - 检查系统是否绕过:如果浏览器能访问但某个应用仍无法连接,先关闭浏览器内置 DoH、系统 Private DNS 或其他独立 DNS 设置,再测试 TUN 和
dns-hijack。 - 单变量回退:依次把
fake-ip改回redir-host、关闭 TUN、删除fallback和策略分流。每次只改一项,并记录“启动、解析、节点连接、局域网访问”四项结果。
DNS 类型的写法可以是 UDP、TCP、DoT、DoH、DoQ 或 system 等,具体格式应以 Mihomo 官方 DNS 类型文档为准。mihomo 支持的 DNS 类型
一份可直接套用的排查记录表
| 检查项 | 操作 | 正常表现 | 异常后的下一步 |
|---|---|---|---|
| 核心启动 | 重新加载配置 | 没有 YAML 或 DNS 初始化错误 | 回滚最近一次修改,检查缩进和字段拼写 |
| DNS 监听 | 查看客户端 DNS 状态或监听信息 | 监听地址与端口存在 | 更换未占用端口并重新加载 |
| 普通域名 | 使用 nslookup 查询测试域名 | 返回有效地址或符合预期的解析结果 | 检查 nameserver 地址和网络可达性 |
| 代理节点 | 连接一个节点并查看日志 | 节点域名能够完成解析 | 按需增加 proxy-server-nameserver |
| 局域网 | 访问路由器、NAS 或本地服务 | 局域网地址可访问 | 暂时切回 redir-host,再检查 Fake-IP 过滤 |
| 系统接管 | 开启或关闭 TUN 做对照 | 系统应用行为符合预期 | 检查 dns-hijack、Private DNS 和浏览器独立 DoH |
常见问题
Mihomo 的 DNS 配置应该写在哪里?
写在配置文件顶层的 dns: 节点下。如果客户端使用订阅配置、覆写配置或独立配置文件,具体入口会因客户端不同而变化,需在客户端的配置编辑或覆写功能中确认。不要重复添加两个同级 dns:。
Mihomo DNS 设置后核心无法启动怎么办?
先恢复备份,再检查 YAML 缩进、冒号、列表短横线、字段拼写和端口占用。每次只恢复一小段配置,确认核心能启动后再逐项增加。
Fake-IP 和 redir-host 应该选哪个?
首次配置或需要排查局域网、游戏、NAS、企业内网时,建议先用 redir-host。确认基础 DNS 和规则正常后,再按实际需求测试 fake-ip,并为局域网域名配置过滤。
配置了 nameserver,为什么代理节点仍然连不上?
普通域名解析正常不代表代理节点域名一定能解析。查看日志确认失败对象,如果问题只发生在节点域名,可按需配置 proxy-server-nameserver;同时检查节点地址是否为域名、端口是否正确。
开启 TUN 后 DNS 还是可能绕过吗?
可能。不同系统、网卡和应用的 DNS 行为不同;Android 的 Private DNS、浏览器独立 DoH、本地网络 DNS 以及系统多网卡都可能影响结果。应分别对照 TUN、dns-hijack、Private DNS 和浏览器设置。