TUN 模式是什么?和系统代理有什么区别
引言
在 ClashX Pro 的高级设置中,你会经常看到 TUN Mode(TUN 模式)和 System Proxy(系统代理)这两个选项。虽然它们都能让你在 Mac 上实现代理上网,但背后的实现机制截然不同。本文将从技术原理和实际体验两个维度,为你解析两者的本质区别。
系统代理(System Proxy):应用层的约定
系统代理是操作系统(macOS)通过设置环境变量或系统配置,告诉应用程序:“如果你要访问外网,请先连接到这个指定的端口(通常是本地的 7890 端口)”。
它的特点:
- 依赖协作:应用程序必须遵循操作系统的建议。有些“调皮”的应用会忽略系统代理设置,直接尝试直连。
- 局限性强:绝大多数系统代理只能处理 TCP 流量(网页浏览等),对于基于 UDP 的应用(语音通话、游戏)往往无能为力。
- 配置繁杂:对于终端(Terminal)用户,往往需要手动 export 环境变量。
TUN 模式:网络层的霸道
TUN 是 Tunnnel(隧道)的缩写。在 TUN 模式下,ClashX Pro 会在 macOS 中创建一个虚拟网卡。
它的运行机制:
当你的 Mac 发送任何网络数据时,操作系统会认为这是一个正常的网络请求,并将其丢给这个虚拟网卡。ClashX 就在网卡的另一端守着,捕获到这些数据包后,直接根据规则进行转发。
它的优势:
- 真正的“全局”:不需要应用程序配合。只要数据包想出去,就必须经过虚拟网卡。这解决了那些不支持代理设置的顽固 App。
- 完美兼容 UDP:不仅能处理网页,还能接管游戏、视频流、VoIP 语音等所有类型的流量。
- 透明代理:对于终端应用来说,它们根本不知道自己正在使用代理,就像连上了一台拥有魔法的网线。
我该如何选择?
如果你只是简单的网页浏览或看视频,系统代理通常已经足够。
如果你符合以下场景,请务必开启 TUN 模式:
- 重度终端用户:经常使用
git clone、npm install、curl或brew。 - Mac 玩家:需要处理游戏的网络转发,尤其是那些基于 UDP 的联机游戏。
- 特定办公应用:某些公司内部通讯工具不支持代理,只能通过三层拦截实现接管。
- 极致无感体验:不想再遇到“App A 能用,App B 却报错”的尴尬情况。
总结
TUN 模式是 ClashX Pro 的核心灵魂之一,它将复杂的流量管理变成了“一键式”的透明体验。了解了它的原理,你能更好地配置自己的网络环境。
更多关于 TUN 的详细设置,请参考我们的 TUN 模式开启教程。
常见问题
TUN 模式的主要作用是通过虚拟网卡接管所有应用的网络层流量,实现比应用层代理更彻底的全局控制。
传统的系统代理(通常是 HTTP 代理)通常不能处理 UDP 流量,这也是为什么某些游戏需要 TUN 模式的原因。
TUN 模式会在更底层的网络层工作,它会直接捕获数据包,无论应用程序原来的代理设置如何。
开发者经常使用的终端工具、构建工具或 Git 命令,很多不支持读取系统代理,TUN 模式能让他们无感使用。
TUN 模式在技术原理上非常接近 VPN 的虚拟网卡技术,但它是由 ClashX 内部逻辑根据配置文件进行流量分发的。
由于多了一层内核处理,会有极细微的理论延迟增加,但在实际使用中人类几乎感知不到差异。