3i云-顶级海外加速平台

Mihomo DNS怎么配置?fake-ip与redir-host怎么选

更新于 2026-11-14 · 3i.mom

简答:Mihomo DNS建议先从 redir-host 开始验证:它更容易排除局域网和应用兼容性问题;确认基础连接正常后,再在 TUN 或透明代理场景切换 fake-ip,并补充 fake-ip-filter。配置前先备份当前 YAML,只修改一个变量,重启 Mihomo 和相关应用后,用 nslookup、dig 或 Mihomo 日志验证是否真正生效。

定义:Mihomo 的 enhanced-mode 是 DNS 处理模式,可选 fake-ip 和 redir-host;当前 Mihomo 文档列出的默认值是 redir-host。

先看结论:不同场景怎么选

如果你只是使用系统代理或桌面客户端,先选 redir-host;如果你使用 TUN、透明代理或需要让规则根据域名识别连接,再测试 fake-ip。不要一开始同时修改 enhanced-mode、DNS 上游、TUN 和规则,否则出现问题时很难判断是哪一项造成的。

使用场景建议起点原因与注意事项
系统代理、浏览器代理redir-host先验证普通域名解析、代理端口和规则是否正常,兼容性排查更直观。
Windows、macOS 桌面端启用 TUN先 redir-host,再测试 fake-ipTUN 会涉及 DNS 接管;Windows 的 hijack 还需要 strict-route,macOS/Windows 不能自动劫持发往本地网络的 DNS 请求。参考 Mihomo TUN 文档。
Linux 路由器或透明代理按现有转发规则测试auto-redirect 只适用于 Linux,并且需要配合 auto-route;DNS 劫持还要确认防火墙和转发规则。
NAS、打印机、路由器管理页通常先用 redir-host,或为 fake-ip 增加排除项局域网域名和管理地址需要返回真实解析结果,不能只排除 *.lan 就结束。

可直接执行的决策:先用 redir-host 验证代理和 DNS,再只把 enhanced-mode 改成 fake-ip;如果局域网、NTP、语音通话或联网检测异常,优先检查过滤规则,而不是立即更换 DNS 服务商。

第1步:备份并确认配置实际来源

  1. 先关闭正在运行的 Mihomo 客户端,或导出当前配置。建议把原文件复制为同目录下的 config.before-dns-2026-11-14.yaml。如果使用命令行启动,先确认启动参数中的配置路径;Linux/macOS 可执行 ps aux | grep -i mihomo,Windows PowerShell 可执行 Get-Process mihomo -ErrorAction SilentlyContinue。
  2. 打开实际生效的 YAML,而不是只修改订阅原文。若客户端存在“Merge”“覆写”“当前配置”或类似功能,应检查最终生成配置中是否保留了 dns: 段;具体菜单名称随客户端版本变化,需以当前界面为准。
  3. 如果配置文件无法加载,常见报错是 yaml: unmarshal errors 或 mapping values are not allowed here,通常表示缩进、冒号或引号错误。先恢复备份,再逐行比较缩进;YAML 建议使用两个空格,不要混用 Tab。

Mihomo 的顶层 dns 用于内部 DNS 模块;顶层 tun 用于系统流量接管。官方文档明确区分了代理端口、TUN 和 listeners,不要把 listener 专用字段直接复制到顶层配置。参考 Mihomo 入站配置文档。

第2步:先放入一份最小 redir-host 配置

下面配置只保留常用字段,DNS 地址使用公共服务示例。全球网络不应盲目照抄某一地区的 DNS:先用能从当前网络稳定访问的 UDP、DoH 或 DoT 地址,失败时再替换上游。

dns:
  enable: true
  listen: 0.0.0.0:1053
  ipv6: false
  enhanced-mode: redir-host
  default-nameserver:
    - 1.1.1.1
    - 8.8.8.8
  nameserver:
    - https://cloudflare-dns.com/dns-query
    - https://dns.google/dns-query
  proxy-server-nameserver:
    - https://cloudflare-dns.com/dns-query

