访问验证

Mihomo TUN 模式不生效怎么办?按日志和症状排查

更新于 2026-10-31 · liuheng2024.store

简答:Mihomo TUN 不生效时,先关闭 TUN,用 HTTP、SOCKS 或 Mixed 代理确认核心和节点是否正常;再区分“无法创建 TUN”和“TUN 已启动但流量未接管”。随后只改一个变量,依次检查管理员权限、虚拟网卡、auto-route、DNS 劫持、Private DNS、IPv6、其他 VPN 冲突和规则命中。

定义:Mihomo TUN 模式是通过虚拟网络接口和系统路由接管网络层流量的工作方式,不等同于只对已设置代理的应用生效的 HTTP、SOCKS 或 Mixed 代理。

先做这 5 步:不要一开始就改 DNS 或删路由

如果你只是打开了 TUN 开关,但网页、应用或域名仍然不通,先按下面的最短路径定位。本站是第三方使用指南站,不是任何客户端或服务品牌的官方站点;本文只依据 Mihomo 文档、项目资料和系统命令文档整理。

启动前后的快速判断
现象先检查停止条件
TUN 开关一打开就失败日志、管理员权限、虚拟网卡、旧进程和端口看到 permission denied、Start TUN listening error 或 address already in use 时,先不要继续改 DNS
TUN 显示已启动但网页打不开系统路由、出口网卡、DNS 和其他 VPN能访问 IP 但不能访问域名时,转到 DNS 分支
只有部分应用不通规则、fake-ip、应用自身代理设置、IPv6先确认是否只有某类应用或某个协议失败
关闭 TUN 后仍然断网系统代理、残留虚拟接口和路由恢复普通网络后再继续配置
  1. 备份配置。复制当前 YAML 或在图形客户端导出配置,并记录 Mihomo 核心版本、客户端版本、系统版本和完整日志。
  2. 关闭 TUN。保留普通 HTTP、SOCKS 或 Mixed 代理,手动设置浏览器或系统代理,确认节点和核心是否能工作。普通代理能用,只能说明核心和节点具备基本连通性,不等于 TUN 路由正确。
  3. 检查配置。命令行核心可使用 mihomo -t -f config.yaml 检查配置文件;图形客户端则使用其“检查配置”“验证配置”或重新载入功能。官方项目资料中也使用了 -t -f 形式进行配置检查。查看 Mihomo 项目讨论中的配置检查示例
  4. 只开启最小 TUN 参数。先保留 enable、stack、auto-route、auto-detect-interface,暂时不要同时修改 MTU、IPv6、复杂路由排除项和应用过滤。
  5. 验证结果。确认日志出现 TUN 接口创建或监听信息,再分别测试 IP、域名、浏览器和一个不使用系统代理的应用。不要把“已连接”“端口监听”或“浏览器能打开”直接当作所有流量均已接管。

官方 TUN 文档说明,TUN 支持 macOS、Linux 和 Windows;auto-route 用于自动设置全局路由,auto-detect-interface 用于自动识别出口网卡。查看 Mihomo TUN 官方文档

先分清:无法创建 TUN,还是创建后不接管流量

一、无法创建 TUN:看权限、驱动和冲突

如果日志出现 permission denied、Start TUN listening error、interface timeout 或类似“无法打开接口”的信息,优先检查当前客户端是否获得系统网络权限、是否存在旧的 Mihomo 进程或其他 VPN/TUN 软件。桌面端的系统级路由需要管理员或 root 权限;官方 Mihomo Dashboard 文档也说明,首次启用桌面 TUN 可能需要安装并授权特权辅助服务。查看官方 Dashboard 对桌面 TUN 权限的说明

  • Windows:以管理员身份重新启动客户端,确认虚拟网卡已出现;用命令提示符执行 ipconfig /all 查看网卡和地址,再执行 route print 查看路由表。Microsoft 文档说明,ipconfig 可显示各适配器的地址、网关和 DNS 信息,route print 可显示本机 IP 路由表。查看 ipconfig 文档 查看 route 文档
  • macOS:确认客户端已获得网络扩展或相关系统授权,并在“系统设置—网络”中查看当前服务的 DNS。Apple 文档给出了 macOS DNS 设置入口;如果启用 TUN 后只有域名解析异常,不要直接删除系统 DNS,先记录原值。查看 Apple 的 macOS DNS 设置说明
  • Linux:确认运行用户有创建 TUN 和修改路由的权限,检查接口与路由:ip link、ip route。Linux ip route 用于查看和管理内核路由表。查看 ip-route 手册
  • Android:检查是否有另一个 VPN、Private DNS 或始终开启的 VPN 服务占用 VPN 通道;系统 VPN 通道通常不能由多个应用同时接管。

