← 返回 次元云-门户站 - 新版入口 首页

Mihomo DNS 怎么配置?fake-ip、TUN 劫持与 DNS 不生效排查

更新于 2026-10-24 · ciyydoor.shop

简答:Mihomo DNS 建议先启用 dns 并使用最小 redir-host 配置,确认网页和节点域名可解析后,再按需切换 fake-ip、加入 nameserver-policy 和 TUN 的 dns-hijack。若修改后无变化,先检查客户端 DNS 覆写、当前运行配置、核心重启与本地查询结果。

定义:Mihomo DNS 配置是通过配置文件顶层的 dns: 段设置解析开关、监听地址、fake-ip 或 redir-host 模式、上游 DNS 及域名分流规则。

先试最小配置:从 redir-host 确认基础解析

本文是第三方使用指南,与 Mihomo 项目及其开发者无隶属关系。Mihomo 官方文档将 enhanced-mode 定义为 fake-ip 或 redir-host,默认值为 redir-host;enable 控制是否启用 Mihomo DNS,listen 用于提供 DNS 服务监听。参考mihomo 官方 DNS 配置文档。

dns:
  enable: true
  ipv6: false
  listen: 127.0.0.1:1053
  enhanced-mode: redir-host
  default-nameserver:
    - 1.1.1.1
    - 8.8.8.8
  nameserver:
    - https://cloudflare-dns.com/dns-query
    - https://dns.quad9.net/dns-query

先这样判定:客户端配置校验通过,Mihomo 核心能够重启,普通网页和节点域名可以解析。上面的域名和地址只是示例,实际可替换为能够访问的 DoH 或 DoT 上游;Cloudflare 官方公布的 DoH 地址是 https://cloudflare-dns.com/dns-query,Quad9 官方公布的 DoH 地址是 https://dns.quad9.net/dns-query,分别见Cloudflare DoH 文档和Quad9 服务地址文档。

监听地址安全提示:127.0.0.1:1053只监听本机,适合桌面单机。0.0.0.0:1053会监听所有网卡,可能向局域网提供 DNS 服务;只有路由器或网关确实需要被其他设备查询时才考虑使用,并应同时检查防火墙和访问范围。官方文档说明 listen 支持 UDP 和 TCP,但没有替你完成系统 DNS 或 TUN 流量接管。

场景速查卡:先选模式,再加字段

场景先尝试需要关注的字段判定标准
电脑日常使用redir-hostenable、nameserver网页、节点域名和常用应用均可解析
手机或需要规则接管先验证 redir-host,再对照 fake-ipfake-ip-filter、TUN、dns-hijack切换后应用、系统联网检测和局域网仍正常
路由器或网关按实际拓扑选择listen、路由、防火墙、TUN客户端和局域网设备能查询,且未意外开放公网 DNS
游戏、局域网设备优先用 redir-host 做兼容性对照局域网域名、fake-ip-filter局域网主机名、游戏登录和语音连接不受影响
需要检查 DNS 泄漏明确 DNS 接管路径TUN、dns-hijack、strict-route开关 TUN 前后,查询出口和客户端日志符合预期

这张表是排查顺序,不是对所有设备的统一官方推荐。Mihomo 官方只定义了两种 DNS 处理模式,并说明不同 TUN 字段具有平台条件;实际应以设备、客户端和当前配置共同验证,参考DNS 文档与TUN 文档。

fake-ip 和 redir-host 怎么选

redir-host返回域名解析得到的真实地址,适合先验证基础联网和应用兼容性。fake-ip会为域名分配 fake IP,Mihomo 再结合域名处理后续连接,适合需要 TUN 与规则分流的场景。官方文档明确列出这两种模式,但没有给出适用于所有设备的统一最佳选择,参考enhanced-mode 与 fake-ip-filter 说明。

dns:
  enable: true
  ipv6: false
  listen: 127.0.0.1:1053
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter-mode: blacklist
  fake-ip-filter:
    - '*.lan'
  default-nameserver:
    - 1.1.1.1
    - 9.9.9.9
  nameserver:
    - https://cloudflare-dns.com/dns-query
    - https://dns.quad9.net/dns-query

fake-ip-filter支持域名通配写法,官方示例包含 *.lan;这不代表所有局域网都使用 .lan。如果 NTP、STUN、系统联网检测、游戏或局域网设备异常,应先切回 redir-host确认是否由 fake-ip 引起,再根据日志和实际域名逐项增加过滤项,不要一次复制大量未经核验的名单。

DNS 字段和查询流向怎么理解

字段用途先写还是后写
default-nameserver解析 DNS 服务器自身的域名;官方要求使用 IP,也可以配置加密 DNS使用 DoH、DoT 上游时先写
nameserver普通域名查询的默认上游最小配置建议写
nameserver-policy按域名通配或规则集合指定解析服务器,优先于默认查询需要分流时再写
proxy-server-nameserver只解析代理节点域名节点域名解析异常时再写
direct-nameserver指定直连出口使用的 DNS直连解析需要独立出口时再写
fallback备用解析服务器;启用后会配合 fallback-filter 逻辑基础配置稳定后再写

