开了代理,浏览器能上外网,但游戏还是卡、语音还是断、某个软件怎么都不走代理——这不是节点坏了,是系统代理的固有限制。
这篇文章讲清 TUN 模式:它解决什么问题、Clash Verge 和 sing-box 分别怎么开、以及为什么很多人开了之后变成"直接上不了网"。
系统代理(Windows 的"代理服务器"设置、macOS 的网络代理)本质是把一个 HTTP/SOCKS 地址写进系统配置,只有主动去读这个配置的程序才会走代理。浏览器会读,绝大多数游戏不读。
更关键的是协议层:系统代理工作在应用层,且绝大多数实现只处理 TCP。而游戏用的是 UDP。结果就是——Clash 的日志里网页流量刷刷走代理,游戏的 UDP 包一直在直连。
典型表现:
- 浏览器能打开 YouTube,游戏延迟一点没变;
- Discord 语音、游戏内语音时通时断;
- 某些 P2P 类工具完全走不动。
TUN 模式会在系统里创建一块虚拟网卡,把三层(IP 层)的流量整体接管进代理内核。因为工作在网络层,它不关心上层用什么协议——TCP、UDP、ICMP 全都能接管,游戏自然也在内。
| 系统代理 | TUN 模式 | |
|---|---|---|
| 工作层 | 应用层(HTTP / SOCKS) | 网络层(IP) |
| 覆盖范围 | 只覆盖主动读代理设置的程序 | 全系统流量 |
| UDP | 基本不支持 | 支持 |
| 权限要求 | 普通用户即可 | 需要管理员 / root |
| 典型场景 | 浏览器、下载 | 游戏、语音、不认系统代理的软件 |
- 玩外服游戏,希望游戏流量走线路更好的服务器;
- 用 Discord 或游戏内语音,UDP 走不动;
- 某个软件怎么都不走代理(它不读系统代理设置);
- 希望按域名 / IP 规则分流,但要求覆盖全系统,而不是逐个软件配代理。
如果只是浏览器上外网,系统代理就够了,不必开 TUN。 TUN 的权限要求更高、排错也更麻烦,没必要为了"看起来更彻底"去开。
- 先装服务模式。 Clash Verge 首页有"安装服务"(Service Mode)入口。Windows 下需要管理员权限装一次,装好后 TUN 才能创建虚拟网卡。这一步没做,TUN 开关会亮但不起作用,是最常见的坑。
- 打开 TUN 模式开关(设置或首页)。
- 选 TUN 栈(内核设置里):
gvisor:用户态实现,兼容性最好,默认推荐;system:走系统网络栈,性能更好,但依赖系统支持,出问题时更难查;mixed:混合,多数情况可用。
- 处理 DNS。 TUN 模式下 DNS 必须由内核接管,否则会出现"能 ping 通 IP、但域名解析不了"。在 Clash Verge 的 DNS 设置里启用 DNS 并配置劫持(dns-hijack),让 DNS 请求也进入内核处理。
在配置文件的 inbounds 里加一个 tun 入口:
{
"type": "tun",
"tag": "tun-in",
"interface_name": "singbox-tun",
"address": ["172.19.0.1/30", "fdfe:dcba:9876::1/126"],
"mtu": 9000,
"auto_route": true,
"strict_route": true,
"stack": "mixed",
"sniff": true
}
配套的 route 段至少要有:
{
"route": {
"auto_detect_interface": true,
"final": "proxy"
}
}
权限问题(Linux 必看):auto_route 需要创建路由,普通用户会失败。要么直接用 root 运行,要么给二进制授权限:
sudo setcap cap_net_admin,cap_net_raw+eip $(which sing-box)
这是最容易被忽略的一环:客户端做完了,服务端协议不支持 UDP,游戏照样走不动。
- 基于 QUIC(UDP)的协议:Hysteria2、TUIC —— UDP 转发最自然,游戏场景首选;
- 基于 TCP 的协议:VLESS / VMess / Trojan 虽然可以通过 UDP-over-TCP 转发 UDP,但效率差,而且很多服务端配置里直接把 UDP 关掉了。如果你的服务端 inbound 只写了
"network": "tcp",UDP 就过不去。
所以:想让游戏走代理,服务端协议和客户端 TUN 要一起配。本站另一篇《如何配置 Clash Verge 服务端(自建机场)》用的就是 Sing-Box + Hysteria2 内核,那个组合天生带 UDP,适合直接拿来配 TUN。
- 虚拟网卡有没有真的建起来:Windows 在"网络适配器"里找 Clash / sing-box 的设备,Linux 用
ip addr看有没有 tun 设备。没有 → 回到"服务模式 / 权限"那一步。 - DNS 能不能解析:
nslookup example.com、curl -v https://example.com。IP 通但域名不通 → DNS 没被接管。 - 是不是只有 TCP 走了代理:检查分流规则里 UDP 有没有被 REJECT,或没落到 proxy 出站。
- 服务端支不支持 UDP:见上一节,换 Hysteria2 / TUIC 试。
- MTU:大包被丢的典型症状是"能 ping 通、网页打不开"。把 MTU 从 9000 往下降(1500 是通用安全值)再试。
- 安全软件 / 防火墙:部分杀软会拦截虚拟网卡或篡改路由表,先临时关掉验证。
TUN 模式只是把你的流量导向你指定的服务器,它不是加速器。开了之后的延迟大致是:
你的本地网络 → 你的 VPS → 游戏服务器
所以:
- 如果你的 VPS 到游戏服的线路比你本地直连更好(比如你本地到日本绕路,而 VPS 走的是软银 / IIJ / CN2 这类优质线路),延迟会明显下降、丢包会改善;
- 反过来,如果 VPS 的线路比你直连还差,延迟会变高——多了一跳,还多了一段绕路。
结论:先测再决定。 用 ping 和 mtr 分别测"直连游戏服"和"经 VPS 到游戏服"的延迟与丢包,不要凭感觉。
另外提醒:部分竞技类游戏的服务条款对代理 / VPN 有风控,可能触发额外验证甚至封号,动手前先确认游戏自身的规定。
TUN 模式解决的是"系统代理管不到 UDP 和非浏览器流量"这个问题。 开之前先确认你真的需要它;开的时候记住三件事:服务模式 / 权限要装好、DNS 必须交给内核、服务端协议要支持 UDP。至于能不能真的降低游戏延迟,取决于你的 VPS 到游戏服的线路——测过才算数。