如果出现 address already in use,先关闭旧客户端、旧核心或其他占用 DNS、Mixed、控制器端口的进程,再重新启动;不要为了“绕过”错误而随意更换多个端口和配置项。

二、TUN 已启动但不接管:看路由和出口网卡

Mihomo 官方配置示例把 auto-route、auto-detect-interface 和 dns-hijack 作为 TUN 相关字段,但这些字段的具体默认值和客户端覆写方式可能不同,必须以当前核心文档和实际运行配置为准。查看 Mihomo 配置示例

  1. 在客户端的运行配置或日志中确认 tun.enable 实际为 true,而不是只看订阅原文件。
  2. 确认 auto-route: true 是否被客户端覆写;如果设备有 Wi-Fi、网线、蜂窝网络或虚拟网卡,确认 auto-detect-interface 选中的出口网卡正确。
  3. 临时关闭其他 VPN、WireGuard、虚拟机网络、容器网络和网络加速软件,再重启 Mihomo。多套软件同时改默认路由时,结果可能表现为部分流量绕过 TUN 或循环进入 TUN。
  4. Windows 执行 route print,Linux 执行 ip route,只观察默认路由和 TUN 相关路由,不要直接执行清空路由表的命令。

验证边界:看到 TUN 接口或路由出现,只能证明系统完成了部分网络设置;仍需用不遵循系统代理的应用、域名解析和实际目标连接进行验证。

按症状处理 DNS、fake-ip、IPv6 和规则问题

能访问 IP,但域名打不开

这通常应先作为 DNS 排查方向,而不是马上判断节点失效。Mihomo 文档说明,dns-hijack 会把匹配的 DNS 连接转入内部 DNS 模块;在 macOS 和 Windows 上,局域网发出的 DNS 请求不能被自动劫持,在 Android 上,启用 Private DNS 时也可能无法自动劫持。查看 Mihomo 对 dns-hijack 的限制说明

  1. 查看 Mihomo 日志中是否出现 DNS 请求或 hijack 记录。
  2. Android 先暂时关闭 Private DNS 后测试;测试结束后是否重新启用,应按你的网络环境和隐私要求自行决定。
  3. macOS 或 Windows 检查系统 DNS 是否仍指向原网络服务;不要把某个 DNS 地址硬编码到所有设备。
  4. 如果使用 fake-ip,检查目标域名是否被放入 fake-ip 过滤列表,以及规则是否把 DNS 或目标域名送往错误策略。

如果日志显示 DNS 请求根本没有到达 Mihomo,优先检查系统 DNS、Private DNS、局域网 DNS 或 macOS 的系统解析路径;如果 DNS 请求已到达但解析超时,再检查上游 DNS、代理规则和核心日志。

只有部分应用失败

先确认失败应用是否使用自己的 DNS、独立代理设置、QUIC/UDP 或 IPv6。随后在 Mihomo 日志中观察该应用的域名、目标地址、协议和命中的规则。规则命中不等于目标连接成功,仍要继续看连接错误和返回结果。

如果只有 IPv6 目标失败,可暂时在配置和系统中关闭 IPv6 做对照测试;这只是定位变量,不代表所有环境都应永久关闭 IPv6。若只有 UDP 或某类协议失败,先不要通过修改 MTU 得出结论,应先确认节点、协议和客户端是否确实支持该流量。

启动后全网断开

先关闭 TUN,而不是删除系统路由。然后退出 Mihomo 核心,检查系统代理是否仍指向本地端口,确认默认网关和 DNS 已恢复,再重新连接 Wi-Fi 或网线。Mihomo 文档指出,strict-route 会强化严格路由规则;在 Windows 上还会增加用于阻止 DNS 泄漏的防火墙规则,并可能导致某些应用在特定场景下异常。查看 strict-route 官方说明

因此,首次排障不建议同时打开 strict-route、fake-ip、IPv6、自定义路由和复杂 DNS 劫持。先恢复基础连接,再一次只改一个变量。

Windows、macOS、Linux、Android 的安全回滚清单

回滚与验证
系统先做什么看到什么才算恢复
Windows关闭 TUN,退出核心,检查系统代理;执行 ipconfig /all 和 route print默认网关、DNS 和普通浏览器连接恢复;路由表未被误清空
macOS关闭 TUN,检查“系统设置—网络—当前服务—DNS”,再重新连接网络系统 DNS 回到原配置或明确的当前配置,普通网络和域名解析恢复
Linux停止 Mihomo 服务,执行 ip link、ip route 检查接口和路由默认路由指向原出口,TUN 残留接口不再接管流量
Android关闭 TUN/VPN,检查 Private DNS 和其他 VPN,重新打开网络连接系统 VPN 状态正常,普通应用可访问,域名解析恢复

