翻墙侠 - 自由上网的好帮手

Mihomo TUN 模式无法接管流量:从日志到路由逐步排查

更新于 2026-11-01 · fanqiangxia.top

简答:先不要反复切换 TUN 开关:关闭 TUN,用 Mixed/HTTP/SOCKS 代理确认节点与配置正常;再开启 TUN,观察 Mihomo 连接记录、虚拟网卡和路由表。没有连接记录通常是权限、网卡或路由问题;有记录但走 DIRECT,优先检查规则;只有域名异常,则重点检查 DNS 劫持、Fake-IP、IPv6 和其他 VPN 冲突。

定义:Mihomo TUN 是通过虚拟网卡和系统路由接管应用流量的模式,不等于仅打开客户端里的 TUN 开关。

先看现象:你遇到的是哪一种接管失败

本文是第三方使用指南,不代表任何客户端或项目官方。排查时先把问题分成四类,因为每一类的检查入口不同。

现象优先判断先做什么
开启 TUN 后立即报错或开关自动关闭权限、虚拟网卡、配置字段或内核不兼容查看日志中的 permission、TUN、route、YAML 关键词
没有任何连接记录,应用仍直连系统流量没有进入 TUN检查虚拟网卡、路由表、auto-route 和其他 VPN
有连接记录,但全部是 DIRECT规则或模式导致直连临时切换全局模式,观察策略是否改变
开启后全局断网DNS、出口接口、路由回环、防火墙或协议栈异常关闭 TUN 恢复网络,再用最小配置复测
网页能开但部分应用不行应用绕过系统路由、IPv6 或独立网络服务分别测试浏览器、命令行工具和目标应用

官方文档说明,TUN 负责系统流量接入,auto-route 用于自动设置路由,auto-detect-interface 用于选择出口接口;多网卡设备可能需要手动指定出口。详见 Mihomo TUN 配置文档。

最短复测路径:先证明节点和代理端口没问题

  1. 关闭 TUN,只保留已启用的 Mixed、HTTP 或 SOCKS 代理端口。端口号以当前客户端面板显示为准,不要直接套用旧教程中的数字。
  2. 在浏览器中手动设置代理,或使用支持代理参数的命令行工具测试同一个网址。记录是否能建立连接、是否有 Mihomo 连接记录、最终命中了哪个策略。
  3. 如果关闭 TUN 后仍无法连接,先不要排查路由。检查订阅是否成功解析、节点是否可用、代理端口是否监听,以及配置校验是否通过。
  4. 只有普通代理测试正常后,再开启 TUN。开启后访问一个普通网页,同时观察 Mihomo 的连接列表。

判断标准不是“开关显示已开启”,而是目标应用的连接是否出现在 Mihomo 连接列表中,并显示实际规则和策略组。没有记录,说明流量可能还没有进入核心;有记录但显示 DIRECT,则属于规则判断,不一定是 TUN 没接管。

如果客户端提供配置校验入口,优先使用该入口;命令行核心也应先用当前构建帮助或官方文档确认校验参数,避免直接复制与版本不匹配的命令。

Windows:权限、虚拟网卡和路由表依次检查

  1. 退出其他 VPN、网络加速器和可能创建虚拟网卡的工具,只保留一个网络接管组件。其他组件可能修改默认路由、DNS 或防火墙规则。
  2. 重新以管理员权限启动客户端,首次启用 TUN 时留意系统授权提示。桌面面板项目文档说明,桌面 TUN 的系统级路由设置需要管理员权限,并依赖辅助服务或虚拟网卡。
  3. 打开 PowerShell,执行 Get-NetAdapter -IncludeHidden,确认是否能看到 Mihomo 或 Wintun 相关适配器;再执行 Get-NetIPConfiguration -All 查看接口、地址和 DNS。
  4. 在命令提示符执行 route print,观察开启 TUN 前后默认路由或分流路由是否变化。微软文档将该命令定义为查看和修改本机 IP 路由表。
  5. 如果日志显示 TUN 已建立,但所有连接都失败,先关闭 TUN,恢复网络后再尝试将协议栈改为当前文档支持的另一种选项。Mihomo 文档提示,Windows 防火墙可能影响 system 和 mixed 协议栈。

可参考 Get-NetAdapter、Get-NetIPConfiguration 和 route 命令文档。不要在未记录原始路由的情况下手工删除或添加默认路由。

macOS 与 Linux:重点看网络扩展、TUN 设备和出口接口

macOS

macOS 的 TUN 设备名称受系统限制,官方 Mihomo 文档指出,手动指定设备名时应使用以 utun 开头的名称。若客户端请求授权,请完成管理员确认;同时检查“系统设置—通用—登录项与扩展”中的网络扩展,以及“系统设置—网络”里的 VPN 和网络服务状态。Apple 说明,网络扩展可用于 VPN 或内容过滤,网络服务顺序也会影响连接。

若有 Wi-Fi、网线、虚拟机网卡和其他 VPN 同时在线,先暂时关闭多余接口,再将 auto-detect-interface 设为自动;仍异常时,按客户端当前配置格式手动指定实际出口接口。

Linux

先执行 ip link show 查看 TUN 设备,再执行 ip route 和 ip rule 检查路由与策略规则。Linux 的 ip 工具用于查看或管理网络设备、路由、规则和 TUN/TAP。若设备不存在,检查运行权限、容器是否提供 /dev/net/tun、是否具备网络管理能力,以及防火墙是否允许 TUN 出站。

Linux 下的 auto-redirect 依赖 auto-route,不要只打开前者。多出口主机还应检查实际出口接口是否选错。

