很多人搞不清「系统代理」和「TUN 模式」的区别,导致开了代理某些应用还是不走,或者开了 TUN 之后网络各种奇怪问题。这篇讲清楚原理。
系统代理是操作系统提供的一个设置项。开启后,系统会告诉应用:「你要访问网络,先连这个地址」。
流程:
应用 → 读取系统代理设置 → 把请求发给代理端口 → 代理转发 → 目标服务器
关键限制:应用必须主动读取这个设置。
大多数浏览器、原生应用会读取。但以下应用通常不读:
这些应用会直接连网,绕过代理。
TUN 是操作系统层面的虚拟网卡。开启后,系统会创建一个虚拟网络接口,并把默认路由指向它。
流程:
应用 → 系统路由表 → 虚拟网卡(TUN)→ 代理内核 → 目标服务器
关键点:应用完全不知道有代理存在。它以为自己在正常连网,实际上所有流量都被路由到了虚拟网卡。
所以 TUN 模式能接管所有流量,包括不读系统代理设置的应用。
| 维度 | 系统代理 | TUN 模式 |
|---|---|---|
| 接管范围 | 只接管读设置的应用 | 全部流量 |
| 命令行工具 | 不生效 | 生效 |
| 游戏 | 多数不生效 | 生效 |
| Docker/虚拟机 | 不生效 | 生效 |
| 需要管理员权限 | 不需要 | 需要(装驱动/辅助程序) |
| 资源占用 | 低 | 较高 |
| 稳定性 | 高 | 可能与其他 VPN 冲突 |
| 配置难度 | 简单 | 需要装驱动 |
日常浏览、看视频 → 系统代理
够用,省电,不折腾。浏览器和主流应用都遵循系统代理。
开发、命令行、Docker → TUN 模式
git clone、npm install、docker pull 这些操作在系统代理下不走代理,会非常慢或失败。TUN 模式下全部自动接管。
游戏 → TUN 模式
游戏客户端通常不读系统代理。但要注意 TUN 会增加一点延迟,竞技游戏可能不划算。
需要精确控制 → 系统代理 + 手动配置
TUN 是「全部接管」,如果你想只让某几个应用走代理,用系统代理配合应用内设置更灵活。
与其他 VPN 冲突:两个 VPN 都想接管默认路由,会打架。开 TUN 前先关掉其他 VPN。
虚拟机网络异常:VMware、VirtualBox 的 NAT 网络可能与 TUN 冲突。需要把虚拟网卡加入 TUN 的排除列表。
部分应用检测到 VPN:银行 App、Netflix 会检测到虚拟网卡并拒绝工作。
局域网设备访问不到:TUN 接管默认路由后,访问局域网 NAS、打印机可能失败。需要在 TUN 设置里把局域网段加入直连。
耗电增加:TUN 需要持续处理所有流量,移动设备上耗电明显。
Clash Verge Rev(macOS/Windows):
设置 → TUN 模式 → 开启。首次会提示安装辅助程序,需要管理员密码。安装步骤见 Clash Meta(mihomo)Mac 配置教程。
排除局域网:
在 TUN 设置里添加排除网段,通常是 192.168.0.0/16、10.0.0.0/8、172.16.0.0/12。
macOS 命令行验证:
# 查看默认路由是否指向 utun
netstat -rn | grep default
# 查看是否有 utun 接口
ifconfig | grep utun
Windows 验证:
route print
# 看 0.0.0.0 的下一跳是否是虚拟网卡
很多客户端支持「TUN + 规则分流」:TUN 接管全部流量,但内核按规则决定哪些走代理、哪些直连。
这样既有 TUN 的全面性,又有规则分流的灵活性。Clash Verge Rev、Nekoray 都支持。
推荐配置:开 TUN,规则用「绕过局域网和大陆」。国内流量直连不经过代理,国外流量走代理,两者兼得。
开了 TUN 后完全没网
路由表被改坏了,或者辅助程序没装好。关闭 TUN,重启客户端。如果还是没网,重启系统。
开了 TUN 后局域网 NAS 访问不了
TUN 接管了所有路由,包括局域网。在 TUN 设置里把 192.168.0.0/16 加入直连或排除列表。
系统代理和 TUN 能同时开吗
技术上可以,但没有意义。TUN 已经接管全部流量,系统代理是多余的,同时开还可能造成循环代理。