default-nameserver 用于解析 DNS 服务器地址,官方文档要求这里使用 IP 或可用的加密 DNS;nameserver 是普通域名解析上游;proxy-server-nameserver 只负责解析代理节点域名。参考 Mihomo DNS 配置文档。

Cloudflare 官方资料列出 DoH 使用 HTTPS 端口 443;Google 官方资料列出 8.8.8.8、8.8.4.4 和 dns.google 等地址。若某个 DoH 地址在你的网络不可达,可暂时换成可验证的 UDP 或 DoT 地址,但不要同时更改模式和上游。Cloudflare DoH 说明、Google Public DNS 使用说明。

保存后重启 Mihomo。Linux/macOS 可执行 dig example.com @127.0.0.1 -p 1053;Windows PowerShell 可执行 nslookup example.com 127.0.0.1,但若监听端口不是 53,需要在支持端口参数的工具中指定 1053。预期结果是返回 A 或 AAAA 记录,并且 Mihomo 日志不再出现 dial udp、 i/o timeout 或 no such host。

第3步:确认 redir-host 生效后再切换 fake-ip

fake-ip 会为域名返回 fake-IP 映射,Mihomo 再根据映射还原域名并执行规则;它适合需要域名识别和 TUN 接管的场景,但局域网设备、时间同步、语音通话和系统联网检测可能需要返回真实 IP。官方文档说明,fake-ip-range 用于设置 fake-IP 地址池,fake-ip-filter 支持域名通配符和域名集合。参考 fake-ip 字段说明。

dns:
  enable: true
  listen: 0.0.0.0: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'
    - '+.home.arpa'
    - '+.ntp.org'
    - '+.pool.ntp.org'
    - '+.stun.services.mozilla.com'
    - '+.stun.l.google.com'
    - 'connectivitycheck.android.com'
    - 'connectivitycheck.gstatic.com'
    - 'www.msftconnecttest.com'
    - 'captive.apple.com'
    - 'router.lan'
  default-nameserver:
    - 1.1.1.1
    - 8.8.8.8
  nameserver:
    - https://cloudflare-dns.com/dns-query
    - https://dns.google/dns-query
  proxy-server-nameserver:
    - https://cloudflare-dns.com/dns-query

上面的域名是按问题类型示例,不代表所有设备都使用这些域名。局域网设备、NTP、STUN、Windows/macOS/Android 联网检测和特殊应用域名应通过日志或系统工具查到实际名称后再加入。不要把所有域名写成 *,否则可能让 fake-ip 失去作用。

fake-ip-filter-mode 当前文档列出 blacklist、whitelist 和 rule;使用 rule 时,过滤项语法会改为与路由规则相近的写法。除非你已经确认当前核心版本支持并理解规则顺序,否则先使用 blacklist。参考中文 DNS 文档。

切换后依次执行:重启 Mihomo、清理系统 DNS 缓存、完全退出并重新打开浏览器或应用。Windows 可执行管理员 PowerShell 命令 ipconfig /flushdns;macOS 可执行 sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder;Linux 先根据实际解析服务执行 resolvectl flush-caches,若提示 command not found,不要强行套用,改为重启对应的 systemd-resolved、NetworkManager 或本地 DNS 服务。

第4步:节点域名、TUN 和局域网异常怎么排查

  1. 网页能打开但节点连不上:先看节点地址是域名还是纯 IP。若是域名,检查 proxy-server-nameserver 是否能解析该域名;Mihomo 文档说明该字段专门用于代理节点域名解析。若节点使用纯 IP,问题可能不在 DNS,应继续检查端口、协议、路由和防火墙。
  2. 开启 TUN 后所有网页打不开:先关闭 TUN,保留 redir-host 测试系统代理;确认代理端口正常后再开启 TUN。Windows 使用 dns-mode: hijack 时,需要同时确认 strict-route: true;Linux 使用 DNS 劫持时,确认 auto-route 和需要的 auto-redirect 已按官方字段配置。不要把 dns-mode 随意写进不支持它的配置层级。
  3. NAS、打印机或路由器打不开:记录实际访问的域名或 IP,再把对应域名加入 fake-ip-filter,或用 nameserver-policy 指向本地 DNS。若访问的是 IP 地址,检查 tun.route-exclude-address、系统防火墙和局域网网段,而不是只改 DNS。
  4. 语音、视频会议或游戏异常:检查 STUN、NTP 和应用自带域名是否被 fake-ip 处理;同时确认 UDP 是否被 TUN、路由器或防火墙限制。只增加实际命中的域名,不要一次加入大范围通配符。
  5. IPv6 结果异常:ipv6: false 会让 AAAA 查询返回空结果。若网络确实使用 IPv6,应在确认 TUN、上游 DNS 和系统路由都支持后再开启;开启后逐项测试,不要把 IPv6 问题误判为 fake-ip 与 redir-host 的差异。

