白嫖机场-白嫖机场加速器官网

Mihomo IPv6 设置后无法联网:从 DNS、TUN 到路由逐项排查

更新于 2026-10-24 · xn--mesv7f5toqlp.shop

简答:ipv6 和 dns.ipv6 是两个开关,只改一个可能造成解析异常或路由不一致。请先确认本机是否有可用 IPv6,再保留原有 nameserver,配置 DNS 劫持与 TUN 路由,最后用 AAAA、curl -6 和日志验证。

定义:Mihomo IPv6 设置,是对内核接收 IPv6、DNS 的 AAAA 解析、Fake-IP IPv6 地址池以及 TUN IPv6 路由分别配置和验证。

先试这一步:按网络环境选择方案

如果你只是想让 Mihomo 先恢复连接,先不要同时修改多个字段:备份当前配置,确认原配置中的 nameserver 仍然存在,再按下面表格选择双栈或 IPv4-only 方案。本文与 mihomo 项目及其开发者无隶属关系,字段含义以 mihomo 通用配置文档、mihomo DNS 配置文档 和 mihomo TUN 配置文档 为准。

Mihomo IPv6 设置决策表
网络环境全局 ipv6dns.ipv6下一步
本机有可用 IPv6,且希望处理 IPv6 流量truetrue按双栈配置,并检查 TUN IPv6 地址、路由和出口
本机有 IPv6,但节点或出口能力未核实先保留原值先保留原值先按“验证三项”检查,再选择双栈或 IPv4-only
本机没有可用 IPv6,或 IPv6 连接持续超时falsefalse采用完整 IPv4-only 配置,并清理 IPv6 路由项
只想让应用使用 IPv4falsefalse确认 AAAA 为空、IPv4 网站可访问、日志没有持续 IPv6 尝试

“节点是否支持 IPv6”不能只看节点名称判断,本文也不对任何具体订阅、节点或出口能力作结论。需要以实际日志和出口检测为准。

四个字段分别控制什么

  • ipv6:顶层全局开关,决定 Mihomo 是否处理 IPv6 流量。它不等于 DNS 是否返回 AAAA。
  • dns.ipv6:控制 DNS 是否解析 IPv6;官方文档说明,设为 false 时,AAAA 查询会返回空结果。来源:DNS configuration - mihomo docs。
  • fake-ip-range6:设置 Fake-IP 模式下的 IPv6 地址范围,不是打开 IPv6 的总开关。官方示例将其作为可选配置展示。来源:DNS configuration - mihomo docs。
  • TUN 路由与 inet6-address:TUN 的 inet6-address 用于设置 TUN 接口 IPv6 地址;官方文档说明,它还要求顶层 ipv6: true 才会生效。来源:Tun - mihomo docs。

因此,“DNS 能返回 AAAA,但 TUN 没有 IPv6 路由”和“全局 IPv6 已关闭,DNS 仍返回 AAAA”是不同问题,不能用同一个开关解决。

验证三项:AAAA、IPv6 出口与日志

以下命令用于验证,不代表一定经过 Mihomo。若系统 DNS 没有被 TUN 劫持,系统命令只能说明系统当前解析结果,不能单独证明 Mihomo 的 DNS 已生效。

  1. 查询 AAAA:Windows PowerShell 执行 Resolve-DnsName -Type AAAA example.com;macOS 或 Linux 执行 dig AAAA example.com。其中 example.com 是示例域名,请替换为你实际访问的域名。双栈预期是能看到 AAAA;IPv4-only 预期是 Mihomo DNS 对 AAAA 返回空结果。
  2. 检查 IPv6 出口:在系统终端执行 curl -6 https://api64.ipify.org。该地址只是可替换的示例检测接口;如果命令返回一个 IPv6 地址,只说明当前命令具备 IPv6 连接能力,还不能证明该流量经过 Mihomo。若返回连接失败,检查本机 IPv6、TUN 地址和出口。
  3. 查看日志:打开 Mihomo 日志,搜索目标域名、AAAA、IPv6、连接失败或超时等关键词。若 AAAA 有结果但日志没有对应 IPv6 连接,优先检查规则、TUN 路由和应用是否绕过 TUN。

