Mihomo DNS怎么设置?从基础配置到连接排查
简答:Mihomo DNS设置的核心是:把dns放在配置文件顶层,先启用基础解析,再根据是否使用TUN选择Fake-IP和DNS劫持。建议先备份并合并下面的最小配置,重载后查看运行配置与日志;如果仍打不开网页,再按节点域名、端口、Fake-IP和系统DoH逐项排查。
定义:Mihomo DNS配置是内核对域名查询、上游DNS、Fake-IP或redir-host返回方式,以及TUN流量接管规则的统一设置。
先做这三步:备份、合并、确认运行配置
本站是第三方使用指南站,不代表任何客户端或订阅服务的官方页面。本文按 2026-11-03 检索到的 Mihomo 文档整理,字段是否可用仍取决于当前内核版本、客户端合并方式和配置上下文。
- 备份:先复制当前配置文件,保留原文件作为回滚版本。不要直接用一段DNS配置覆盖整份订阅配置。
- 合并:把下面的
dns:段放在YAML顶层,与proxies:、proxy-groups:、rules:保持同级。已有dns:段时,应逐项合并,而不是重复写两个顶层dns:。 - 应用:使用客户端提供的配置校验、重载或重启功能。成功后查看客户端展示的运行配置、DNS状态或日志,确认不是只修改了订阅原文。
官方文档将dns.enable定义为是否启用 Mihomo DNS;关闭时会使用系统DNS。Mihomo DNS配置文档同时说明,listen是DNS服务监听地址,支持UDP和TCP。
| 现象 | 先检查 | 处理方向 |
|---|---|---|
| 配置加载失败 | 缩进、重复顶层字段、字段拼写 | 恢复备份,逐项加回配置 |
| 节点域名解析失败 | default-nameserver和proxy-server-nameserver | 先使用纯IP形式的引导DNS,再检查节点域名解析 |
| 网页打不开 | Fake-IP、规则、TUN和浏览器DoH | 先关闭TUN或切换redir-host做对照测试 |
| 局域网设备异常 | fake-ip-filter、局域网网段和监听地址 | 为局域网域名保留真实IP,避免开放监听 |
基础DNS配置:先用保守模板验证
如果你只是想让 Mihomo 接管域名解析,可以先从以下片段开始。它没有把监听地址绑定到所有网卡,适合先在本机验证;端口是否被客户端占用,要以当前运行环境为准。
dns:
enable: true
listen: 127.0.0.1:1053
default-nameserver:
- 223.5.5.5
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
enhanced-mode: redir-host
default-nameserver用于解析其他DNS服务器的域名。官方说明要求它可以使用IP,也可以使用加密DNS;为了减少引导解析依赖,初始配置优先使用纯IP地址。nameserver是常规域名解析服务器,支持UDP、TCP、DoT、DoH和DoQ等类型,具体格式以Mihomo DNS类型文档为准。
这里选择127.0.0.1:1053只是较保守的本机监听示例,不等于所有客户端都必须使用这个端口。如果客户端已经占用1053,或者客户端要求由界面生成DNS监听配置,应改用未占用端口或按客户端界面设置。不要把0.0.0.0:1053当作新手默认值,因为它可能让其他网络接口也能访问该DNS服务;监听范围和防火墙影响需要单独核对。
如果已有dns:段,不要机械复制整段。保留已有的nameserver-policy、proxy-server-nameserver等字段,再根据需要补充缺少项。一个配置文件中重复的同级键可能导致后面的内容覆盖前面的内容,最终行为应以客户端显示的运行配置为准。
Fake-IP和redir-host怎么选
enhanced-mode控制 Mihomo DNS返回地址的处理方式。官方文档列出的可选值是fake-ip和redir-host,默认值为redir-host。
| 模式 | 基本行为 | 更适合的情况 | 需要留意 |
|---|---|---|---|
redir-host | 返回解析得到的真实IP | 先验证兼容性、局域网较多或应用对真实地址更敏感 | 部分分流和域名识别场景可能不如Fake-IP直接 |
fake-ip | 为域名分配Fake-IP映射,再由内核关联原域名 | 需要更稳定地按域名分流,且应用兼容Fake-IP | 局域网、游戏平台、推送或特殊应用可能需要过滤 |
切换到Fake-IP时,可以先加入最小过滤项:
dns:
enable: true
listen: 127.0.0.1:1053
enhanced-mode: fake-ip
fake-ip-filter-mode: blacklist
fake-ip-filter:
- '*.lan'
- 'localhost'
官方文档说明,fake-ip-filter用于指定不接收Fake-IP映射的域名,并支持通配符;fake-ip-filter-mode可使用blacklist、whitelist或rule。不要一次加入大量未经确认的例外,否则很难判断到底是DNS、规则还是应用自身解析导致问题。假如某个局域网设备只能通过主机名访问,可先把其域名后缀加入过滤列表,再重新连接。
nameserver、fallback和分流字段分别做什么
这些字段不是同一个层级,建议按“谁需要解析、使用什么上游、是否按域名分流”来理解。
default-nameserver:为DNS服务器域名等引导解析提供解析器。它不是普通网页请求的唯一上游。nameserver:默认域名解析服务器,负责常规查询。fallback:备用解析服务器。官方说明中,配置后会启用相应的备用结果筛选逻辑,具体是否采用备用结果还受fallback-filter影响。nameserver-policy:按域名、通配符或规则集指定解析服务器,优先级高于普通nameserver和fallback查询。proxy-server-nameserver:专门用于解析代理节点域名。官方文档提醒,启用DNS连接遵循路由规则的场景时,需要考虑该字段,否则可能出现“解析代理节点需要代理、代理又依赖节点解析”的循环。direct-nameserver:用于直连出口的域名解析;是否遵循nameserver-policy由direct-nameserver-follow-policy控制。
如果你没有明确的分流需求,不建议一开始同时加入fallback、复杂规则集、respect-rules和多个策略字段。先确认基础DNS能正常工作,再一次增加一个字段,并在每次修改后重载和复测。
需要注意,DoH或DoT只是DNS传输方式,不等于自动开启代理,也不等于所有应用都会使用 Mihomo DNS。浏览器内置DoH、应用自带解析、系统私有DNS以及部分基于HTTPS的解析请求,都可能绕过普通UDP 53端口。此时应在浏览器或应用设置中关闭其独立解析,或按实际需求配置,而不是只修改nameserver。
TUN模式下怎么设置DNS劫持
TUN和DNS是两个相关但不同的层次:dns:定义 Mihomo 内部如何解析;tun:决定系统流量如何进入内核。官方文档建议普通用户使用顶层TUN配置,并将dns-hijack作为把匹配到的DNS连接导入内部DNS模块的字段。
tun:
enable: true
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
上面只是TUN接管示例,不代表所有平台都能直接照抄。官方说明中,dns-mode的可选值为disabled、native和hijack:disabled不设置系统DNS,native把TUN地址设置为系统DNS,hijack则在此基础上拦截其他接口发往53端口的流量。Windows使用hijack需要strict-route,Linux相关自动重定向场景需要auto-redirect;这不是所有系统都必须开启的统一组合。详情应以Mihomo TUN配置文档中对应平台说明为准。
因此,tun.dns-mode和tun.dns-hijack不要混为一谈:前者描述系统DNS如何设置,后者描述哪些DNS连接被导入内部模块。某些客户端还可能提供额外的界面覆写项,最终运行行为不能只根据订阅原文判断。
安全上,先保持DNS监听绑定到本机或明确的局域网地址。只有在你确实要给其他设备提供DNS服务、并已配置访问控制和防火墙时,才考虑扩大监听范围。
修改后如何验证、复测与回滚
- 先看配置状态:在客户端执行配置校验或重载。若报YAML错误,优先检查缩进、冒号、列表短横线、重复顶层键和字符串引号。
- 再看运行配置:确认运行配置中确实存在
dns.enable、enhanced-mode和实际监听地址。订阅原文存在某字段,不代表客户端最终启用了它。 - 测试本机解析:在系统终端使用系统自带的DNS查询工具,指定本机监听地址和端口进行查询;如果客户端没有开放可查询的本地端口,就使用客户端内置DNS测试或日志查看请求是否进入内核。命令格式会因系统工具不同而变化,不要把某个平台命令直接复制到其他系统。
- 清理缓存:修改Fake-IP、上游DNS或TUN后,重启 Mihomo 和受影响的浏览器、应用;必要时清理系统DNS缓存。否则旧缓存可能让你误判新配置未生效。
- 做对照测试:先关闭TUN,仅保留普通系统代理;再切换
fake-ip与redir-host。如果只有Fake-IP失败,重点检查过滤列表;如果只有TUN失败,重点检查权限、路由、dns-hijack和平台条件。 - 回滚:出现全局无法联网、局域网异常或核心启动失败时,恢复备份文件,关闭TUN,重启客户端,再逐项加回配置。
不要把“能打开一个网页”当成DNS已经完全生效。至少应分别验证:普通域名解析、节点域名解析、直连网站、代理规则命中和局域网地址。Mihomo官方还提供DNS解析流程说明,可结合DNS解析流程文档理解不同查询路径。
常见故障排查
节点域名无法解析
先检查default-nameserver是否为可用的引导解析器,再检查节点域名是否被错误地交给需要代理的解析路径。若配置了proxy-server-nameserver,确认该字段中的上游能在当前网络下建立连接。不要仅凭网页打不开判断节点失效。
开启Fake-IP后部分应用异常
先切换回redir-host做对照。如果问题消失,再为具体局域网域名、设备域名或应用要求真实地址的域名增加fake-ip-filter例外。不要直接关闭全部DNS功能,因为这会让系统回到自己的解析路径。
开启TUN后没网
先关闭TUN恢复网络,再检查系统权限、路由、网络接口选择和防火墙。Windows重点确认strict-route与DNS劫持条件;Linux重点确认auto-route和需要时的auto-redirect。这些选项的适用范围以官方TUN文档为准。
怀疑DNS泄露
先确认系统DNS是否已指向 Mihomo、TUN是否真正接管53端口,再检查浏览器DoH、系统私有DNS和应用自带解析。若浏览器仍使用独立DoH,仅修改 Mihomo 的nameserver无法改变浏览器的解析路径。
局域网设备打不开
先关闭TUN或切回redir-host验证,再检查局域网网段、主机名和fake-ip-filter。同时确认DNS监听没有误绑定到外部接口,避免把本机DNS服务暴露给不需要访问的网络。
常见问题
Mihomo DNS配置应该放在哪里?
放在配置文件顶层的dns字段中,与proxies、proxy-groups、rules等保持同级。已有dns字段时应合并内容,不要重复写两个顶层dns,也不要用DNS片段覆盖整份订阅配置。
default-nameserver和nameserver有什么区别?
default-nameserver主要用于解析DNS服务器等引导域名;nameserver是普通域名查询使用的默认上游。前者解决“先找到DNS服务器”,后者负责日常域名解析。
dns-mode和dns-hijack是不是一回事?
不是。dns-mode描述系统DNS如何设置,可选disabled、native和hijack;dns-hijack描述哪些DNS连接被导入 Mihomo 内部DNS模块。两者都属于TUN相关设置,但作用层次不同。
Fake-IP一定比redir-host好吗?
不一定。Fake-IP更适合需要按域名分流且应用兼容的场景;redir-host返回真实IP,通常更适合作为兼容性验证起点。遇到局域网或特殊应用异常时,可以先切回redir-host做对照。
为什么改了nameserver,浏览器还是没有使用 Mihomo DNS?
浏览器可能启用了独立DoH,或者系统、应用使用了自己的解析机制。需要同时检查浏览器DoH、系统私有DNS、TUN接管和客户端运行配置,不能只看订阅原文。
Mihomo DNS监听为什么不建议直接写0.0.0.0?
0.0.0.0表示监听多个网络接口,可能让局域网或其他可达网络访问该DNS端口。除非你明确需要为其他设备提供服务并已配置防火墙,否则先绑定本机地址进行验证。
相关阅读
- 继续看 Clash Verge Rev 的 DNS 覆写开关和排错步骤
- 遇到启动或连接报错,可按日志、端口和DNS分层排查
- 如果开启TUN后没网,查看这份恢复网络与分层排查指南
- 网页仍打不开时,按全部、部分和单站点继续定位