深度评测

macOS 代理工具 TUN 模式全攻略:彻底解决代理漏流

系统代理模式无法代理所有应用,而 TUN 模式可以接管全局流量。本文详解 TUN 模式原理、在各 macOS 客户端的配置方法与常见问题。

大家好,我是阿明。

在 macOS 上折腾代理工具的朋友,大概率都经历过这种“灵异事件”:浏览器开着 YouTube 看得飞起,结果打开终端(Terminal)执行 git clone 却卡死在 0%;或者在 Steam 里下个游戏,速度慢到感人;更别提那些用了私有协议的办公软件,明明节点显示通畅,它们却始终处于离线状态。

这些问题的根源,就在于传统的“系统代理”并非万能。对于很多“不听话”的应用来说,系统代理就像是一个路边的告示牌,它们视而不见。而我们今天要聊的 TUN 模式,则是直接在路中央设下的关卡。

这篇文章,阿明将带你深度剖析 TUN 模式的方方面面。字数较多,建议先收藏再看。

第一章:揭秘“代理漏流”的真相

为什么有了系统代理,流量还是会从眼皮子底下溜走?我们需要从 macOS 如何处理网络请求说起。

1.1 什么是“君子协定”?

当你开启 ClashX 或 Surge 的“系统代理”开关时,程序其实只是在你的 系统设置 -> 网络 -> 代理 界面里填上了 127.0.0.1:7890 之类的地址。

这是一种典型的“应用层代理”。它的运作逻辑是这样的:

  1. 应用程序(如 Chrome)发起网络请求。
  2. 它会先去读取系统的代理设置。
  3. 发现有设置,于是它主动将原本要发往目标服务器的数据包,打包发给本地的代理软件。

问题就在这里:如果应用程序不去读取这个设置呢?

  • 终端程序 (CLI):比如 curl, wget, brew。它们诞生于代理设置还没那么统一的年代,默认是不会看系统面板里的代理配置的。
  • 游戏客户端:为了追求极致性能,很多游戏直接走底层 UDP 协议,甚至绕过标准的网络库。
  • 硬编码 App:有些开发者在代码里写死了连接逻辑,或者使用了独立的网络框架(如早期的 Electron 版本),导致它们直接无视系统环境。

1.2 系统代理的盲区:协议限制

即便 App 听话,系统代理也只能处理 HTTP、HTTPS 和 SOCKS 流量。

如果你的 App 使用的是:

  • ICMP(比如常用的 ping 命令)
  • 特殊的 UDP 流量(如在线对战游戏、某些语音通话)
  • 自定义的四层协议

这些流量在系统代理模式下,通通会直连,造成所谓的“漏流”。

第二章:TUN 模式——接管一切的“上帝视角”

为了解决上述问题,我们需要一种更强制、更底层的手段。这就是 TUN 模式。

2.1 虚拟网卡的魔力

TUN(Network TUNnel)是一种在操作系统内核中实现的虚拟网络设备。它不像真实的物理网卡(网口或 Wi-Fi)那样连接线缆,而是连接到一个具体的应用程序(即你的代理软件)。

当你开启 TUN 模式后,代理软件会执行以下操作:

  1. 创建网卡:在系统中创建一个名为 utunX 的虚拟网络接口。
  2. 修改路由表:告诉 macOS 系统,“现在所有往外发的数据包,默认都得先经过这个虚拟网卡”。
  3. 流量拦截:当数据包进入虚拟网卡后,代理软件会立刻接管它们,并根据分流规则(Rule)决定是转发给远端代理服务器,还是直接从真实网卡发出去。

因为这是在网络层(三层)做的手脚,任何 App 只要想上网,就必须发出 IP 包,而只要发出 IP 包,就逃不过 TUN 模式的拦截。

2.2 TUN vs TAP:傻傻分不清楚?

