TUN 要三样东西,缺一样就起不来

内核得建一块虚拟网卡,得改路由表把默认出口指过去,还得有足够权限干这两件事。缺一样,开关就按不住。别急着重装客户端——先打开日志页,翻到你按下开关的那一刻,TUN 相关那几行会写明是权限不够、设备打不开,还是路由根本没设成。读懂那一行,下面的分诊就快多了。

  • 虚拟网卡。Windows 上靠 Wintun 驱动,macOS 和 Linux 用系统自带的 utun / tun 设备。
  • 路由表。默认路由要挪到虚拟网卡上,这在主流系统里都属于特权操作。
  • 权限。管理员、root,或者客户端事先装好的后台服务。
合作推荐订阅链接从哪来?本站合作机场注册即送 1GB 香港高速体验流量,可直接一键导入。获取高速节点

Windows:驱动、提权,以及服务模式

  • 驱动文件不在了。客户端一般把 Wintun 的 dll 放在可执行文件旁边,被安全软件隔离、或者解压时没解全,网卡都建不起来。重新完整解压一次,再把客户端目录加进杀毒软件白名单。
  • 没提权。最直接的办法是右键「以管理员身份运行」。嫌每次都点很烦,就去装服务模式。
  • 另一个 VPN 客户端还在跑。公司 VPN、游戏加速器、另一套代理工具,谁先抢到默认路由谁说了算。要彻底退出,缩到托盘不算。
  • Hyper-V、WSL2、Docker Desktop 都会往系统里加虚拟网卡,路由表比一般机器复杂。TUN 建得起来却抢不到默认出口,症状看着就像「开了却没网」。

服务模式(有的客户端写作 Service Mode 或系统服务)值得单独说。它装一个常驻的系统服务,由服务去动网卡和路由,客户端本体就不必每次提权。Clash Verge Rev 的设置页里有单独的安装按钮,装完之后普通双击启动也能开 TUN。安装当下会弹一次 UAC,这一次躲不掉。

macOS:卡在授权那一步的人最多

  • 第一次开 TUN,系统会弹密码框要你授权一个后台助手。点了取消,之后常常就不再问,开关便一直弹回去。把客户端退出重开,或者在客户端里找重装助手的入口,让它重新问一次。
  • 系统设置里的登录项与后台扩展列表,对应那一条可能被关掉过。关掉了助手就起不来。
  • utun 设备被占着。公司 VPN、Tailscale 这类都会建自己的 utun。先断掉再试。

Linux:权限和 /dev/net/tun

  1. 先确认 tun 设备到底在不在。精简内核和容器环境里经常没有,得先把 tun 模块加载起来。
  2. 以普通用户跑二进制没有网络管理权限。要么用客户端提供的服务模式,要么给二进制加上 CAP_NET_ADMIN。
  3. 内核二进制更新之后 capability 要重新加一次。覆盖安装会把它抹掉,故障看起来像是全新的。
ls -l /dev/net/tun
sudo modprobe tun
sudo setcap cap_net_admin,cap_net_raw+ep /path/to/mihomo

开起来了,却还是没网

route print 0.0.0.0
netstat -rn
ip route show

三条分别对应 Windows、macOS 和 Linux,看默认路由现在指向谁。还指着物理网卡,就是 auto-route 没生效,或者被别的程序改回去了。指向虚拟网卡却仍然不通,那就往 DNS 和防火墙上想:TUN 需要接管 53 端口的查询,被系统或杀毒软件的防火墙挡住虚拟网卡时,流量进得去出不来。还有一种是系统代理和 TUN 同时开着——有的客户端会自己处理回环,有的不会,排障期间只留一个。

TUN 不是必需品。它解决的是「程序不读系统代理」这一类问题;如果你的流量几乎就是浏览器,系统代理够用,而且能省掉这篇里所有驱动和权限的麻烦。为了开 TUN 折腾掉一个下午之前,先想清楚到底需不需要它。