Mihomo TUN模式怎么开?按权限、网卡、路由与DNS排查
简答:先确认客户端运行的是Mihomo内核并备份配置,关闭其他VPN和虚拟网卡工具,再用默认TUN参数开启;随后按“虚拟网卡—路由与日志—DNS—实际应用”四层验证。若开启后断网,先关闭TUN恢复网络,再一次只调整一个字段。
定义:Mihomo TUN模式是通过虚拟网卡和路由把更多系统流量交给Mihomo处理的工作方式,但最终是否代理仍由规则模式、策略组、DNS和出站配置决定。
先试这一步:5分钟TUN自查卡
本文是一篇中性使用指南,重点说明Mihomo内核的通用设置;不同图形客户端可能把选项放在“设置”“内核设置”“服务”或“覆写”中,菜单名称和权限流程以当前客户端版本为准。
- 记录操作系统、客户端版本和Mihomo内核版本,备份当前配置。
- 先关闭其他VPN、虚拟网卡、网络加速器和可能改写路由表的工具。
- 确认普通系统代理模式下,配置、出站和策略组本身能够工作。
- 使用客户端默认TUN参数启动,不要一开始同时修改协议栈、DNS、MTU和严格路由。
- 开启后依次查看虚拟网卡、客户端日志、路由或路由优先级、DNS记录,再测试真实应用。
当前官方字段依据:Mihomo官方TUN文档列出enable、stack、auto-route、auto-detect-interface、dns-hijack、strict-route和路由排除字段;协议栈可用值应以Mihomo官方TUN配置文档的当前内容为准。
| 现象 | 先检查什么 | 第一步处理 |
|---|---|---|
| TUN开关自动关闭 | 管理员权限、服务、虚拟网卡、启动日志 | 退出冲突工具后以管理员权限重启客户端 |
| 开启后完全断网 | DNS、自动路由、严格路由、核心出站 | 立即关闭TUN恢复网络,再逐项排查 |
| 网页可用但命令行不通 | 应用是否遵循系统代理、规则是否命中 | 查看该进程是否出现在Mihomo连接日志 |
| 局域网或远程桌面失效 | 本地网段、路由排除、防火墙 | 关闭TUN确认范围,再检查目标网段路由 |
Mihomo TUN与系统代理有什么区别
系统代理通常只影响主动读取HTTP、HTTPS或SOCKS代理设置的应用;TUN则通过虚拟网卡和路由把更多流量交给Mihomo处理,因此命令行工具、部分桌面程序或不读取系统代理的应用也可能被纳入处理范围。
TUN不是“自动全局代理”开关。流量进入Mihomo后,仍会按照规则模式、全局模式、直连规则和策略组决定去向。开启TUN后网页能打开,只能说明某个测试路径可用,不能单独证明所有应用、UDP流量、DNS请求和局域网访问都正常。
官方配置示例说明,Mihomo核心的TUN配置支持macOS、Linux和Windows;当前文档还提供Android用户和应用包名的路由字段。由于图形客户端可能对这些字段进行覆写,配置文件、客户端界面和启动参数发生冲突时,应以实际加载配置和日志为准。
Windows桌面端:从默认参数开始开启
- 打开使用Mihomo内核的客户端,确认配置已经导入,并在系统代理模式下完成一次基础连接测试。
- 进入TUN、内核或服务设置,先保留默认的协议栈、自动路由和自动识别出口网卡选项。
- 按提示授予管理员权限;如果客户端要求安装服务或虚拟网卡,按当前客户端提示完成,不要手动复制旧版本驱动。
- 开启TUN后等待数秒,查看日志中是否出现TUN网卡启动、出口网卡识别、自动路由或DNS初始化信息。
- 先测试普通网页,再测试一个不一定遵循系统代理的命令行工具或桌面应用,最后测试局域网地址。
Windows下可使用系统自带命令辅助定位:ipconfig /all查看适配器,route print查看路由,nslookup example.com观察DNS解析。它们只用于缩小范围,不能单独证明TUN已经完整接管流量。命令用途可参考Microsoft ipconfig文档和Microsoft route文档。
如果Windows防火墙阻止了内核或TUN流量,先查看客户端日志和防火墙提示,再针对当前程序或虚拟网卡进行允许;不要为了排障长期关闭系统防火墙。
macOS、Linux与Android:平台差异要单独核对
| 平台 | 最小操作 | 重点差异 |
|---|---|---|
| macOS | 开启TUN后用ifconfig查看接口,用netstat -rn查看路由,并观察客户端日志 | 系统DNS、局域网DNS和应用自带解析可能不完全等同于Mihomo的DNS劫持结果 |
| Linux | 确认用户有创建TUN设备和修改路由的权限,用ip link、ip addr、ip route检查 | 防火墙、策略路由、容器网络和多出口网卡可能影响接管结果 |
| Android | 在客户端中开启VPN/TUN权限,若支持则按应用包名配置包含或排除范围 | Android的Private DNS、系统VPN权限和应用分流可能影响DNS与路由;字段支持以当前客户端为准 |
不要把Windows的菜单或配置文件直接照搬到其他系统。Mihomo官方文档对Android的include-package、exclude-package等字段作了平台限制说明;是否能在某个客户端界面中编辑这些字段,仍需查看该客户端的当前版本。
验证路由时也不要只寻找“默认路由指向TUN”。不同平台可能通过策略路由、分流路由、虚拟接口或系统服务实现接管,应结合路由优先级、客户端日志和实际连接记录判断。
配置文件字段:只展示关系,不是可运行成品
下面仅展示TUN字段关系,不能单独运行。它不包含代理出站、认证、DNS服务器、规则和策略组等完整配置;字段还可能被订阅覆写、客户端设置或启动参数覆盖。修改前请备份,加载后使用当前客户端提供的配置校验功能。
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53
strict-route: false
| 字段 | 作用 | 首次设置原则 |
|---|---|---|
enable | 启用或关闭TUN | 优先由一个配置层控制,避免界面和覆写文件互相覆盖 |
stack | 选择TUN网络协议栈 | 当前官方文档列出system、gvisor、mixed和mips;无明确故障时保留客户端默认值 |
auto-route | 自动配置路由 | 需要系统流量进入TUN时通常需要开启,但多网卡环境要结合路由日志确认 |
auto-detect-interface | 自动识别出口网卡 | 单网卡设备可先保持开启,多网卡、虚拟机和公司VPN环境需重点核对 |
dns-hijack | 将匹配的DNS请求交给Mihomo DNS模块 | 先确认DNS模块已启用,不要将一次解析成功当成无泄漏证明 |
strict-route | 强化路由约束 | 可能影响局域网、虚拟机和远程桌面;遇到异常先关闭TUN恢复 |
mips | 当前官方文档列出的Mihomo自研IP协议栈 | 不要因名称相似而与设备CPU架构混淆,除非当前版本和场景确有测试依据,不要主动切换 |
官方文档建议在没有问题时使用合适的默认协议栈,但不同系统、防火墙和应用组合可能表现不同。协议栈没有脱离版本和平台的“永远最佳”选项;排障时一次只切换一个值,并记录日志前后差异。
四层验证:网卡、路由、DNS、实际应用
- 虚拟网卡:Windows查看网络适配器或设备管理器;Linux查看
ip link和ip addr;macOS查看ifconfig中的相关虚拟接口。看到接口只说明设备创建成功,不代表流量已经正确处理。 - 路由与日志:Windows使用
route print,Linux使用ip route,macOS使用netstat -rn。重点观察路由优先级、分流网段和客户端日志,不要绝对要求默认路由直接显示为TUN接口。 - DNS:查看Mihomo DNS日志、系统DNS状态和实际解析结果。
dns-hijack只处理符合条件的请求,应用自带DoH、Private DNS、局域网解析和平台实现都可能改变结果。 - 实际应用:分别测试浏览器、命令行工具、需要UDP的应用、公司内网或远程桌面,并确认目标进程是否出现在Mihomo连接日志中。
若网卡已创建但没有连接记录,优先检查规则模式、策略组、自动路由和实际加载的配置;若只有DNS异常,检查DNS模块、上游DNS、劫持范围、Private DNS和局域网域名。验证结果只能用于缩小范围,不应直接等同于节点或线路完全可用。
按症状排查与恢复
| 症状 | 判断标准 | 处理顺序 |
|---|---|---|
| TUN开关自动关闭 | 日志无网卡启动记录,或出现权限、服务、驱动错误 | 退出冲突工具,以管理员或具备网络权限的方式启动,重新查看日志 |
| 开启后完全断网 | 关闭TUN后网络立即恢复 | 先恢复默认协议栈,检查DNS与自动路由,再逐项恢复高级字段 |
| 网页可用但命令行不通 | 网页出现在连接日志,命令行没有记录 | 确认该应用是否遵循系统代理、规则是否命中,以及DNS是否可用 |
| 局域网或远程桌面不通 | 关闭TUN后目标内网恢复 | 先记录目标网段和路由,再检查route-exclude-address或客户端的路由排除设置;不要盲目改规则 |
| 游戏或UDP异常 | 网页和TCP正常,但UDP应用失败 | 保持其他参数不变,单独检查协议栈、规则、UDP支持和MTU |
| Docker、虚拟机或公司VPN冲突 | 多网卡或虚拟接口环境下才出现 | 先关闭TUN确认范围,再按出口接口、策略路由和必要网段排除项分流处理 |
路由排除项应放在当前版本实际支持的TUN配置、客户端覆写或系统路由层中;规则组只决定连接去向,不一定等同于操作系统路由排除。找不到当前客户端的配置入口时,先查看实际加载配置和启动日志,不要直接粘贴其他版本教程。
- 关闭TUN,必要时关闭系统代理,确认普通网络恢复。
- 若仍断网,退出客户端并撤销刚创建的服务、虚拟网卡或临时DNS改动。
- 恢复备份配置,撤销临时MTU、严格路由和自定义路由设置。
- 先只启用系统代理确认配置和出站正常,再用默认TUN参数重新测试。
常见问题
1. Mihomo TUN模式是否必须使用全局模式?
不必须。TUN负责让更多流量进入Mihomo,规则模式、全局模式和策略组仍然决定最终走向。首次排查可使用规则模式,并通过连接日志确认规则是否命中。
2. system、gvisor、mixed和mips应该怎么选?
当前官方文档列出这四种值,但没有脱离平台、版本和应用环境的固定最佳选项。首次设置保留客户端默认值;只有在复现具体问题后,才一次切换一个协议栈并观察日志。
3. 开启TUN后为什么会自动关闭?
优先检查管理员权限、服务或虚拟网卡创建、其他VPN冲突、配置覆写和客户端日志。先退出冲突工具并重新授权,再核对当前版本支持的字段。
4. 开启DNS劫持后是不是就能证明没有DNS泄漏?
不能。DNS劫持只处理符合条件的请求,应用自带DoH、Android Private DNS、系统解析器和局域网DNS都可能改变结果。应结合客户端日志、系统DNS状态和实际应用测试判断。
5. 局域网无法访问时,应该改规则还是改路由?
先确认目标网段和关闭TUN后的差异,再查看路由表、客户端日志和当前配置。若是TUN路由接管问题,优先使用当前版本支持的路由排除项;若是连接已进入Mihomo但策略错误,再检查规则和策略组,不要混为一谈。
常见问题
Mihomo TUN模式和系统代理有什么区别?
系统代理主要影响遵循代理设置的应用;TUN通过虚拟网卡和路由接管更多流量,但会引入权限、DNS、路由和虚拟网卡冲突。
Mihomo TUN开启后为什么会断网?
优先检查DNS模块、自动路由、严格路由、虚拟网卡、权限和其他VPN冲突。先关闭TUN恢复网络,再一次只调整一个字段。
Mihomo TUN协议栈怎么选?
当前官方文档列出system、gvisor、mixed和mips。首次设置建议保留客户端默认值,只有复现具体故障后才逐项对照测试。
开启TUN后局域网无法访问怎么办?
先关闭TUN确认问题范围,记录目标网段并查看路由优先级,再检查当前客户端支持的路由排除设置和系统防火墙。
Android能否直接照搬Windows的TUN配置?
不建议。Android还受系统VPN权限、Private DNS和应用包名分流影响,应按当前客户端界面和内核版本单独核对。