Mihomo DNS设置怎么配?从最小配置到连接排查
简答:Mihomo DNS设置建议先备份当前配置,在最终生效的YAML中修改dns段,再重载配置并用nslookup或dig验证。新手可先启用DNS、填写listen和nameserver;遇到节点域名解析失败,再补充proxy-server-nameserver;Fake-IP与redir-host按TUN、局域网和应用兼容性选择。
定义:Mihomo DNS配置是通过配置文件中的dns字段,控制域名解析服务器、解析模式、节点域名解析、分流策略及本地DNS监听的设置。
先试这一步:复制最小DNS配置并验证
本文是第三方使用指南,不代表任何客户端或服务的官方页面。先找到当前客户端实际加载的配置文件或配置编辑入口,备份原文件,再只替换或合并dns:段。不同前端可能把订阅、覆写、Merge或运行配置分开显示,最终应以“当前运行配置”中的内容为准。
下面是一份便于排查的最小示例。127.0.0.1:1053只是示例监听地址,若客户端已经占用该端口,应改成其他未被占用的端口;DoH地址也可以按所在网络环境替换。
dns:enable: truelisten: 127.0.0.1:1053ipv6: falseenhanced-mode: redir-hostdefault-nameserver:- 1.1.1.1- 8.8.8.8nameserver:- https://1.1.1.1/dns-query- https://8.8.8.8/dns-queryproxy-server-nameserver:- 1.1.1.1
成功判据:配置校验通过、客户端重载后没有端口或YAML错误;启用DNS监听后,访问一个平时能打开的域名,再用nslookup example.com 127.0.0.1或dig @127.0.0.1 -p 1053 example.com测试。若你的监听端口不同,应同步替换命令中的端口。
官方文档说明,enable: false时会使用系统DNS;listen提供UDP和TCP监听;default-nameserver用于解析DNS服务器域名,且需要填写IP或可用的加密DNS地址。可参考Mihomo DNS配置文档。
Mihomo DNS字段怎么选:一张表看懂
| 字段 | 作用 | 初始建议 | 出现问题时先查什么 |
|---|---|---|---|
enable | 是否启用Mihomo DNS | true | 是否被订阅覆写或合并配置关闭 |
listen | 本地DNS服务监听地址和端口 | 只监听本机的未占用端口 | 端口冲突、系统或其他程序占用 |
default-nameserver | 解析DNS服务器域名的引导DNS | 填写可用IP | DoH域名无法启动或引导解析失败 |
nameserver | 默认域名解析服务器 | 填写一到两个可用DNS | 普通域名无法解析或响应慢 |
nameserver-policy | 按域名或规则指定解析服务器 | 有明确分流需求再加 | 规则优先级和通配符是否正确 |
fallback | 备用解析服务器 | 先不加,确认需求后再加 | 备用结果是否与筛选条件冲突 |
proxy-server-nameserver | 只解析代理节点域名 | 节点域名解析失败时补充 | 节点域名是否能单独解析 |
direct-nameserver | 为直连出口指定解析服务器 | 有直连分流需求再用 | 是否绕过了预期的nameserver-policy |
nameserver-policy的优先级高于普通nameserver和fallback查询,并支持域名通配;proxy-server-nameserver只用于解析代理节点域名,留空时会沿用其他DNS配置。上述字段定义以Mihomo官方DNS字段说明为准。
Fake-IP、redir-host、TUN和局域网怎么搭配
enhanced-mode目前可选fake-ip或redir-host,官方文档标注默认值为redir-host。不要因为看到别人配置了Fake-IP就直接照抄,应先看是否启用了TUN、是否需要兼容局域网设备,以及应用是否依赖真实IP。
- 优先选择
redir-host:适合先确认DNS链路是否正常,改动较少,适合作为基础排障起点。 - 考虑
fake-ip:适合需要让Mihomo对域名解析结果进行统一接管的场景,但应同步检查Fake-IP过滤列表和TUN行为。 - 局域网、NAS、打印机异常:把局域网域名后缀或明确的内网域名加入
fake-ip-filter,例如*.lan,并确认局域网DNS地址可访问。不要把整个局域网网段随意加入复杂规则,先用单个域名验证。 - IPv6异常:如果系统或网络没有稳定的IPv6路径,可暂时将
ipv6设为false进行对比;这会让AAAA查询返回空结果,不应视为永久修复。
官方说明中,fake-ip-filter用于排除不下发Fake-IP映射的地址,支持域名通配;fake-ip-range还会作为TUN默认IPv4地址的参考。TUN本身应结合客户端权限、路由和DNS接管一起检查,入口可参考Mihomo TUN配置文档。
| 现象 | 先试的模式 | 判断标准 |
|---|---|---|
| 普通网页打不开,想先确认解析 | redir-host | 重载后普通域名可解析,节点状态不受影响 |
| TUN接管后部分应用无法连接 | 先回退到redir-host | 若恢复,继续检查Fake-IP过滤和DNS劫持 |
| NAS或打印机按域名访问失败 | fake-ip配合过滤项,或暂时使用redir-host | 内网域名和IP访问结果是否一致 |
DNS不生效、节点连不上:按现象排查
- 配置改了但没有变化:先确认编辑的是当前运行配置,而不是订阅原文或未加载的本地副本。检查Merge、Script、订阅覆写和面板生成配置,搜索最终配置中是否仍存在唯一的
dns:段。 - 配置重载报YAML错误:检查缩进、冒号、引号和列表短横线;先删除新增的
nameserver-policy或复杂规则,只保留最小配置,再逐项加回。 - 提示端口被占用:把
listen改成未占用端口,并同步修改系统DNS、TUN或客户端的DNS转发入口。不要同时让多个程序监听同一个地址和端口。 - 网页能开但节点域名解析失败:单独检查
proxy-server-nameserver。官方定义中,它只用于解析代理节点域名;如果为空,才会跟随其他DNS字段。节点域名、普通网页域名和直连域名不是同一条测试链路。 - 启用
respect-rules后DNS失败:官方说明该选项会让DNS连接遵循路由规则,并要求配置proxy-server-nameserver;建议先关闭它确认基础解析,再补齐节点域名解析配置。 - 浏览器能打开但命令行测试异常:检查浏览器是否启用了独立的安全DNS或DoH。浏览器可能绕过系统DNS,因此应分别测试浏览器、系统和Mihomo监听地址。
- 出现DNS泄露担忧:先关闭浏览器独立DoH,确认系统DNS指向预期的本地监听,再检查TUN或系统代理是否实际接管。不要只凭网页检测一次结果下结论,应在关闭和开启客户端两种状态下对比。
回滚方法:停止客户端,恢复备份配置,撤销系统DNS或TUN改动,再重新启动并测试普通域名、内网域名和节点域名三类结果。每次只改一个变量,才能判断究竟是解析服务器、解析模式还是路由接管造成问题。
配置前后的安全与兼容提醒
- 不同Mihomo内核、前端和订阅覆写方式可能导致字段入口不同;如果界面没有直接显示某字段,应以最终运行配置和当前版本文档为准。
- 不要把未经确认的DNS地址、节点域名或证书校验选项直接加入配置;尤其不要为了“能连上”长期关闭TLS证书校验。
fake-ip-ttl官方文档建议非必要不要修改;prefer-h3与respect-rules组合也有兼容性提醒,遇到DNS连接异常时先回到基础配置。- 测试时记录修改前后的配置片段、客户端日志、测试域名和命令输出,便于复现和回滚。
如果你只是希望先让Mihomo完成基本解析,建议顺序是:备份配置→启用DNS→设置本地监听→填写default-nameserver和nameserver→重载→测试→再考虑Fake-IP、规则DNS和TUN接管。
常见问题
Mihomo DNS配置一般写在哪里?
写在当前运行配置的dns段中,但具体入口取决于前端。订阅、Merge、Script和本地配置可能共同生成最终配置,因此不能只看订阅原文;应在客户端的最终配置或运行配置中确认。
Mihomo的nameserver和proxy-server-nameserver有什么区别?
nameserver是普通域名的默认解析服务器;proxy-server-nameserver只用于解析代理节点域名。普通网页能解析而节点域名失败时,应优先检查后者。
Fake-IP和redir-host怎么选?
想先排查基础DNS、兼容局域网或减少变量时,可先用redir-host;需要TUN统一接管和更细的域名处理时再考虑fake-ip,并同步检查fake-ip-filter。
为什么修改DNS后完全不生效?
常见原因是改错文件、配置被Merge或Script覆盖、客户端没有重载、YAML缩进错误,或系统和浏览器仍在使用自己的DNS。应按最终配置、日志、监听端口和实际查询结果逐层确认。
开启respect-rules后DNS无法解析怎么办?
先临时关闭respect-rules确认基础DNS是否正常;如果确实需要让DNS遵循路由规则,应按照官方说明补充proxy-server-nameserver,并检查节点域名是否能独立解析。