月神云 - 全终端加速服务

Mihomo DNS配置后断网?基础版、Fake-IP与TUN排查

更新于 2026-10-24 · moontoday.store

简答:只用系统代理时先配置redir-host基础版;需要接管更多应用时再考虑Fake-IP与TUN。修改当前生效的YAML后重载,并用指定端口的nslookup或dig确认Mihomo确实收到DNS请求。

定义:Mihomo DNS配置,是在YAML的dns字段中定义监听地址、解析模式、上游DNS、域名分流和节点域名解析方式。

先按场景选方案:不要一开始就启用全部功能

只使用系统代理时,先选redir-host;需要让更多应用经过Mihomo时,再考虑fake-ip配合TUN。遇到局域网打不开或系统联网检测异常,先回退到基础版,不要同时修改DNS、路由和规则。

开始配置前的选择速查
使用场景建议方案先改哪些字段出现问题先怎么退回
浏览器或系统代理redir-host基础版enable、listen、nameserver删除分流和TUN,只保留基础DNS
需要接管更多应用Fake-IP加TUNenhanced-mode、dns-hijack、auto-route关闭TUN或改回redir-host
局域网域名打不开保留当前模式并加过滤fake-ip-filter删除新增过滤项,逐条恢复
代理节点域名解析失败单独配置节点DNSproxy-server-nameserver先检查节点域名和直连可达性

本文与Mihomo项目及其开发者无隶属关系。字段含义以Mihomo DNS配置文档和Mihomo TUN配置文档为准。

基础版YAML:先让DNS监听和解析跑通

先打开客户端当前生效的YAML配置,而不是只修改订阅原文。不同客户端可能有订阅文件、覆写文件或本地配置;重载后如果dns:消失,说明修改位置没有进入最终配置。

dns:
  enable: true
  listen: 127.0.0.1:1053
  ipv6: false
  enhanced-mode: redir-host
  default-nameserver:
    - 192.168.1.1
  nameserver:
    - 223.5.5.5
  • 192.168.1.1是局域网DNS示例,请替换为当前网络实际可达的路由器或DNS地址。
  • 223.5.5.5是示例公共DNS,不代表所有网络都能稳定访问;不可达时请替换为已验证可用的地址。
  • listen是Mihomo DNS监听地址;这里仅监听本机回环地址,适合先做本机验证。
  • ipv6: false会让AAAA查询返回空结果。依赖IPv6的网络不要照抄关闭,应改为true并分别测试A和AAAA记录。
  • enhanced-mode可填写fake-ip或redir-host,官方文档列出的默认模式为redir-host。

基础版的目标不是一次解决所有分流,而是确认配置能启动、DNS端口能监听、普通域名能返回结果。相关字段可逐项对照Mihomo DNS配置文档。

Fake-IP与TUN:需要接管更多流量时再启用

redir-host更接近普通DNS解析结果;fake-ip会为域名分配虚拟地址,常用于需要TUN接管更多应用流量的场景。Fake-IP不是必选项,遇到局域网、办公软件或系统联网检测异常时,先改回redir-host做单变量对照。

dns:
  enable: true
  listen: 127.0.0.1:1053
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter-mode: blacklist
  fake-ip-filter:
    - '*.lan'
    - '*.local'
    - localhost

tun:
  enable: true
  stack: system
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
    - tcp://any:53

这是最小示例,不代表所有客户端都使用相同的开关位置。stack: system用于减少变量;如果系统防火墙阻止核心进程,需按操作系统放行,具体以Mihomo TUN配置文档说明为准。

dns-hijack会把匹配的DNS请求导入内部DNS模块,但Windows和macOS不能自动劫持发往局域网的DNS请求;Android启用Private DNS时也可能无法自动劫持。若使用listen: 0.0.0.0:1053,它会监听所有网络接口,应同时限制防火墙或仅在可信局域网使用;新手优先保留127.0.0.1。

