TUN 模式:让整台设备的流量都经过客户端
系统代理只管"愿意听话"的程序,TUN 管所有程序。
TUN 模式是什么?客户端创建一块虚拟网卡,把设备的网络流量引到这块网卡上再由客户端分流。它能让不读取系统代理设置的程序(如部分游戏、命令行工具)也走代理,但需要更高权限,也更容易与其他网络软件冲突。
系统代理 vs TUN
| 对比项 | 系统代理 | TUN 模式 |
|---|---|---|
| 原理 | 修改系统的代理设置,程序自愿遵守 | 虚拟网卡接管流量,程序无法绕过 |
| 覆盖范围 | 只覆盖会读取系统代理的程序 | 几乎覆盖全部 TCP/UDP 流量 |
| 权限 | 一般不需要管理员权限 | 通常需要管理员权限或服务模式 |
| 冲突风险 | 较低 | 与其他 VPN、虚拟网卡软件容易冲突 |
什么时候该用 TUN
- 程序不读系统代理:部分游戏、命令行工具、某些桌面应用。
- 需要接管 UDP 流量。
- 想在没有图形界面的场景下统一接管(如路由器、软路由,属于进阶内容)。
开启前的准备
- 确认客户端和内核支持 TUN,并以需要的权限运行。
- 关闭其他可能创建虚拟网卡的 VPN 或加速软件,避免抢路由。
- 确认 DNS 设置合理(见代理 DNS 设置),TUN 常和 DNS 劫持一起使用。
Mihomo 风格的 tun 配置示例
tun:
enable: true
stack: mixed
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53- stack
- 网络栈实现,常见取值有 system、gvisor、mixed,不同取值在兼容性和性能上各有取舍。
- auto-route
- 自动设置系统路由,把流量导向虚拟网卡。
- dns-hijack
- 劫持 DNS 请求,让解析也交给客户端处理。
stack 的三种取值有什么区别
TUN 配置里的 stack 决定用哪种方式处理虚拟网卡上的网络栈。它们在兼容性、性能和资源占用上各有取舍,没有绝对的优劣,常见做法是先用默认值,遇到问题再换。
| stack | 特点 | 什么时候考虑 |
|---|---|---|
| system | 借助系统自身的网络栈,开销小 | 系统与网络环境较"标准"时 |
| gvisor | 用户态网络栈,兼容性更强 | system 出现异常、需要更好兼容时 |
| mixed | 两者的折中,TCP 与 UDP 采用不同方式处理 | 作为日常的默认选择 |
与局域网、NAS、远程桌面共存
开启 TUN 之后,本地局域网里的设备访问(比如访问家里的 NAS、打印机、远程桌面)有时会被一起接管,导致原本能直连的地址变得访问不了。解决办法是在规则里为私有地址段写好直连规则,并确认 TUN 的路由配置没有把这些地址段强行导入虚拟网卡。排查时,可以先关闭 TUN 确认局域网访问恢复,再逐项打开,找到是哪一项把局域网"吃掉"了。
TUN 与系统代理可以同时开吗
可以,但要明白它们是两条独立的接管路径:系统代理管"愿意读设置的程序",TUN 管"所有程序"。同时开启时,同一个连接可能先被系统代理接走,也可能被 TUN 接走,行为取决于程序自身。如果出现重复代理(流量被代理了两次)之类的怪异现象,建议只保留一种接管方式,先稳定下来再调。
不同系统上的权限差异
- Windows:通常需要管理员权限,或者安装客户端提供的服务模式,让它以更高权限运行。
- macOS:首次启用会弹出系统授权,需要在系统设置里允许相应的网络扩展或权限。
- Linux:创建虚拟网卡与修改路由需要相应的权限,常见做法是赋予内核相应的能力,或以特权方式运行。
TUN 模式的"取舍清单"
是否开启 TUN,是一个典型的取舍问题。它带来的好处很明确:让不读取系统代理的程序也走代理,覆盖更全。它带来的代价同样明确:需要更高权限,可能与其他网络软件冲突,出现问题时排错更复杂。把这些放在一起权衡,就能做出符合你需求的决定,而不是"听说 TUN 更强就开启"。
| 如果你… | 建议 |
|---|---|
| 只用浏览器与常见的网页应用 | 系统代理就够了,不必开启 TUN |
| 需要终端、游戏、特定桌面应用走代理 | 考虑 TUN,并做好冲突排查 |
| 不熟悉网络与权限设置 | 先用系统代理,等熟悉后再尝试 |
| 已经开启 TUN 但频繁出现网络问题 | 关闭 TUN,回到系统代理 |
一个很实用的原则是:只在确实需要的时候才开启 TUN,并且知道怎么在几秒钟内把它关掉。能随时回退,才算真正"掌控"了它。
关于「TUN模式」的常见问题
TUN 一定比系统代理好吗?
不一定。覆盖更广,但冲突和权限问题也更多。日常浏览,系统代理加规则模式通常够用。
TUN 模式会让速度变慢吗?
它多了一层虚拟网卡转发,理论上有额外开销,实际影响取决于设备和网络。
开了 TUN 之后,游戏或下载变慢了,是 TUN 的问题吗?
有可能,多了一层虚拟网卡转发总会有开销;也可能是规则让本该直连的流量走了代理。先对比关闭 TUN 与开启 TUN 的表现,再检查规则。
TUN 能不能只对某个程序生效?
多数客户端支持按进程名分流的规则,可以让指定程序走代理、其他程序直连,这属于规则层面的设置,不是 TUN 本身的开关。