文字流向:DNS 服务器自身的域名先由 default-nameserver 解析;普通域名优先检查 nameserver-policy,没有匹配时使用 nameserver,必要时才进入 fallback;节点域名单独看 proxy-server-nameserver,直连出口单独看 direct-nameserver。这些职责和优先级见mihomo DNS 字段说明。

官方文档明确将 fallback-filter.geosite标为已弃用,并建议使用 nameserver-policy做按域名分流。不要为了“完整”一开始同时加入 fallback、复杂过滤和多个策略,否则启动失败时难以判断是哪一项造成问题。

dns:
  enable: true
  default-nameserver:
    - 1.1.1.1
    - 9.9.9.9
  nameserver:
    - https://cloudflare-dns.com/dns-query
  nameserver-policy:
    '+.example.com':
      - https://dns.quad9.net/dns-query
  proxy-server-nameserver:
    - https://cloudflare-dns.com/dns-query
  direct-nameserver:
    - 9.9.9.9

example.com是示例域名,请替换为你实际需要分流的域名。增加策略后,普通域名、节点域名和直连应用都应分别完成解析;如果全部无法联网,先删除后三项,回到最小配置。

国际化 DoH 与 DoT 上游怎么替换

服务DoH 写法DoT 写法说明
Cloudflare 1.1.1.1https://cloudflare-dns.com/dns-querytls://one.one.one.one地址和协议见官方文档
Quad9https://dns.quad9.net/dns-querytls://dns.quad9.net官方同时公布安全解析服务地址
AdGuard DNShttps://dns.adguard-dns.com/dns-querytls://dns.adguard-dns.com默认服务包含广告和跟踪器拦截

Cloudflare 的 DoT 使用标准 853 端口,官方公布的主机名是 one.one.one.one;Quad9 和 AdGuard 也分别公布了 DoH、DoT 地址,见Cloudflare DoT 文档、Quad9 服务地址和AdGuard 公共 DNS 地址。不同网络对上游的可达性可能不同,不能把某个公共 DNS 的可用性或速度当成固定结论。

TUN 下 dns-hijack 怎么配置

TUN 的 DNS 路径要分开理解:dns-hijack负责把匹配到的 DNS 连接导入 Mihomo 内部 DNS 模块;listen则是本机或局域网显式查询使用的监听地址,两者不是同一条路径。官方 TUN 文档列出 dns-mode 的可选值为 disabled、native、hijack,并说明 hijack在 Windows 需要 strict-route,Linux 需要 auto-redirect;如果担心不同客户端对字段支持不一致,可先只使用客户端界面提供的 TUN/DNS 开关,再核对生成配置。参考mihomo 官方 TUN 文档。

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

上面配置中的 strict-route可用于 Windows 的 DNS 泄漏防护;Linux 的 auto-redirect仅适用 Linux,并且官方要求同时启用 auto-route。macOS 和 Windows 不能自动劫持发往本地网络的 DNS 请求;Android 开启 Private DNS 时,也不能自动劫持 DNS 请求。遇到局域网或系统 DNS 异常,先关闭 TUN 做对照,再按平台条件恢复,以上平台限制见官方 TUN 文档。

配置修改后不生效:完整验证流程

  1. 确认配置来源。在客户端确认当前运行的是哪份配置,避免只修改订阅原文却实际运行了覆写文件。
  2. 检查 DNS 覆写。Clash Verge Rev、Mihomo Party 等图形客户端可能提供独立的 DNS 设置或 DNS 覆写开关。若开关启用,界面设置可能覆盖 YAML 中的 dns: 段;修改无变化时先关闭覆写,或直接修改客户端 DNS 设置。
  3. 检查顶层位置和缩进。dns:应位于配置顶层,子字段保持两个空格缩进,不要放进 rules、tun或 proxy-groups。
  4. 校验并重启核心。先使用客户端配置校验,再重启 Mihomo 核心;只刷新面板通常不能证明核心已加载新配置。
  5. 清理系统或客户端缓存。切换 fake-ip 与 redir-host 后,优先使用客户端提供的 DNS 缓存或 fake-ip 映射清理功能;没有该选项时完全退出并重新启动客户端。
  6. 查询本地监听。以下命令用于验证 listen: 127.0.0.1:1053是否响应,不用于证明 TUN 的 dns-hijack 已经接管全部系统流量。
nslookup -port=1053 example.com 127.0.0.1
dig @127.0.0.1 -p 1053 example.com

example.com是示例域名,请替换为实际测试域名。Windows 默认更容易使用 nslookup;dig需要系统已安装对应工具。看到有效的 A 或 AAAA 记录,说明该监听至少返回了响应;超时或拒绝连接时,检查监听地址、端口占用和核心状态。

Windows 可执行ipconfig /flushdns清理系统缓存;macOS 可执行sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder。清缓存后重新查询,并查看客户端日志是否记录了 DNS 请求。命令由操作系统提供,不需要额外安装工具。

