TUN 模式无法使用怎么办?开启失败、开了断网与 DNS 问题排查

更新于 约 4 分钟读完故障排查 · 客户端问题

本文要点

  • TUN 开不起来先看是否安装了服务模式或授权了系统扩展,这是桌面端最常见的原因。
  • 开了 TUN 后断网多是 DNS 劫持没生效或 IPv6 没处理,先关闭 IPv6、改用 fake-ip 测试。
  • 系统代理够用的场景不必开 TUN,TUN 主要给游戏、命令行和不走代理的应用。

现象是什么

TUN 模式有几种典型故障:开关点了打不开,提示权限不足、驱动安装失败或服务未运行;能打开,但一开就整台设备断网,国内国外都上不了;能打开也能上网,但目标程序(游戏、命令行)还是没走代理。本文以 Clash Verge Rev 为主,sing-box、Clash Meta for Android 的原理一致。

TUN 的原理是建一张虚拟网卡,把系统所有流量引过来,由客户端决定走代理还是直连。它比系统代理覆盖面广,但对权限、DNS、路由的要求也高,出问题的环节更多。两者的区别见 系统代理无法开启。

先做 1 分钟快速检查

  1. 先确认系统代理模式下节点能正常用。系统代理都不行的话,问题不在 TUN,先解决节点和订阅。
  2. 退出所有其他 VPN、代理、加速器、虚拟机网络工具,它们的虚拟网卡最容易和 TUN 冲突。
  3. 看客户端日志里关于 tun、wintun、utun、route、dns 的报错。

逐步排查

  1. 服务未安装或权限不足(开不起来)。Windows 上 Clash Verge Rev 需要安装服务模式,或者以管理员身份运行;在设置里找到服务模式的安装按钮点一下,成功后重启客户端。macOS 上首次开启会要求在系统设置的隐私与安全性里允许网络扩展,并输入密码;之前拒绝过的要手动去放行。Android 则是首次开启时的 VPN 连接请求,拒绝过要在系统设置的 VPN 里重新允许。
  2. 虚拟网卡驱动问题(开不起来)。Windows 日志里出现 wintun、adapter 相关报错,常见于驱动被杀毒软件拦截或残留了旧版本驱动。加白名单后重装客户端;在设备管理器的网络适配器里删除多余的 TUN/TAP 网卡再重试。
  3. 其他 VPN 的虚拟网卡冲突(开了断网或不稳定)。其他软件残留的虚拟网卡和路由表,会和 TUN 争抢默认路由。卸载不用的 VPN 软件,或者在网络适配器里禁用它们的网卡。
  4. DNS 没有被处理(开了断网)。TUN 接管全部流量后,如果 DNS 请求没被客户端拿到或者解析失败,所有域名都解不出来,表现为全网断开。在客户端的 TUN 设置里开启 DNS 劫持(通常是劫持 53 端口),DNS 模式改为 fake-ip 测试;同时确认配置里的 DNS 服务器可用。DNS 原理问题见 DNS 解析失败。
  5. IPv6 导致的半断网(部分网站打不开)。本地网络有 IPv6,TUN 只处理了 IPv4,浏览器优先走 IPv6 就会失败。在客户端里关闭 IPv6,或在系统网络设置里暂时禁用 IPv6。
  6. TUN 栈类型不兼容(开了卡顿或断网)。客户端一般提供几种协议栈选项(如 system、gvisor、mixed)。某些系统和防火墙组合下其中一种不稳定,换另一种再试。
  7. 防火墙拦截虚拟网卡流量(开了断网)。Windows 防火墙可能把新建的虚拟网卡归到公用网络并拦截。在防火墙里放行客户端程序,或将该网卡设置为专用网络。
  8. 程序仍不走代理(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 问题。能用系统代理解决的,优先用系统代理。

相关客户端问题文章

全部