DNS分流:先理解三个解析角色

Mihomo常用DNS字段对照
字段作用什么时候配置
default-nameserver解析DNS服务器自身的域名加密DNS使用域名时,配置可直达的地址
nameserver普通域名的默认解析服务器基础配置必先跑通
nameserver-policy按域名或规则集指定解析服务器需要局域网、办公域名等分流时使用
fallback备用解析服务器确认确有备用解析需求后再加
proxy-server-nameserver只解析代理节点域名节点域名解析失败或出现自举问题时使用
direct-nameserver直连出口使用的DNS直连流量需要独立DNS路径时使用

nameserver-policy的优先级高于普通的nameserver和fallback查询;fallback启用后,官方文档说明会默认启用fallback-filter并使用CN作为默认地理判断代码。是否需要这些行为,应按你的网络现象决定,不要把完整模板全部复制。字段说明见Mihomo DNS配置文档。

dns:
  enable: true
  listen: 127.0.0.1:1053
  enhanced-mode: redir-host
  default-nameserver:
    - 192.168.1.1
  nameserver-policy:
    '+.lan': 192.168.1.1
    'rule-set:local-domains': 192.168.1.1
  nameserver:
    - https://dns.example.invalid/dns-query

rule-providers:
  local-domains:
    type: file
    behavior: domain
    path: ./rules/local-domains.yaml

上例中的192.168.1.1请替换为可达的本地DNS;dns.example.invalid是不可用的占位域名,必须替换为已确认可访问的DoH地址。使用rule-set:local-domains时,还要保证规则提供者名称完全一致。

payload:
  - '+.lan'
  - '+.local'

behavior: domain只适合域名格式的规则集;规则提供者类型和行为枚举可核对Mihomo Rule-Providers文档。不确定规则集是否加载成功时,先删除rule-set分流,避免把DNS启动问题和规则问题混在一起。

验证步骤:Windows、macOS、Linux和Android分别怎么看

  1. Windows检查监听:在PowerShell执行Get-NetTCPConnection -LocalPort 1053 -ErrorAction SilentlyContinue和Get-NetUDPEndpoint -LocalPort 1053 -ErrorAction SilentlyContinue。把1053替换为你的端口;能看到记录才表示对应协议已绑定。Resolve-DnsName没有-Port参数,不能拿它测试1053端口。
  2. Windows指定端口解析:执行nslookup -port=1053 example.com 127.0.0.1。将example.com替换为待测域名,将127.0.0.1替换为实际监听地址;返回Address记录说明该次查询获得了结果,超时或拒绝连接则先看监听、端口占用和客户端日志。
  3. macOS和Linux:终端执行dig @127.0.0.1 -p 1053 example.com。示例域名请替换;重点看是否出现status: NOERROR以及Answer区是否有记录。若系统没有dig,先安装系统提供的DNS诊断工具,或改用客户端日志验证。
  4. Android:先确认客户端的TUN开关、VPN权限和Private DNS状态,再在客户端日志或连接详情中确认DNS请求是否被接管。Android启用Private DNS时,官方文档提示DNS请求可能无法自动劫持。
  5. 检查Fake-IP:查询普通域名后,若返回地址落在配置的fake-ip-range,说明Fake-IP映射可能生效;若局域网域名也被映射并导致设备不可达,将该后缀加入fake-ip-filter后重载。
  6. 检查分流:只看“能解析”不足以证明策略命中。应在Mihomo日志或调试面板查看实际使用的DNS服务器,再用局域网域名和普通公网域名各测试一次。

各平台的配置入口和重载按钮由客户端决定:Windows、macOS和Linux通常是保存当前YAML后重载配置或重启核心;Android通常还要重新授予VPN权限或重新打开TUN。若重载后字段消失,优先检查订阅覆写,而不是继续改命令。

症状→原因→一行修复:TUN和DNS故障速查