配置中加入 dns-hijack 后,TUN 才能将匹配的 DNS 请求导入 Mihomo 内部 DNS 模块。官方文档给出的示例包含 any:53 和 tcp://any:53;Windows、macOS 的本地网络 DNS 请求仍有自动劫持限制,Android 开启 Private DNS 时也不能自动劫持。来源:Tun - mihomo docs。

双栈配置:保留原有 nameserver 再逐项启用

以下是用于排查的最小示例,不应直接覆盖你的完整订阅配置。示例中的 DNS 地址仅用于展示 YAML 结构;若你已有可用的 nameserver、规则和代理解析配置,应保留原值。stack: mixed 是通用示例,具体协议栈是否适合你的系统要以当前内核文档和客户端提示为准。

ipv6: true

dns:
  enable: true
  listen: 0.0.0.0:1053
  ipv6: true
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  # 只有需要 Fake-IP IPv6 时再取消注释,并按当前文档确认格式
  # fake-ip-range6: fdfe:dcba:9876::1/64

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

保存后重启 Mihomo,再按“验证三项”依次检查。若配置加载失败,先检查 YAML 缩进、布尔值是否写成 true/false,以及客户端是否允许修改订阅生成的配置。

fake-ip-range6 不一定需要填写。只有你确实使用 IPv6 DNS 和 Fake-IP IPv6 地址池时,才考虑加入;如果只是让 IPv4 代理正常工作,可以先不填写。字段是否被当前内核识别,需以当前版本官方文档为准。

IPv4-only 配置:没有可用 IPv6 时同步关闭

如果本机没有可用 IPv6,或 IPv6 连接持续超时,可采用下面的 IPv4-only 排查模板。重点是同时关闭全局 IPv6 和 DNS IPv6,而不是只删除某一条 TUN 路由。nameserver 必须保留至少一组可用解析服务器;如果你已有原配置,请优先保留原有值。

ipv6: false

dns:
  enable: true
  listen: 0.0.0.0:1053
  ipv6: false
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16

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

重启后,检查 AAAA 查询是否为空、普通 IPv4 网站是否可访问,以及日志中是否仍有持续的 IPv6 连接尝试。纯 IPv6 网站在 dns.ipv6: false 时打不开属于预期结果;如果你需要访问这类网站,就不能使用 IPv4-only 方案。

TUN IPv6 路由与 inet4-route-only 的关系

不要把“只让 TUN 接管 IPv4”误认为“系统已经关闭 IPv6”。如果系统网卡仍具备 IPv6、应用可以直接发起 IPv6 连接,而 TUN 只处理 IPv4,那么部分流量可能不经过你预期的 TUN 路径。此时应检查客户端是否提供或生成了 inet4-route-only 选项,并确认它的实际含义与当前内核文档一致;本文不把该字段当作所有 Mihomo 版本都支持的固定配置。

官方当前 TUN 文档使用 route-address 配置自定义路由,同时将 inet4-route-address、inet6-route-address列在旧语法区域。旧内核或第三方客户端内置内核可能不识别新字段,因此不要为了“补齐 IPv6”直接复制整段路由列表。来源:Tun - mihomo docs。

安全的对照方法是:先保留默认 auto-route: true,只确认全局 ipv6、DNS ipv6、dns-hijack 和 strict-route 的状态;只有默认路由无法满足需求时,才根据当前版本文档加入 route-address 或兼容字段。

按症状排查:每次只改一个变量

Mihomo IPv6 常见症状与处理顺序
症状先检查判定标准下一步
开启 IPv6 后完全无法联网YAML、DNS nameserver、TUN 状态配置能加载,IPv4 网站至少可访问先恢复最小配置,再逐项开启 IPv6
AAAA 有结果但 IPv6 网站打不开TUN IPv6 地址、路由和出口能解析不等于能建立 IPv6 连接检查 inet6-address、路由和日志
DNS 为空或超时dns.ipv6、nameserver、dns-hijack确认空结果是否为主动关闭,超时则看 DNS 是否进入 Mihomo检查 TUN 劫持、Android Private DNS 和 DNS 监听
怀疑 IPv6 没有经过 TUN系统 IPv6、TUN 路由、strict-route日志与出口检测的地址族和路径应符合配置不要只关闭 DNS;先做双栈与 IPv4-only 对照

