Mihomo DNS 设置怎么配置?
简答:Mihomo DNS 设置通常修改当前客户端实际加载的 YAML 配置中的 dns 区块。先备份配置,再使用最小配置验证能否启动;如果使用 TUN,再单独检查 dns-hijack、strict-route 和应用自带 DoH。配置后不要只看网页测试结果,还要结合客户端日志、监听端口和实际域名查询判断是否生效。
定义:Mihomo DNS 设置,是通过 YAML 中的 dns 区块控制域名解析、Fake-IP 或 redir-host 模式、解析上游以及节点域名解析路径的配置。
先试这一步:确认配置文件和最小 DNS 区块
本文是第三方使用指南站的通用配置说明,不代表任何客户端或服务的官方入口。Mihomo 的 DNS 配置应放在当前运行配置的顶层 dns: 区块中;如果你使用的是带图形界面的前端,先确认它实际加载的是哪个配置文件,以及是否存在“覆写配置”或“运行时配置”。官方文档说明,dns.enable 为关闭时会使用系统 DNS,listen 用于指定 Mihomo DNS 服务的监听地址和端口。查看 Mihomo DNS 官方参数文档。
| 检查项 | 动作 | 可观察结果 |
|---|---|---|
| 配置入口 | 打开客户端当前使用的 YAML,搜索顶层 dns: | 能找到且没有重复的 DNS 区块 |
| 备份 | 复制原 YAML,另存为备份文件 | 配置失败时可以恢复原文件 |
| 最小验证 | 只加入下方最小配置并重载 | 客户端能启动,日志没有 YAML 或端口错误 |
| 实际生效 | 检查日志、运行配置或 API 返回的配置 | 运行配置中的 DNS 字段与文件一致 |
可先使用以下最小示例。示例中的地址和字段来自 Mihomo 官方配置说明,实际是否适合你的网络环境仍需自行复测;不要直接覆盖整个配置文件,只替换或合并顶层 DNS 区块。
dns:
enable: true
listen: 127.0.0.1:1053
ipv6: false
default-nameserver:
- 223.5.5.5
enhanced-mode: redir-host
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query入口、动作和判定条件如下:打开当前配置文件,确认只保留一个顶层 dns:;保存后使用客户端的配置校验、重载或重启功能;如果启动失败,先恢复备份,再检查缩进、冒号、列表短横线和端口占用。
Fake-IP 和 redir-host 怎么选
enhanced-mode 支持 fake-ip 和 redir-host。官方文档将它们定义为 Mihomo 的两种 DNS 处理模式,默认值为 redir-host。官方字段说明见 DNS configuration。
| 模式 | 工作特点 | 优先排查的问题 |
|---|---|---|
redir-host | 解析结果通常保留真实 IP,兼容性排查更直观 | 规则、上游 DNS、节点域名是否能解析 |
fake-ip | 为域名返回 Fake-IP 映射,通常需要配合过滤列表 | 局域网域名、NTP、STUN、特殊应用是否需要返回真实地址 |
如果你刚开始配置,建议先用 redir-host 验证基础解析,再切换到 fake-ip。切换时只改一个变量,重载后观察同一域名是否还能访问;不要同时修改 DNS 上游、规则和 TUN,否则出现问题时无法判断原因。
使用 fake-ip 时,可以从最小过滤项开始:
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-filter-mode: blacklist
fake-ip-filter:
- '*.lan'
- '*.local'官方文档说明,fake-ip-filter 支持域名通配以及域名集合;如果某个局域网设备、打印机、路由器或特殊应用在 Fake-IP 下异常,应将其实际域名加入过滤列表后再复测,而不是盲目关闭全部 DNS 功能。查看 fake-ip-filter 和过滤模式说明。
这些 DNS 字段分别做什么
default-nameserver:用于解析 DNS 服务器自身的域名。官方说明该字段通常需要填写 IP,也可使用加密 DNS 形式。nameserver:普通域名解析使用的默认上游。fallback:备用解析上游;启用后还会受到fallback-filter等条件影响。nameserver-policy:按域名、域名集合或规则集合指定解析服务器,优先级高于普通nameserver和fallback。proxy-server-nameserver:专门用于解析代理节点域名。节点域名无法解析时,优先检查这一字段及其对应上游。direct-nameserver:用于直连出口的域名解析;留空时会继续跟随其他 DNS 配置。respect-rules:让 DNS 请求遵循路由规则。官方说明,启用后通常需要配置proxy-server-nameserver,否则可能出现解析请求等待自身代理节点解析的循环。
一个更适合排查节点域名的示例可以这样写:
dns:
enable: true
listen: 127.0.0.1:1053
respect-rules: true
default-nameserver:
- 223.5.5.5
nameserver:
- https://doh.pub/dns-query
proxy-server-nameserver:
- https://dns.alidns.com/dns-query这个示例只展示字段关系,不代表固定的最佳组合。若启用后节点域名仍无法解析,先临时将 respect-rules 改为 false,确认基础 DNS 是否恢复;如果恢复,再检查规则和 proxy-server-nameserver,不要直接增加大量备用上游。
使用 TUN 时,DNS 设置还要检查什么
TUN 不是 DNS 配置的替代品。使用 TUN 时,Mihomo 还可能通过 dns-mode 和 dns-hijack 处理系统发往 53 端口的请求。官方文档列出 disabled、native 和 hijack 三种 DNS 模式,并说明 Windows、macOS 不能自动劫持发送到本地网络的 DNS 请求;Android 启用 Private DNS 时也可能无法自动劫持。查看 Mihomo TUN 官方文档。
基础 TUN 示例:
tun:
enable: true
auto-route: true
dns-mode: hijack
dns-hijack:
- any:53
- tcp://any:53按以下顺序验证:第一,确认客户端确实启用了 TUN;第二,确认 DNS 区块本身已启用;第三,观察日志中是否出现 DNS 请求;第四,分别测试普通域名、节点域名和局域网域名。若普通域名可用但节点域名失败,检查 proxy-server-nameserver;若局域网设备打不开,检查 fake-ip-filter、系统局域网路由和本地 DNS;若只有某个浏览器绕过设置,检查浏览器的安全 DNS 或应用自带 DoH。
官方文档还指出,strict-route 在 Windows 上用于阻止普通多宿主 DNS 解析造成的泄漏,但也可能影响 VirtualBox 等特定应用;因此修改前要记录原值,出现局域网或虚拟机异常时先回滚验证。
配置不生效、启动失败和连接异常:按现象分流
| 现象 | 先检查 | 修复与复测 |
|---|---|---|
| 启动失败 | YAML 缩进、字段拼写、重复 dns:、监听端口 | 恢复备份,只保留最小 DNS 区块,再逐项加回 |
| 配置改了但无变化 | 客户端是否加载了另一份配置或覆写文件 | 查看运行配置或 API 返回值,确认重载真正完成 |
| 节点域名解析失败 | proxy-server-nameserver、respect-rules 和节点域名本身 | 临时关闭 respect-rules,再单独恢复节点解析字段 |
| 局域网设备打不开 | fake-ip、*.lan、*.local 和本地路由 | 加入必要过滤项,重载后重新访问设备域名 |
| 怀疑 DNS 没有按 Mihomo 处理 | 系统 DNS、浏览器 DoH、TUN 劫持和日志 | 关闭应用自带 DoH 进行对照测试,并查看 DNS 请求日志 |
如果客户端提供 API,官方 API 文档列出了读取当前运行配置的 /configs 接口,以及重载配置的 PUT /configs?force=true 方法;实际调用前请确认你的客户端开启了外部控制器并设置了访问凭据,不要把真实密钥写进公开文章或截图。查看 Mihomo API 官方文档。
复测建议保持变量最少:先访问一个普通域名,再测试节点域名,最后测试局域网域名;每次只修改一个字段。若仍然异常,恢复原 YAML、关闭 TUN 或恢复原 DNS 模式,确认问题是否由本次 DNS 修改引入。
结论:一套稳妥的配置顺序
- 确认客户端当前加载的配置文件,并备份原 YAML。
- 先用
enable、listen、default-nameserver、nameserver和redir-host验证基础解析。 - 基础解析正常后,再按需要切换
fake-ip,并补充局域网或特殊应用过滤项。 - 使用 TUN 时,再检查
dns-mode、dns-hijack和strict-route的边界。 - 最后用运行配置、日志和分类型域名测试确认生效;出现启动失败时优先回滚,而不是继续叠加字段。
如果你只是想解决“连不上”或“解析慢”,不必一次性启用所有高级字段。Mihomo DNS 的排查重点是先证明配置被加载,再证明请求经过预期路径,最后才调整 Fake-IP、规则和 TUN。
常见问题
Mihomo 的 DNS 配置应该写在哪里?
写在当前运行配置的顶层 dns: 区块中。图形客户端可能存在配置覆写或运行时配置,因此应先确认实际加载的 YAML,再修改并重载。
Fake-IP 和 redir-host 哪个更适合新手?
建议先用 redir-host 验证基础解析和规则,再根据 TUN 或应用兼容性需要切换到 fake-ip。使用 fake-ip 时,要准备处理局域网域名和特殊应用的过滤问题。
为什么启用 respect-rules 后节点连不上?
respect-rules 会让 DNS 请求遵循路由规则。若代理节点域名也需要解析,通常还要配置 proxy-server-nameserver;否则可能出现节点域名无法解析或解析链路循环。
配置改完后为什么看起来没有生效?
常见原因是修改了未被客户端加载的文件、存在覆写配置、只保存未重载,或旧 DNS 缓存仍在。检查运行配置和日志,必要时重载或重启,并按普通域名、节点域名、局域网域名分别复测。
TUN 开启后还需要配置 dns-hijack 吗?
是否需要取决于 TUN 的 dns-mode、系统和客户端环境。官方文档说明 Windows、macOS 对本地网络 DNS 的自动劫持存在限制,Android 的 Private DNS 也可能阻止劫持,因此不能只看配置文件,需要结合日志和实际请求验证。