先做单变量排查
症状优先怀疑先做的修复
节点全部超时或节点列表空白节点域名无法解析、DNS自举失败检查节点域名;按需加入可直达的proxy-server-nameserver
普通域名也无法解析listen未监听、端口被占用或上游不可达用nslookup -port或dig -p测试,再查看日志
开启TUN后断网路由、DNS劫持、防火墙或权限冲突先关闭TUN或改回redir-host,确认基础DNS后逐项恢复
局域网设备打不开局域网域名被Fake-IP映射把*.lan、*.local或实际后缀加入过滤并重载
配置重载后恢复原样订阅生成文件覆盖了本地修改修改客户端的覆写、合并或本地配置入口
DNS疑似未按分流执行规则集名称、文件格式或匹配写法不一致先删除rule-set,确认基础DNS后再核对behavior: domain

如果要检查DNS泄漏,先在Mihomo关闭后记录系统当前DNS,再开启配置并分别测试直连域名、代理域名和局域网域名;重点对照客户端日志中实际使用的解析服务器。单次解析成功不等于分流或防泄漏已经正确,必须结合监听端口、规则命中和实际DNS记录判断。

截至2026-10-24,本文只按已打开的Mihomo文档字段整理,不对客户端封装版本、未核实的字段兼容性或具体DNS服务可用性作保证。若客户端提示字段未知,先更新到客户端或核心的官方发布版本,再重新核对配置。

不同系统的重载与安全检查

  • Windows:保存配置后点击客户端的重载或重新加载配置;若使用stack: system,同时检查防火墙是否允许核心进程。
  • macOS:保存后重载配置;如果使用TUN,注意网卡名称和系统权限,Mihomo文档指出macOS的TUN设备名需符合系统要求。
  • Linux:保存后重载核心;涉及auto-redirect时,确认已启用auto-route,并检查iptables或nftables规则。
  • Android:重新确认VPN权限、TUN开关、Private DNS和应用分流范围;不要把Android专用包名过滤规则直接复制到其他系统。

如果DNS只供本机使用,优先监听127.0.0.1。只有明确需要局域网设备访问时才考虑监听其他地址,并同步设置防火墙和访问范围;Mihomo入站文档也提醒,监听地址会影响服务是否可被其他网络接口访问。

常见问题

Mihomo DNS配置应该从哪里修改?

先打开客户端当前生效的YAML配置,找到dns字段后修改并重载。若重载后内容恢复,通常是订阅生成、覆写或合并配置覆盖了本地文件。

fake-ip和redir-host应该怎么选?

只使用系统代理时先选redir-host;需要TUN接管更多应用时再考虑fake-ip。遇到局域网不可达、系统联网检测异常或应用不兼容,先回退到redir-host对照。

Windows如何测试Mihomo的1053端口?

使用nslookup -port=1053 example.com 127.0.0.1,其中域名、端口和监听地址按配置替换。不要给Resolve-DnsName添加-Port参数,因为该命令不支持这个参数。

nameserver-policy为什么没有生效?

检查域名通配格式、rule-set名称、rule-providers名称和规则文件的behavior是否一致。先移除分流配置确认基础DNS正常,再逐项恢复并查看Mihomo日志中的实际DNS服务器。

Mihomo开启TUN后断网怎么办?

先关闭TUN或把enhanced-mode改回redir-host,确认基础DNS和代理节点域名都能解析,再逐项恢复auto-route、dns-hijack和Fake-IP;同时检查权限、防火墙和端口占用。

ipv6要不要设置为false?

不应默认关闭。官方文档说明关闭后AAAA查询会返回空结果;如果网络或办公系统依赖IPv6,应改为true并分别测试A、AAAA解析。

相关阅读

参考资料

  1. Mihomo DNS configuration
  2. Mihomo TUN configuration
  3. Mihomo Rule-Providers
  4. Mihomo Inbound configuration