Windows 开启 strict-route: true 后,官方文档说明 Mihomo 会增加用于减少多宿主 DNS 泄漏的防火墙规则,但某些虚拟机软件可能受影响。Android 若启用 Private DNS,DNS 请求不能自动被劫持。出现这些情况时,先做临时对照,再决定是否保留设置。来源:Tun - mihomo docs。

版本与客户端差异:先确认内核再复制字段

fake-ip-range6、route-address、inet6-address 和 dns-hijack 都属于需要结合当前内核文档理解的字段。Mihomo 客户端可能内置不同版本的内核,旧内核也可能只识别旧的路由字段。修改前请在客户端的内核信息、日志或关于页面确认版本;如果客户端没有显示版本号,就不要根据本文推断其支持范围。

  • 配置加载失败:先删除最近新增的字段,恢复原配置,再逐项添加。
  • 字段被忽略:检查字段拼写、缩进和当前内核文档,尤其是新旧路由语法。
  • DNS 结果不符合预期:确认 dns.enable、listen、nameserver 与 dns-hijack 同时存在且端口没有冲突。
  • 客户端界面有“仅 IPv4”或类似选项:以该客户端显示的字段和当前内核文档为准,不要把界面名称直接当成通用 YAML 字段。

本文没有给出具体客户端的菜单路径,因为不同客户端的配置入口和内置内核可能不同;无法核实的版本支持情况应标记为“未核实”。

配置完成后的自查清单

  1. 备份原配置,并确认修改的是当前实际运行的配置文件。
  2. 确认 ipv6 和 dns.ipv6 是不带引号的布尔值。
  3. 确认 DNS 启用时保留至少一个可用的 nameserver。
  4. 使用 TUN 时检查 auto-route、dns-hijack 和 strict-route 是否符合你的系统。
  5. 双栈方案检查 AAAA、curl -6 和日志;IPv4-only 方案检查 AAAA 为空、IPv4 可访问和无持续 IPv6 连接尝试。
  6. 若使用 inet6-address,确认顶层 ipv6: true 同时存在。
  7. 若使用旧版或第三方客户端,先确认字段支持;不确定时以官方文档和启动日志为准。

本文只能确认 Mihomo 官方文档中的字段说明和通用排查逻辑,不能确认某个节点、订阅、系统网络或具体客户端一定具备 IPv6 出口。

常见问题

Mihomo 的 ipv6 和 dns.ipv6 是同一个开关吗?

不是。全局 ipv6 控制内核是否处理 IPv6 流量,dns.ipv6 控制 DNS 是否解析 AAAA。只修改其中一个,可能造成解析和路由状态不一致。

没有 IPv6 的节点,客户端还需要开启 IPv6 吗?

不能只看节点名称判断。先检查本机 IPv6、AAAA 解析、TUN 路由和 IPv6 出口;如果本机没有可用 IPv6或连接持续超时,再采用全局 ipv6 与 dns.ipv6 同时关闭的 IPv4-only 方案。

Fake-IP 模式一定要配置 fake-ip-range6 吗?

不一定。fake-ip-range6 只设置 Fake-IP 模式下的 IPv6 地址范围;如果你采用 IPv4-only 配置,通常可以不填写,但是否支持该字段仍要以当前内核官方文档为准。

为什么 dns.ipv6 关闭后纯 IPv6 网站打不开?

因为 Mihomo DNS 会对 AAAA 查询返回空结果。若确实需要访问纯 IPv6 网站,应恢复 dns.ipv6,并继续确认本机、TUN 和出口都具备 IPv6 能力。

只关闭 TUN 的 IPv6 路由可以防止 IPv6 绕过吗?

不能直接保证。系统和应用仍可能拥有 IPv6 连接能力,具体是否绕过要看全局 ipv6、DNS、TUN 路由和 strict-route。应使用日志、AAAA 和 IPv6 出口检测做完整对照。

Windows 或 Android 开启 IPv6 后 DNS 异常怎么办?

Windows 先检查 strict-route 与多宿主 DNS行为;Android 先检查 Private DNS,因为官方文档说明启用 Private DNS 时,Mihomo 不能自动劫持这类 DNS 请求。

相关阅读

参考资料

  1. General configuration - mihomo docs
  2. DNS configuration - mihomo docs
  3. Tun - mihomo docs