TUN 模式无法使用怎么办?开启失败、开了断网与 DNS 问题排查
本文要点
- TUN 开不起来先看是否安装了服务模式或授权了系统扩展,这是桌面端最常见的原因。
- 开了 TUN 后断网多是 DNS 劫持没生效或 IPv6 没处理,先关闭 IPv6、改用 fake-ip 测试。
- 系统代理够用的场景不必开 TUN,TUN 主要给游戏、命令行和不走代理的应用。
现象是什么
TUN 模式有几种典型故障:开关点了打不开,提示权限不足、驱动安装失败或服务未运行;能打开,但一开就整台设备断网,国内国外都上不了;能打开也能上网,但目标程序(游戏、命令行)还是没走代理。本文以 Clash Verge Rev 为主,sing-box、Clash Meta for Android 的原理一致。
TUN 的原理是建一张虚拟网卡,把系统所有流量引过来,由客户端决定走代理还是直连。它比系统代理覆盖面广,但对权限、DNS、路由的要求也高,出问题的环节更多。两者的区别见 系统代理无法开启。
先做 1 分钟快速检查
- 先确认系统代理模式下节点能正常用。系统代理都不行的话,问题不在 TUN,先解决节点和订阅。
- 退出所有其他 VPN、代理、加速器、虚拟机网络工具,它们的虚拟网卡最容易和 TUN 冲突。
- 看客户端日志里关于 tun、wintun、utun、route、dns 的报错。
逐步排查
- 服务未安装或权限不足(开不起来)。Windows 上 Clash Verge Rev 需要安装服务模式,或者以管理员身份运行;在设置里找到服务模式的安装按钮点一下,成功后重启客户端。macOS 上首次开启会要求在系统设置的隐私与安全性里允许网络扩展,并输入密码;之前拒绝过的要手动去放行。Android 则是首次开启时的 VPN 连接请求,拒绝过要在系统设置的 VPN 里重新允许。
- 虚拟网卡驱动问题(开不起来)。Windows 日志里出现 wintun、adapter 相关报错,常见于驱动被杀毒软件拦截或残留了旧版本驱动。加白名单后重装客户端;在设备管理器的网络适配器里删除多余的 TUN/TAP 网卡再重试。
- 其他 VPN 的虚拟网卡冲突(开了断网或不稳定)。其他软件残留的虚拟网卡和路由表,会和 TUN 争抢默认路由。卸载不用的 VPN 软件,或者在网络适配器里禁用它们的网卡。
- DNS 没有被处理(开了断网)。TUN 接管全部流量后,如果 DNS 请求没被客户端拿到或者解析失败,所有域名都解不出来,表现为全网断开。在客户端的 TUN 设置里开启 DNS 劫持(通常是劫持 53 端口),DNS 模式改为 fake-ip 测试;同时确认配置里的 DNS 服务器可用。DNS 原理问题见 DNS 解析失败。
- IPv6 导致的半断网(部分网站打不开)。本地网络有 IPv6,TUN 只处理了 IPv4,浏览器优先走 IPv6 就会失败。在客户端里关闭 IPv6,或在系统网络设置里暂时禁用 IPv6。
- TUN 栈类型不兼容(开了卡顿或断网)。客户端一般提供几种协议栈选项(如 system、gvisor、mixed)。某些系统和防火墙组合下其中一种不稳定,换另一种再试。
- 防火墙拦截虚拟网卡流量(开了断网)。Windows 防火墙可能把新建的虚拟网卡归到公用网络并拦截。在防火墙里放行客户端程序,或将该网卡设置为专用网络。
- 程序仍不走代理(TUN 正常但目标程序没变化)。确认程序没有绑定到特定网卡,也不是以更高权限运行(管理员权限的程序有时会绕过普通权限的 TUN)。以相同权限运行客户端,或者给客户端也用管理员身份启动。
问题类型速查
| 现象 | 优先检查 |
|---|---|
| 开关打不开,提示权限 / 服务 | 安装服务模式、授权系统扩展 |
| 开关打不开,日志提 adapter / wintun | 驱动被拦或残留网卡 |
| 开了全部断网 | DNS 劫持、fake-ip、其他 VPN 网卡 |
| 开了部分网站打不开 | IPv6 |
| 开了卡顿、频繁断 | 换 TUN 栈类型、防火墙放行 |
| 开了但目标程序没走代理 | 程序权限级别、绑定网卡 |
仍未解决时
先退回系统代理模式保证基本可用,然后换一个实现 TUN 的客户端对比,例如从 Clash Verge Rev 换到 sing-box,如果新客户端的 TUN 正常,说明是原客户端与你系统环境的兼容问题。手机上 TUN 相关的异常更多表现为后台断连,见 后台断连处理。完整的 TUN 配置步骤在 TUN 模式使用 里。
常见问题
开启 TUN 模式后为什么全部断网?
通常是 DNS 没有被正确处理:TUN 接管了所有流量,但域名解析走不通,所有请求卡在解析阶段。在客户端的 TUN 或 DNS 设置里开启 DNS 劫持、尝试 fake-ip 模式,关闭系统 IPv6 后重试。也可能是另一个 VPN 的虚拟网卡在争抢路由。
TUN 模式提示需要管理员权限或安装服务怎么办?
TUN 需要创建虚拟网卡,必须有系统级权限。Windows 上在客户端设置里点安装服务模式,或者以管理员身份运行;macOS 上到系统设置的隐私与安全性里允许该软件的网络扩展,并在弹出密码框时输入密码确认。
什么时候需要用 TUN 模式?
当需要走代理的程序不读取系统代理设置时,比如游戏、命令行工具、某些桌面软件。普通网页浏览用系统代理就够,TUN 会额外占用一些资源,也更容易遇到 DNS 和 IPv6 问题。能用系统代理解决的,优先用系统代理。