如何检查 fake-ip 是否生效与 DNS 泄漏

fake-ip 不能只凭“查询返回了一个 IP”判断。先确认配置中的 enhanced-mode: fake-ip已加载,再查看客户端日志或连接详情是否显示域名与 fake-ip 映射;同时用局域网域名、系统联网检测域名和实际异常应用做对照。官方 DNS 文档说明 fake-ip-filter中的匹配项不会获得 fake-ip 映射,参考fake-ip-filter 文档。

  1. 关闭 TUN,记录一次 DNS 检测页面或客户端日志中显示的解析出口。
  2. 开启 TUN,并确认 dns-hijack、auto-route和平台所需的路由字段已加载。
  3. 重复访问同一检测页面或执行同一查询,比较两次显示的解析服务和客户端日志。
  4. 如果仍看到系统或路由器 DNS,检查客户端 DNS 覆写、Windows 的 strict-route、Linux 的 auto-redirect以及 Android Private DNS。

Quad9 官方提供 on.quad9.net用于确认查询是否到达 Quad9,并提供协议测试方法;它适合验证是否使用了 Quad9,不等于对所有上游的通用测速或绝对防泄漏保证,参考Quad9 协议测试说明。发现泄漏后,先关闭复杂的 fallback和分流规则,回到最小配置逐项恢复。

常见症状与处理顺序

症状优先检查处理动作
启动时报 DNS 字段错误字段拼写、缩进和客户端支持情况删除新增字段,回到最小 redir-host 配置
改 YAML 后完全没变化DNS 覆写、当前运行配置、核心是否重启确认生效文件,关闭覆写并重启核心
网页能开但局域网失效fake-ip、局域网域名和 TUN 路由先切回 redir-host,再按实际域名增加过滤
节点域名无法解析proxy-server-nameserver及上游可达性暂时删除复杂策略,单独为节点域名指定上游
TUN 开启后仍使用系统 DNSdns-hijack、平台依赖和客户端覆写按系统检查 strict-route或 Linux 的 auto-redirect

结论:先能解析,再做分流和防泄漏

Mihomo DNS 最稳妥的配置顺序是:先用最小 redir-host确认网页和节点域名可解析;再单独切换 fake-ip;之后增加 nameserver-policy、proxy-server-nameserver或direct-nameserver;最后才启用 TUN 的 DNS 接管并做开关前后对照。

如果客户端界面提供 DNS 覆写,YAML 中的修改可能不会直接生效。出现配置不变、局域网异常或 DNS 泄漏时,不要继续堆叠字段,先确认当前配置来源、核心状态、查询路径和平台条件。

常见问题

Mihomo DNS 配置应该放在哪里?

通常放在当前生效配置文件的顶层 dns: 段。使用图形客户端时,还要确认当前运行配置和 DNS 覆写开关;界面设置可能覆盖 YAML 中的 dns: 内容。

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

没有适用于所有设备的统一答案。redir-host适合先验证基础联网和兼容性,fake-ip适合需要 TUN 与规则分流的场景。切换后若局域网或特定应用异常,应先回退并逐项排查。

为什么改了 Mihomo DNS 配置却没有效果?

优先检查当前运行配置、客户端 DNS 覆写、YAML 缩进和核心是否重启,再用 nslookup 或 dig 查询本地监听。若查询正常但系统行为不变,继续检查 TUN 和 DNS 接管路径。

default-nameserver 和 nameserver 有什么区别?

default-nameserver主要用于解析 DNS 服务器自身的域名,官方要求使用 IP;nameserver是普通域名查询的默认上游,两者职责不同。

Mihomo TUN 一定要配置 dns-hijack 吗?

不一定。dns-hijack用于把匹配到的 DNS 连接导入 Mihomo 内部 DNS 模块,是否需要取决于系统、客户端和流量接管方式。Windows 与 Linux 还涉及 strict-route 或 auto-redirect 等平台条件。

listen 和 dns-hijack 是不是同一个功能?

不是。listen提供本机或局域网显式查询使用的 DNS 监听;dns-hijack负责把匹配到的 DNS 流量导入内部 DNS 模块。TUN 接管不等于必须把所有流量指向 listen 端口。

Mihomo DNS 如何检查是否泄漏?

先关闭 TUN 记录检测结果,再开启 TUN 重复测试,并查看客户端日志中的 DNS 查询出口。若仍出现系统或路由器 DNS,检查 DNS 覆写、dns-hijack、Windows strict-route、Linux auto-redirect 和 Android Private DNS。

相关阅读

参考资料

  1. mihomo 官方文档:DNS 配置
  2. mihomo 官方文档:DNS 解析流程
  3. mihomo 官方文档:TUN 配置
  4. Cloudflare 官方文档:DoH 请求地址
  5. Cloudflare 官方文档:DoT 配置
  6. Quad9 官方文档:服务地址(docs.quad9.net)
  7. Quad9 官方文档:协议测试与确认方法(docs.quad9.net)
  8. AdGuard DNS 官方文档:公共 DNS 地址(adguard-dns.io)