参考 Apple 网络扩展设置说明、Apple 网络设置说明 和 Linux ip 命令手册。

规则、DNS、IPv6 和应用绕过:为什么“已接管”仍然打不开

  1. 规则走 DIRECT:临时切到全局模式,只用于定位。若全局模式可用、规则模式不可用,重点检查域名规则、策略组选择和最后的 MATCH 规则,而不是继续修改 TUN。
  2. DNS 没有进入 Mihomo:检查 DNS 模块是否启用、dns-hijack 是否按当前版本格式填写。官方文档说明,Windows 和 macOS 不能自动劫持发往局域网的 DNS 请求;Android 的私人 DNS 也可能阻止自动劫持。
  3. IPv6 绕过:临时关闭系统或配置中的 IPv6 仅用于对照测试。若关闭后恢复,说明需要继续检查 IPv6 路由、DNS 或规则,而不是直接把 MTU 调得很小。
  4. 应用不读取系统代理:游戏、启动器、命令行工具、部分 UWP 应用和独立网络服务可能不使用 HTTP/SOCKS 代理;TUN 理论上覆盖的范围更广,但仍会受到进程排除、系统 VPN、公司策略和应用自身网络实现影响。
  5. MTU 或协议栈异常:MTU 影响极限传输状态,普通用户应先保留默认值。只有在日志和对照测试都指向分片、握手或特定网络路径异常时,才一次修改一个变量并记录结果。

每次只改一个设置,记录“配置前—配置后—连接记录—路由表—DNS 结果”。不要同时改规则、DNS、协议栈和 MTU,否则无法判断真正原因。

恢复网络与最小复测配置

如果开启 TUN 后断网,先按以下顺序回滚:

  1. 在客户端点击关闭 TUN;若客户端提供“恢复网络”或类似按钮,优先使用它。
  2. 正常退出客户端,让它清理虚拟网卡和路由;不要直接强制结束进程。
  3. 重新连接 Wi-Fi 或网线,确认普通网络恢复后,再启动客户端。
  4. 备份原配置,复制出一份最小测试配置,只保留当前客户端能够识别的 TUN、代理端口、DNS 和一条明确的测试规则。
  5. 先验证普通代理,再验证 TUN,最后恢复复杂规则、Fake-IP、IPv6 和多网卡设置。

结构示例(不可直接复制,字段和缩进需以当前 Mihomo 文档及客户端内置核心为准):tun: enable: true; auto-route: true; auto-detect-interface: true。不要把示例中的设备名、MTU、DNS 地址或端口直接照搬到生产配置。

分享日志前请隐藏订阅链接、节点地址、用户名、密码、令牌和公网 IP。若某个字段在当前客户端中不被识别,应以客户端内置核心版本和实际报错为准。

常见问题

为什么 TUN 开关已经打开,但 Mihomo 连接列表仍然为空?

优先检查虚拟网卡、系统路由、管理员权限、出口接口和其他 VPN。开关状态只能说明配置被接受,不代表应用流量已经进入核心。

有连接记录但全部显示 DIRECT,是 TUN 失效吗?

不一定。连接已经进入核心反而说明接管可能生效,DIRECT 表示规则将该连接判定为直连。临时切换全局模式并观察策略变化,可以区分接管问题和规则问题。

开启 TUN 后只有域名打不开,IP 测试正常,怎么办?

优先检查 DNS 模块、dns-hijack、Fake-IP、系统私人 DNS、IPv6 以及局域网 DNS 请求。Windows 和 macOS 对局域网 DNS 的自动劫持存在限制,应结合 DNS 日志判断。

Windows 需要手动安装 Wintun 驱动吗?

不能仅凭旧教程判断。不同客户端的打包方式不同,先看当前客户端日志、适配器列表和官方说明;如果客户端已经自带所需组件,不要重复安装第三方驱动。

Linux 没有 TUN 设备,应该先改配置吗?

先检查运行权限、/dev/net/tun 是否存在、容器权限和网络能力。设备层没有准备好时,继续调整规则或 DNS 通常不会解决问题。

常见问题

为什么 TUN 开关已打开,但 Mihomo 连接列表为空?

优先检查管理员权限、虚拟网卡、系统路由、auto-route、出口接口以及其他 VPN。开关开启不等于应用流量已经进入核心。

连接记录显示 DIRECT,说明 TUN 没有接管吗?

不一定。连接已经出现在核心中,通常说明流量至少进入了 Mihomo;DIRECT 更可能是规则或策略组决定了直连。

开启 TUN 后只有域名打不开怎么办?

检查 DNS 模块、dns-hijack、Fake-IP、IPv6、私人 DNS 和局域网 DNS 限制,并结合 DNS 日志确认请求是否进入 Mihomo。

Windows 是否必须单独安装 Wintun?

不能一概而论。不同客户端的组件打包方式不同,应以当前客户端说明、日志和适配器列表为准,不要重复安装未经核实的驱动。

Linux 没有 TUN 设备该怎么处理?

先检查运行权限、/dev/net/tun、容器网络能力和防火墙;设备层未准备好时,修改规则或 DNS 通常无效。

相关阅读

参考资料

  1. Mihomo 官方 TUN 配置文档
  2. MetaCubeX Dashboard 官方文档中的桌面 TUN 说明
  3. Microsoft Learn:Get-NetAdapter
  4. Microsoft Learn:Get-NetIPConfiguration
  5. Microsoft Learn:route 命令
  6. Apple:登录项与扩展中的网络扩展
  7. Apple:macOS 网络设置
  8. Linux ip 命令手册(man7.org)