验证标准应至少包括三项:日志显示请求被当前 Mihomo DNS 接收;nslookup 或 dig 能得到结果;访问一个普通域名、一个节点域名和一个局域网地址时,三者表现符合预期。若只修改了配置但客户端有 Merge 或覆写,最终生效配置仍可能与文件不同。

字段速查:不要把所有 DNS 选项一起改

字段作用排查重点
enable启用 Mihomo DNS 模块关闭后使用系统 DNS。
listenDNS 服务监听地址和端口端口被占用时会启动失败;用系统命令确认监听状态。
default-nameserver解析其他 DNS 服务器地址地址或格式错误会导致 DoH/DoT 上游无法启动。
nameserver普通域名解析上游先确认当前网络能访问该 UDP、DoH 或 DoT 服务。
nameserver-policy按域名或集合选择解析服务器通配符、规则顺序和客户端覆写可能改变结果。
fallback备用解析服务器使用后还要检查 fallback-filter 的判断条件。
proxy-server-nameserver解析代理节点域名节点域名失败时优先单独测试它。
fake-ip-filter指定域名不返回 fake-IP按实际故障域名增加,避免使用过宽规则。

官方文档还指出,fallback-filter.geosite 已属于待弃用字段,新的分流需求优先考虑 nameserver-policy;具体可用字段仍应以当前核心文档和客户端实际版本为准。

本文核对日期

本文按 2026 年 11 月 14 日检索到的 Mihomo 文档整理。Mihomo 核心、客户端界面和订阅覆写方式可能变化;如果某个字段在当前客户端报 unknown field、cannot unmarshal 或配置加载失败,应先恢复备份,再对照当前版本文档确认字段归属。

常见问题

Mihomo DNS 配置应该写在哪里?

写在实际生效配置的顶层 dns 段。若客户端使用订阅、Merge 或覆写,必须检查最终配置,而不能只修改远程订阅原文;菜单名称和合并规则以当前客户端版本为准。

fake-ip 和 redir-host 哪个更好?

没有对所有环境都更好的模式。系统代理或刚开始排障时先用 redir-host;TUN、透明代理或需要域名规则识别时,再测试 fake-ip,并为局域网、NTP、STUN 和系统联网检测补充实际过滤项。

为什么 fake-ip 下 NAS 或路由器打不开?

常见原因是局域网域名或管理地址拿到了 fake-IP。先查看实际访问域名,再加入 fake-ip-filter;如果访问的是 IP 地址,则继续检查局域网路由、TUN 排除网段和防火墙。

节点域名解析失败时应该改 nameserver 还是 proxy-server-nameserver?

如果普通网页能解析、只有节点域名失败,优先检查 proxy-server-nameserver;它专门用于代理节点域名解析。若普通域名和节点域名都失败,再检查 default-nameserver、nameserver、网络可达性和客户端覆写。

配置后网页仍打不开,怎样判断是 DNS 还是代理问题?

先关闭 TUN,仅保留系统代理测试;再用 dig 或 nslookup 查询普通域名和节点域名,并查看 Mihomo 日志。DNS 有结果但连接超时,问题可能在端口、协议、路由、防火墙或节点本身,不应继续盲目更换 DNS。

参考资料

  1. DNS configuration - mihomo docs
  2. Tun - mihomo docs
  3. inbound configuration - mihomo docs
  4. DNS over HTTPS - Cloudflare 1.1.1.1 docs
  5. Get Started - Google Public DNS
  6. wiki.metacubex.one