在早期的网络教程中,你可能还听过 TAP 模式。简单区分一下:

  • TUN (Layer 3):工作在 IP 层,处理的是 IP 包。它的效率更高,目前的代理软件(Clash, Surge, Stash)绝大多数使用的是 TUN 模式。
  • TAP (Layer 2):工作在数据链路层,处理的是以太网帧。它能模拟完整的局域网环境,甚至可以处理广播包,但开销大,配置复杂。

对于日常翻墙和工作来说,TUN 模式已经绰绰有余。

2.3 技术深挖:gVisor 到底是什么?

在 Clash Verge 或 ClashX Pro 的高级设置里,你可能会看到“Stack: gVisor”的选项。

gVisor 是 Google 开源的一个用户态内核。在代理工具中,它被用来作为一种高性能的 TCP/IP 协议栈实现。

  • System Stack:使用 macOS 自带的网络协议栈。稳定性好,但兼容性有时会有波动。
  • gVisor Stack:完全在代理程序内部模拟了一套协议栈。优点是隔离性好,能解决很多奇怪的环路问题,建议在遇到网络不通时优先尝试此模式。

第三章:实战配置——各大 macOS 客户端大比拼

在 macOS 上开启 TUN 模式,通常需要安装一个助手程序(Helper)或授权系统扩展。

3.1 ClashX Pro:最稳健的选择

ClashX Pro 是目前 macOS 上最流行的 Clash 客户端之一。请注意,普通版 ClashX 不支持增强模式

  • 官方渠道:建议从 clashx.tech 获取,以保证版本最新且安全。
  • 开启步骤
    1. 启动 ClashX Pro。
    2. 点击顶部状态栏图标 -> 增强模式 (Enhanced Mode)
    3. 系统会弹出窗口要求输入管理员密码,用于安装内核驱动程序。
    4. 开启后,你会发现 Terminal 里的 git clone 瞬间起飞。
  • 阿明点评:它的逻辑最简单,适合大多数不想折腾的用户。

3.2 Clash Verge Rev:极客首选

Verge Rev 是目前维护最活跃、界面最现代的开源 Clash 客户端。

  • 开启步骤
    1. 打开 Verge Rev。
    2. 点击左侧“设置” (Settings)。
    3. 找到“内核设置” (Kernel Settings)。
    4. 开启 TUN Mode 开关。
    5. 建议将 Stack 设置为 gvisor
    6. 点击“立即应用”。
  • 高级技巧:你可以在 Wintun 设置里(虽然叫 Wintun,但在 Mac 上也是对应的配置)开启 Strict Route,这能更强力地防止分流导致的环路。

3.3 Surge for Mac:代理界的“瑞士军刀”

Surge 的增强模式(Enhanced Mode)非常出名,不仅能接管流量,还能监控流量。

  • 开启步骤
    1. 在 Surge 界面,点击左下角的 Enhanced Mode
    2. 按照提示在 macOS 系统设置 -> 隐私与安全性中,手动点击“允许”加载 Surge 网络扩展。
  • 特色功能:Surge 可以显示每个连接是由哪个具体的进程(PID)发起的。当你发现流量异常时,这是一个极佳的排查工具。

3.4 Stash for Mac:简洁而不简单

Stash 虽然是以 iOS 版起家,但其 Mac 版的 TUN 模式表现也非常稳定。

  • 开启步骤
    1. 控制面板中直接勾选 TUN Mode
    2. Stash 会在系统里显示一个类似于“VPN 连接”的图标。
  • 适用人群:已经购买了 Stash iOS 版且习惯其配置格式的用户。

第四章:系统代理 vs TUN 模式 深度对比

维度系统代理 (System Proxy)TUN 模式 / 增强模式
工作原理依靠 App 主动读取配置 (应用层)创建虚拟网卡拦截 IP 包 (网络层)
接管范围浏览器及主流应用全局流量(终端、游戏、所有 App)
协议支持仅限 HTTP / HTTPS / SOCKS支持 TCP / UDP / ICMP 等全协议
DNS 处理依靠浏览器解析或手动配置自动接管系统 DNS,防止泄露
性能损耗几乎为零略有 CPU 占用(协议栈封装)
安装成本无需额外安装需安装助手程序或系统扩展
适用场景轻度办公、网页浏览开发、游戏、解决特定 App 离线

