知识百科
TUN 是什么:虚拟网卡接管全部流量的原理、与系统代理的区别、什么时候需要
解释 TUN 模式:客户端创建虚拟网卡并修改路由表,操作系统把所有出站流量交给它处理。说明它与系统代理的根本区别、为什么终端程序与游戏需要它、栈模式(system、gvisor)的含义、DNS 劫持的必要性,以及权限要求。
系统代理是「请程序把流量发给我」,TUN 是「不管程序愿不愿意,流量都要经过我」。这是两者的根本区别。
原理
- 客户端创建一张虚拟网卡(Windows 用 wintun 驱动,macOS 用网络扩展,Linux 用 tun 设备)。
- 客户端修改系统路由表,默认路由指向这张虚拟网卡。
- 任何程序发出的数据包被操作系统送到虚拟网卡。
- 客户端从虚拟网卡读取数据包,解析目标,按规则决定直连还是通过节点代理。
- 直连的包从真实网卡发出,代理的包加密后发到节点。
程序完全无感,它以为自己在正常联网。
与系统代理的对比
| 维度 | 系统代理 | TUN |
|---|---|---|
| 覆盖 | 读系统代理设置的程序 | 全部程序 |
| 终端程序 | 需设环境变量 | 自动 |
| UDP | 通常不走 | 走 |
| 权限 | 无 | 管理员 / 扩展授权 |
| 开销 | 无 | 轻微 |
详见 系统代理与 TUN 怎么选。
什么时候需要
- Claude Code、Codex CLI 等终端工具
- 游戏(多为 UDP)
- 不读系统代理的软件
- 想一次配置全局生效
只用浏览器时不必开。
栈模式
处理虚拟网卡数据包的协议栈实现:
- system: 使用操作系统协议栈,性能好,Windows 上偶发兼容问题。
- gvisor: 用户态协议栈,兼容性好,开销略高。
- mixed: TCP 走 system,UDP 走 gvisor。
默认 mixed 或 gvisor,异常时切换。
DNS 劫持
TUN 接管了流量,但系统的 DNS 请求默认发往系统配置的 DNS 服务器。不劫持的话,域名解析仍在本地完成,可能被污染。开启 DNS 劫持后,53 端口的请求被重定向到客户端处理。见 DNS 是什么。
权限
创建网卡与修改路由需要高权限:Windows 安装服务模式或管理员运行,macOS 授权网络扩展。这是 TUN 启动失败的主要原因,见 TUN 无法启动。
开启方法
Clash Verge 见 TUN 模式教程;sing-box 客户端默认 TUN;iOS 与 Android 的客户端都以 VPN 模式工作,等价于 TUN。
常见问题
- TUN 模式是什么意思?
- 客户端创建虚拟网卡接管系统全部网络流量的工作模式。任何程序的流量都会经过客户端,无需单独配置。
- TUN 和系统代理哪个好?
- 只用浏览器,系统代理够用且无需权限;用终端工具或游戏,必须 TUN。TUN 是更全面的方案。
- TUN 模式的栈是什么?
- 处理虚拟网卡数据包的网络协议栈实现。system 用系统栈,gvisor 用用户态栈,mixed 混合。Windows 上出问题时在三者间切换。