Mihomo TUN 模式 Windows 配置详解:从驱动安装到排错(2026)
Windows 上开 Mihomo TUN 模式最容易卡在 Wintun 驱动加载、管理员权限和路由表冲突三步。本文按驱动检查、YAML 参数逐项拆解、三种模式对比、常见错误码和回滚方式组织,每项都给了设备管理器或命令行验证方法。把准备材料、配置差异和上线后的收尾动作放在一起,减少照搬旧教程带来的误判。
你打开 Clash Verge Rev 或 Mihomo Party 的系统代理,浏览器、Telegram 这些支持代理设置的程序都能正常工作。然后你试着玩了一把游戏,发现延迟还是直连的;打开命令行跑 curl api.github.com,也返回了连接超时。
这就是系统代理的天花板——它只对主动读取 Windows 代理设置的程序生效。游戏、命令行工具、Windows Store 下载的 UWP 应用、Docker Desktop、WSL 里的 Linux 子系统,这些程序完全不吃系统代理那一套。
Mihomo 的 TUN 模式就是干这个的:在 Windows 网络栈里插入一张虚拟网卡,把所有流量(TCP、UDP、ICMP)引到这张网卡上,由 Mihomo 内核决定哪些走代理、哪些直连。不依赖程序是否支持代理设置,不要求每个软件单独配置。
但这套东西在 Windows 上的实现依赖一个叫 Wintun 的驱动(来自 WireGuard 项目),从驱动加载到路由表写入,中间有四五个容易翻车的节点。这篇文章按配置顺序把每个参数和每个可能的报错拆开。
Windows 上跑 TUN 和 Linux/macOS 有什么不一样
Linux 有 /dev/net/tun,macOS 有 utun,都是操作系统内置的虚拟网络接口。Windows 没有这层原生能力,必须靠第三方驱动——Mihomo 用的就是 Wintun。
Wintun 做的事情很简单:注册一个内核级虚拟网卡,把从 IP 层发来的包交给用户态程序(Mihomo 内核)处理。问题在于 Windows 对内核驱动加载有三重限制:
- 管理员权限。加载任何内核驱动都需要管理员 token,少这一步 TUN 直接创建失败。
- 驱动签名强制。Windows 10/11 默认要求内核驱动有数字签名。Wintun 有 WireGuard LLC 的有效签名,但部分企业 IT 策略会额外拦截非白名单驱动。
- 杀毒软件和 Defender。Wintun 的行为签名(创建虚拟网卡、注入路由表)容易触发启发式检测,Defender 可能静默拦截驱动加载。
这三重限制意味着:同一份 TUN 配置在个人 Windows 11 上跑得好好的,换到公司的 Windows 10 加入域的机器上就可能完全打不开。这篇文章的排错部分会逐一覆盖这三种情况。
TUN 配置参数:每个参数到底控制什么
Mihomo 的 TUN 配置在 YAML 顶层 tun: 键下,以下是核心参数:
| 参数 | 控制什么 | Windows 上的推荐值 | 不推荐的后果 |
|---|---|---|---|
enable | TUN 模式总开关 | true | 无 TUN,等于白写这一节 |
stack | 网络栈实现方式:system(Wintun)/gvisor(用户态)/mixed(TCP 进 system + UDP 进 gvisor) | mixed | system 性能最高但 UDP 可能触发某些游戏反作弊;gvisor 纯用户态但带宽掉 20-30% |
device | 虚拟网卡在系统中的显示名称 | Mihomo | 不设就自动生成,排查路由表时不好辨认 |
dns-hijack | 劫持哪些地址的 53 端口 DNS 查询,写入 Mihomo 的 DNS 模块处理 | [any:53] | 不设的话部分程序会用硬编码 DNS 服务器绕开代理 DNS,导致 CDN 解析到国内节点 |
auto-route | 是否自动设置路由表让流量进入 TUN | true | false 等于 TUN 网卡创建了但没有路由指向它,流量不进 TUN。手工写路由表出错率极高 |
auto-detect-interface | 是否自动检测默认物理网卡并排除其路由,防止回环 | true | false 可能导致 TUN 收到的包又经由物理网卡发给 TUN 自身,造成流量死循环 |
strict-route | 路由表策略是否严格按规则执行,不自动添加兜底路由 | false | true 对高级用户有用(配合手工路由),普通用户开 true 容易导致部分流量被错误丢弃 |
mtu | 虚拟网卡的最大传输单元(字节) | 1500 | 设太小(如 1280)分片过多降低吞吐;设太大(如 9000)遇到不支持巨型帧的路由器会丢包 |
inet4-address | TUN 虚拟网卡的 IPv4 地址/子网 | 172.19.0.1/30 | 不需要改,除非你家里或办公室局域网恰好也用这个地址段。冲突时换一个私有地址段如 10.99.0.1/30 |
endpoint-independent-nat | UDP NAT 类型:是否启用端点无关 NAT(Full Cone) | true | 游戏联机和 P2P 传输关闭这个参数会导致 NAT 类型变为 Restricted Cone,匹配成功率显著下降 |
YAML 配置示例
下面是一份在 Windows 11 + Clash Verge Rev + Mihomo v1.18+ 上验证可用的 TUN 配置段:
tun:
enable: true
stack: mixed
device: Mihomo
dns-hijack:
- any:53
auto-route: true
auto-detect-interface: true
strict-route: false
mtu: 1500
inet4-address: 172.19.0.1/30
endpoint-independent-nat: true
这段配置保存后,客户端开启 TUN 开关即可生效。如果使用的是 Mihomo Party,界面里有一个「TUN 配置」面板可以直接填写以上参数,不需要手动编辑 YAML。但建议先搞清楚每个参数的含义再填——盲目照抄容易在遇到网络环境差异时不知道怎么调。
怎么确认 TUN 驱动真的装好了
光看客户端开关变绿不够。TUN 开关显示绿色只说明 Mihomo 内核成功启动了 TUN 逻辑,不代表驱动加载完成、路由表写入正确。三步验证:
第一步:设备管理器看网卡。 右键开始菜单→设备管理器→展开「网络适配器」。应该能看到名称里带 Wintun 的条目,图标正常无黄色感叹号。双击进去→驱动程序页,提供商为 WireGuard LLC,驱动日期应该在你安装或更新 Mihomo 内核的时间附近。
如果设备管理器里完全没有 Wintun 相关条目:客户端第一次开启 TUN 时驱动没有加载成功。先到 Windows 安全中心的保护历史里看有没有 Wintun 的拦截记录。如果没有拦截记录但驱动仍然不出现,以管理员身份运行客户端,手动开启一次 TUN 再看设备管理器。
第二步:route print 看路由表。 以管理员身份打开 cmd,执行 route print -4。在输出顶部附近找目标网络为 0.0.0.0 且跃点数不是物理网卡最低值的条目,或目标为 198.18.0.0 网段指向 TUN 网卡接口 IP(通常是 172.19.0.x)的条目。有这些说明 auto-route 正常工作,流量确实被引向 TUN 网卡了。
第三步:nslookup 看 DNS 劫持。 在 cmd 里跑 nslookup google.com。如果返回的 IP 不是你家宽带 DNS 通常会解析的结果,说明 dns-hijack 成功把 DNS 请求截到了 Mihomo 的 DNS 模块里。再打开 Mihomo 客户端的 Logs 页面,过滤 DNS,应该能看到这条 google.com 的查询记录。
三步全部通过,TUN 才算真正跑起来了。缺任何一步,回到上面参数表里找对应的参数看是不是设错了。
系统代理、TUN、混合模式:什么时候该用哪个
Windows 上 Mihomo 有三种流量接管方式,它们的区别不只是「TUN 更底层」这么一句话能说清:
| 模式 | 接管层 | 覆盖范围 | 需要管理员 | 适用场景 |
|---|---|---|---|---|
| 系统代理 | 应用层(HTTP/HTTPS/SOCKS5 代理) | 只有读取系统代理设置的程序,对 UWP、命令行、游戏无效 | 不需要 | 日常浏览器上网、聊天软件、轻量使用 |
| TUN | 网络层(IP 包) | 整个系统的所有 TCP/UDP/ICMP 流量 | 必须 | 游戏加速、命令行工具、Docker、WSL、UWP 应用,追求无死角覆盖 |
| 混合(系统代理 + TUN 同时开) | 应用层 + 网络层 | 所有流量全部覆盖 | 必须 | 很少有必要。个别场景下某些浏览器插件只认系统代理设置,同时开可以兼容,但日常没有收益 |
一个常见误判是把「开了系统代理但是某些程序没走代理」当成是规则写错了。先确认那个程序是否支持系统代理:所有 UWP 应用(Microsoft Store 下载的)、cmd/PowerShell、WSL、Docker CLI 都不吃系统代理。如果这些程序需要走代理,只能上 TUN。
另一个误判是「开了 TUN 所以所有流量一定走代理」。TUN 只是把流量引到虚拟网卡上,最终走代理还是直连,取决于你的分流规则。TUN 模式里如果没有写 DIRECT 规则或放行规则,默认行为取决于内核版本和配置——有可能全部走代理,也有可能在规则缺失时直连。上 TUN 之前建议先确认自己的规则集覆盖了常用国内网站的直连规则。
常见错误:从日志到修复
TUN 模式出问题的时候,打开 Logs 页面搜 TUN 或 error,通常能直接看到根因。以下是最常见的四个错误和对应的修复路径:
| 错误日志关键词 | 原因 | 修复步骤 |
|---|---|---|
cannot create TUN device 或 permission denied | 没有管理员权限 | 右键客户端→以管理员身份运行;长期使用建议在客户端设置里开启 Service Mode |
Wintun driver not found 或 driver load failed | Wintun 驱动未安装、被 Defender 拦截、或注册表残留 | 1) 安全中心→保护历史→允许 Wintun;2) 管理员 cmd 执行 sc delete wintun 清残留→重启客户端重试 |
CreateAdapter: The system cannot find the path specified (0x00000003) | Wintun 驱动注册表条目损坏或过时 | 管理员 cmd 依次执行 sc delete wintun → net stop <客户端服务名> → net start <客户端服务名>,让客户端重新注册 Wintun 驱动 |
route conflict 或 TUN 开启后断网 | 路由表与已有 VPN(公司 VPN、WireGuard、Tailscale)冲突 | 暂时关闭其他 VPN 软件确认是否是冲突;长期方案:在 TUN 配置中确保 auto-detect-interface: true,或在规则中把公司内网 IP 段设为 DIRECT |
| TUN 开关反复回弹(点开→马上自动关闭) | Wintun 初始化失败,最常见的原因是被安全软件拦截 | 用 Process Monitor 抓一下 mihomo.exe 的驱动加载行为,看是否有 ACCESS DENIED;如果有,在 Defender 或第三方杀软的排除项里加入 Mihomo 的 exe 路径 |
如果所有错误都对不上
还有一个隐性故障源:其他虚拟网卡驱动的残留。深信服 EasyConnect、旧版 V2RayN、ZeroTier、OpenVPN 的 TAP 驱动卸载不干净,会在 Windows 网络栈里留下冲突的筛选器(filter driver),导致 Wintun 加载后无法绑定 IP 协议。
排查方法:以管理员身份打开 cmd,执行 netsh winsock show catalog,在输出里找非微软的 Layered Service Provider (LSP) 条目。如果看到不属于当前在用软件的 LSP(比如你要找的是 Wintun,却看到了 Sangfor 或 ZeroTier 的注册项),说明旧 VPN 的残留驱动在干扰。可以用 netsh winsock reset 重置整个 Winsock 目录——这之后所有 VPN 软件都需要重新安装,但能解决 90% 的驱动冲突。
想退回去怎么办
如果你试了一圈 TUN 发现不稳定、想回到只开系统代理的状态:
- 关掉 TUN 开关。Overview 页面的 TUN 开关拨到关闭位置,Mihomo 内核会自动删除虚拟网卡的路由条目。大部分情况下关掉就能恢复直连网络。
- 如果关掉后网络断断续续。以管理员身份开 cmd,执行
netsh winsock reset && netsh int ip reset然后重启电脑。这会把 Windows 网络栈完全刷新,所有 VPN 软件配置清零。 - 想彻底删掉 Wintun 驱动。设备管理器→网络适配器→右键 Wintun/Mihomo 网卡→卸载设备→勾选「删除此设备的驱动程序软件」。下次再开 TUN 时客户端会重新从它的资源包里提取 Wintun 驱动并安装。
- 连客户端都想清理。卸载 Clash Verge Rev 或 Mihomo Party 后,手动删除配置目录:Clash Verge Rev 在
%USERPROFILE%\.config\clash-verge-rev\,Mihomo Party 在%APPDATA%\mihomo-party\。删完之后所有回滚都干净了。
TUN 模式的配置和排错确实比系统代理多几层复杂度——驱动、路由表、DNS 劫持每个环节都要对。但一旦跑通,整个系统的网络流量都会被统一接管,不用再纠结「这个程序支持代理吗」。如果你手里的订阅节点在 TUN 模式下带宽跑不上去,一份兼容 Mihomo 全栈的 兼容 Clash / Singbox / V2Ray 的订阅 能减少协议层面的性能损耗。
本文基于 Mihomo v1.18+ 内核和 Windows 11 23H2 编写,设备管理器和 cmd 路径对应 2026 年 5 月的系统版本。Wintun 驱动的具体行为可能因 Mihomo 内核版本和 Windows 更新而变化,排查前先确认 TUN 参数与 Mihomo 官方 config 文档 的描述一致。
相关阅读
来源与时间
本文最后查看时间:2026-05-29。操作路径会随客户端版本变化,遇到按钮名称不一致时,优先按同义菜单和官方文档查看。