第五章:阿明的避坑指南——常见问题及解决

TUN 模式虽然强大,但它对网络环境的改变很大,初次使用难免遇到“翻车”。

5.1 开启后彻底断网,连百度都打不开

这 90% 是 DNS 劫持 失败导致的。

  • 排查:检查代理软件的日志。如果看到大量的 DNS Timeout,说明系统 DNS 请求没能正确到达代理软件。
  • 解决
    1. 尝试在代理软件设置里,将 DNS 模式从 Fake-IP 改为 Real-IP(或者反之)。
    2. 检查是否有其他的 DNS 加速软件(如 AdGuard Home, MosDNS)在运行,如果有,请先关闭它们,防止“多重接管”。

5.2 无法访问内网资源(如 NAS、公司局域网)

默认情况下,TUN 模式可能会把内网请求也发往代理。

  • 解决:在你的配置文件(YAML)中,找到 skip-proxybypass 列表。确保里面包含了常见的私有网段:
    • 192.168.0.0/16
    • 10.0.0.0/8
    • 172.16.0.0/12
    • localhost
    • *.local (用于 macOS 的 Bonjour 发现)

5.3 与 VPN 软件的“爱恨情仇”

如果你由于工作原因必须开着 Cisco AnyConnect 或 FortiClient 这种公司 VPN,TUN 模式往往会失效,甚至导致 VPN 断开。

  • 原理:两套软件都在试图修改系统的默认网关,抢夺路由权。
  • 解决:先启动公司 VPN,等它连接成功并接管路由后,再开启代理软件的 TUN 模式。此时,TUN 模式会建立在 VPN 之上。

5.4 流量统计不准或双倍计费

有些用户发现,开启 TUN 后,代理软件里显示的流量翻倍了。

  • 原因:这是显示逻辑问题。有些软件会同时统计物理网卡和虚拟网卡的流量。实际消耗的流量并没有翻倍。

第六章:你应该选择哪种模式?

作为一名老玩家,阿明建议你根据场景来选:

  1. 普通用户(只看网页、刷推)

    • 保持 系统代理 即可。简单、省电、不折腾。
  2. 开发者(码农必备)

    • 强烈建议 常驻 TUN 模式。不管是 npm install 还是 docker pull,那种丝滑感是用系统代理给不了的。
  3. 海外游戏玩家

    • 必开 TUN 模式。由于游戏流量大多走 UDP,系统代理完全无法加速游戏连接,只有 TUN 模式能帮你降低延迟并成功登录。
  4. 追求隐私极致的用户

    • 开启 TUN 模式 + DNS 接管。这样可以彻底防止你的运营商通过 DNS 请求知道你访问了哪些网站。

第七章:关于安全性的一些碎碎念

开启 TUN 模式需要安装驱动和输入密码,这会让不少新同学感到担心。

阿明想说的是:

  • 正规渠道:只要你从官方网站或知名的开源社区下载工具(如 ClashX Pro 官网、Verge Rev 的 GitHub),安全性是有保障的。
  • 系统限制:macOS 的 Network Extension 框架已经把这类软件限制在了特定的沙盒里,它们无法随意窥探你的本地文件。
  • 代码透明:开源工具的核心逻辑都是透明的,全球开发者都在盯着,不用担心会有后门。

结语

从“手动设代理”到“一键全局”,TUN 模式无疑是 macOS 上网体验的一次质变。它不仅仅是为了翻墙,更是为了让你的 Mac 真正成为一个网络无阻碍的工作站。

如果你还在忍受 Terminal 下载失败,或者为了游戏加速发愁,赶紧按照文中的步骤,去尝试一下 ClashX Pro 或 Surge 的增强模式吧。

我是阿明,专注于分享 macOS 上的网络进阶技巧。如果这篇文章对你有帮助,欢迎转发给身边同样在折腾 Mac 的朋友。咱们下期再见!


本文首发于 MacProxyHub,版权所有。