TUN 模式开启失败,最常见的原因是客户端没有足够的系统权限(没装服务模式,也没以管理员身份运行),其次是与其他 VPN 或虚拟网卡冲突。最快的办法是:在客户端里安装并启用「服务模式」,退出其他 VPN 和加速器后再开启 TUN。
问题表现
- 点击 TUN 开关后自动弹回关闭,或提示「权限不足」「需要服务模式」;
- 日志出现
configure tun interface: Access is denied、operation not permitted等错误; - TUN 显示已开启,但所有网站都打不开,或只有部分软件能上网;
- 开启 TUN 后局域网里的打印机、NAS 等设备无法访问。
TUN 模式需要什么条件
TUN 模式会在系统中创建一块虚拟网卡并修改路由表,从而接管所有程序的流量,因此需要系统级权限:
| 系统 | 常见要求 |
|---|---|
| Windows | 管理员权限或客户端的服务模式;Wintun 虚拟网卡驱动 |
| macOS | 客户端的服务模式或辅助程序授权(需输入一次系统密码) |
| Linux | root 权限,或为内核程序授予 CAP_NET_ADMIN 能力 |
| Android / iOS | 通过系统 VPN 接口实现,首次需允许添加 VPN 配置 |
TUN 的原理与适用场景见《TUN 模式详解》。
可能原因与对应处理
| 原因 | 典型表现 | 处理方法 |
|---|---|---|
| 未安装或未启用服务模式 | 开关自动弹回、提示权限不足 | 安装服务模式或以管理员身份运行 |
| 其他 VPN / 加速器冲突 | 开启成功但无法上网、路由混乱 | 退出其他 VPN 工具 |
| 虚拟网卡驱动异常 | 日志提示创建设备失败 | 重装客户端、检查安全软件 |
| DNS 未劫持 | 能连 IP 但域名解析失败 | 开启 DNS 劫持和内置 DNS |
| 协议栈不兼容 | 部分程序不通或频繁断流 | 切换 stack |
排查方法
- 查看日志:TUN 失败时日志通常写明是权限、设备创建失败还是路由冲突。
- 检查服务模式:在 Clash Verge Rev 设置中确认「服务模式」显示已安装并启用。
- 检查其他虚拟网卡:Windows 在 PowerShell 中列出所有网卡,留意多余的 TAP、Wintun、WireGuard 网卡;macOS 查看 utun 虚拟接口;Linux 查看接口和默认路由。
Get-NetAdapter | Select-Object Name, InterfaceDescription, Status
ifconfig | grep utun
ip link show
ip route show default
- 检查安全软件:查看是否拦截了驱动安装或服务启动。
- 确认 DNS 设置:TUN 下一般需要让 DNS 请求进入内核,例如 mihomo 配置里的
tun.dns-hijack设为any:53,同时开启dns.enable。
解决步骤
Windows
- 在客户端中点击「安装服务模式」,按提示授权,完成后启用服务模式;
- 不使用服务模式时,右键客户端选择「以管理员身份运行」;
- 重新开启 TUN,如果失败,可在
tun.stack的system、gvisor、mixed之间切换再试; - 驱动异常时,卸载并重装最新版客户端以重新安装 Wintun。
macOS
- 在客户端中安装服务模式或辅助程序,按提示输入系统密码;
- 系统提示「后台项目已添加」或要求在「隐私与安全性」中允许时,选择允许;
- 在「系统设置 → VPN」中断开其他已连接的配置后,重新开启 TUN。
Linux
- 以 root 运行内核,或为内核文件授予网络能力(路径换成实际位置):
sudo setcap cap_net_admin,cap_net_bind_service=+ep /usr/local/bin/mihomo
- 确认系统存在
/dev/net/tun,不存在时执行sudo modprobe tun。
通用
- mihomo 内核一般同时开启
tun.auto-route和tun.auto-detect-interface;tun.strict-route会更严格地防止流量绕过 TUN,但可能导致局域网访问异常,出问题时可先关闭。 - 局域网设备无法访问时,让
192.168.0.0/16、10.0.0.0/8等私有网段走直连,或在tun.route-exclude-address中排除。 - 开启客户端 DNS 后若出现部分网站或游戏异常,可能与 fake-ip 有关,参见《DNS 设置教程》和《代理 DNS 问题》。
验证结果
- TUN 开关保持开启,日志中没有报错;
- 在没有设置代理环境变量的终端执行下面的命令能返回状态码(Windows PowerShell 写成
curl.exe):
curl -I https://www.google.com
- 客户端连接页能看到非浏览器程序的连接。
其他方案
TUN 始终无法稳定运行时,可以先使用系统代理模式(参见《系统代理错误》),只为个别程序单独配置代理。也可以把代理部署在路由器上,参考《路由器使用机场教程》。如果连内核都启动不了,先处理《客户端无法启动》。TUN 开启失败属于本地软件与系统问题,通常不需要联系机场客服。
常见问题
开了 TUN 还需要开系统代理吗?
不需要。TUN 已经接管了所有程序的流量,系统代理可开可不开。两者同时开启时,确保系统代理端口与客户端设置一致即可。
TUN 开启后国内网站变慢或打不开?
多半是规则或 DNS 设置问题,国内域名被解析到了远端或走了代理。检查分流规则中国内域名和 IP 是否走直连,并确认 dns.nameserver 使用了可用的国内 DNS。
协议栈选 system 还是 gvisor?
system 使用系统网络栈,性能通常较好;gvisor 在用户态处理,兼容性更好但开销更高;mixed 是两者结合。哪个能稳定工作就用哪个,没有绝对优劣。
公司 VPN 和 TUN 能一起用吗?
两者都会修改路由表,同时运行很容易冲突。建议用时只开一个,或者在规则里把公司内网网段设为直连,并只在需要时连接公司 VPN。