为什么你的代理"形同虚设":TUN 模式到底做了什么
type
status
date
slug
summary
tags
category
icon
password
wechat_gate

我在用 Xcode 拉 GitHub 依赖包的时候,经常遭遇一个问题。
明明代理软件开着,状态栏图标绿着,浏览器上 YouTube 流畅到飞起 —— 但 Xcode 那边,进度条纹丝不动,有时能够卡几十分钟还下载不了一个简单的依赖包。
开始我以为是网络问题,重启了好几次,换了节点,代理设置全局模式,全无效果。
后来才弄明白:不是代理坏了,是 Xcode 压根没走代理!
代理的"层级问题"
要理解这件事,得先从网络协议的分层说起。
计算机网络是分层工作的,从底层到高层大概长这样:
我们平时用的代理 —— 无论是 HTTP Proxy 还是 SOCKS5 —— 工作在应用层或传输层。
这意味着什么?意味着只有"主动配合"的程序才能走代理。
浏览器知道怎么读系统代理设置,所以浏览器的流量走了代理。但 Xcode 底层用的是
git 去拉包,git 不读那个代理配置,于是流量直接从你的网卡飞出去了——绕过代理,撞上墙。这不是 Xcode 的 bug,是代理工作方式的根本局限。
TUN 模式:在路口设卡
TUN,全称 TUN/TAP,是操作系统提供的一种虚拟网络接口技术。
为了更好地说明它,我们做一个类比。
普通代理模式,像是在城里开了一个"快递代收点"。想让快递走代收点的人,得主动把地址填成代收点(手动设置代理),不这样的话,快递还是会被直接寄到家里。
TUN 模式呢,则是在城市所有出口设了检查站。不管你知不知道检查站的存在,出城的货物都必须经过。检查站决定哪些货物放行,哪些走特殊通道,当事人完全无感知。
具体到技术层面,Clash Verge 开启 TUN 模式后,会做两件事:
- 在系统里创建一块虚拟网卡(可以在终端用
ifconfig看到,通常叫utun开头的设备)
- 修改系统路由表,把默认路由(
0.0.0.0/0,也就是"其他所有流量")指向这块虚拟网卡
路由表一改,所有不知道该去哪里的 IP 数据包,都会进入 Clash 的管辖范围。Clash 在网络层读取数据包,识别目标地址,再根据你配置的规则判断:直连、走代理、还是拒绝。
这个过程发生在 IP 层,比应用层代理低了整整两个层级。Xcode、
git、curl,任何程序都无法"绕过"它。顺带解决的 DNS 污染
TUN 模式还附带解决了一个隐蔽的问题:DNS 泄漏。
普通代理模式下,DNS 查询(UDP 53 端口)通常不走代理,直接发给运营商的 DNS 服务器。这带来两个后果:
- GitHub、Google 的域名可能被解析成错误的 IP(DNS 污染)
- 你访问了哪些域名,ISP 全都知道
TUN 模式接管了 UDP 流量,DNS 查询同样被导入 Clash 处理。Clash 用自己内置的 DNS 或你指定的远端 DNS(比如
8.8.8.8)来解析域名,绕开运营商的污染,也保护了隐私。代价是什么
TUN 模式不是没有副作用,得把话说清楚。
性能开销:所有流量多经过一层处理。日常网页、GitHub 操作感受不到差别,但局域网大文件传输这类场景,可能会有影响。
内网访问:必须在 Clash 的 bypass 规则里排除内网网段(
192.168.0.0/16、10.0.0.0/8),否则连局域网打印机都得绕一圈。与 VPN 的冲突:公司 VPN 也会修改路由表,和 TUN 模式同时开启容易互相打架。需要连公司内网的时候,记得关掉 TUN。
需要管理员权限:创建虚拟网卡和修改路由表是系统级操作,Clash Verge 开启 TUN 时会弹密码确认框,这是正常现象。
回到最开始的问题
所以,Xcode 拉包慢,根源是它不走普通代理。
用 TUN 模式之后,Xcode 的流量在 IP 层就被 Clash 接住,乖乖走了代理通道——速度的差异,有时候是从"等到天荒地老"到"三秒拉完"。
如果你不想一直开 TUN 模式,还有一个轻量方案:给
git 单独配代理。SPM 底层用 git 拉包,只要 git 走了代理,Xcode 的问题也就解决了:用完记得清掉,避免影响其他场景:
理解一件工具的原理,往往比记住用法更有价值。
当你知道"普通代理只管应用层,TUN 模式管的是 IP 层",遇到任何奇怪的网络问题,都能更快找到症结——而不是对着绿色的代理图标一脸茫然。
🧱外的世界,工具要用对才算用到。
TUN/TAP 知识点说明
TUN 是 tunnel(隧道)的简写。
对应的 TAP 也不是缩写,是网络术语里"网络分流器/侦听点"的意思,类比物理上的 tap(水龙头分叉接头)。
两者合称 TUN/TAP,是 Linux 内核提供的一对虚拟网络设备驱动,名字描述的是它们各自的工作方式:TUN 把流量打包成隧道传输,TAP 则像在网线上接了个分叉口来接管数据。
2026.03.03 17:26
沪 · 汇金路KFC