如果设备运行在 Docker 或 NAS 中,还要单独核对容器是否有 TUN 设备、相关权限和正确的宿主机路由;容器内的网络接口存在,不代表宿主机或其他设备的流量已经被接管。不要把桌面系统的命令直接套用到容器环境。

确认回滚成功后,再恢复备份配置,逐项启用:先 TUN,再 auto-route,再 DNS 劫持,最后才测试 strict-route、fake-ip、IPv6、MTU 或应用过滤。每次只启用一个变量,并保留对应日志。

日志关键词对照:看到什么就停在哪一层

日志与下一步
关键词或现象优先判断下一步
permission denied权限或系统辅助服务不足重新授权管理员/root权限,确认客户端具备系统网络权限
Start TUN listening errorTUN 接口创建失败、驱动异常或冲突关闭其他 VPN 和旧进程,确认虚拟接口后重试
interface timeout出口网卡识别或接口初始化超时检查 auto-detect-interface 和当前网络连接
address already in use端口或接口资源被占用查找旧核心、其他客户端或 DNS 监听,不要盲目改整份配置
unknown field、YAML 解析错误字段版本不匹配、缩进或配置合并异常用当前核心配置检查功能验证,并检查客户端覆写后的运行配置
TUN 已启动但域名失败DNS、Private DNS、fake-ip 或规则方向看 DNS 日志和规则命中,先不要调整 MTU

日志关键词只能帮助定位排查层级,不能单独证明某个节点、线路或服务一定有问题。若普通代理也失败,应回到订阅、节点、核心和基础网络连通性检查;若普通代理正常而 TUN 失败,才继续集中检查权限、接口、路由和 DNS。

常见问题

1. Mihomo TUN 开启后,浏览器能打开但某些应用不通,算 TUN 生效吗?

不能直接这样判断。浏览器可能遵循系统代理,而其他应用可能使用独立网络栈、独立 DNS、UDP 或 IPv6。应在 Mihomo 日志中确认该应用的连接是否出现、命中了什么规则,并分别测试域名、IP 和目标协议。

2. 是否必须打开 strict-route 才能让 TUN 工作?

不一定。官方文档把 strict-route 定义为在 auto-route 开启时强化严格路由规则,并说明它可能影响局域网访问或某些应用。先让基础 TUN、路由和 DNS 正常,再根据是否存在流量绕过或 DNS 泄漏风险进行单变量对照。

3. dns-hijack 写了 any:53,为什么 Android 仍然解析失败?

Android 开启 Private DNS 时,DNS 请求可能无法被自动劫持。先记录当前 Private DNS 状态,暂时关闭后重测,并观察 Mihomo 日志是否出现 DNS 请求;如果仍无请求,再检查 VPN 冲突、配置覆写和系统网络状态。

4. 能不能直接删除默认路由或清空路由表?

不建议。清空或误删系统路由可能让设备彻底失去网络。优先关闭 TUN、退出核心、恢复系统代理并重新连接网络;只有明确知道每条路由用途、且已经保存原始状态时,才进行人工调整。

5. 修改 MTU 能解决所有 TUN 连接问题吗?

不能。MTU 只应作为存在分片、特定协议或路径传输异常时的排查变量。先确认 TUN 接口、路由、DNS 和普通代理均已基本正常,再一次只调整 MTU,并记录修改前后的日志和连接现象。

常见问题

Mihomo TUN 开启后浏览器能打开但某些应用不通,算生效吗?

不能直接判断。浏览器可能遵循系统代理,其他应用可能使用独立 DNS、UDP 或 IPv6。应结合 Mihomo 日志、规则命中和目标协议继续验证。

Mihomo TUN 是否必须打开 strict-route?

不一定。先让基础 TUN、路由和 DNS 正常,再根据是否存在流量绕过或 DNS 异常进行单变量测试。strict-route 可能影响局域网访问或某些应用。

Android 开启 Private DNS 时,Mihomo dns-hijack 为什么可能无效?

Mihomo 官方文档明确提示,Android 开启 Private DNS 时,DNS 请求可能无法被自动劫持。可记录状态后暂时关闭重测,并观察 Mihomo 日志是否收到 DNS 请求。

可以直接清空系统路由来修复 TUN 吗?

不建议。先关闭 TUN、退出核心、检查系统代理和默认网关,再重新连接网络。没有保存原始路由状态时,不要清空路由表。

相关阅读

参考资料

  1. Mihomo 官方文档:Tun
  2. MetaCubeX/mihomo 官方 Wiki:配置示例
  3. MetaCubeX Dashboard 官方项目:桌面 TUN 权限说明
  4. Microsoft Learn:ipconfig 命令
  5. Microsoft Learn:route 命令
  6. Apple Support:更改 Mac DNS 设置
  7. Linux manual page:ip-route(man7.org)
  8. MetaCubeX/mihomo 官方 GitHub Discussion:使用 mihomo -t -f 检查配置