系统代理和 TUN 模式的区别:哪些软件不走系统代理,什么时候要开 TUN
系统代理在应用层,只接管「愿意配合」的程序;TUN 在网络层,用虚拟网卡接管全部流量。本文讲两种模式的原理差异、哪些软件只认哪种模式、Clash Verge、FlClash、sing-box、Shadowrocket 各自怎么切换,以及同时开两个的后果和推荐组合。
两种模式在哪一层工作
系统代理在应用层。它只是在操作系统里写一条设置:「HTTP 和 HTTPS 流量请发到 127.0.0.1:7890」。程序启动时读取这条设置,如果程序愿意配合,就把流量发给客户端;不愿意配合或根本不读这条设置的程序,流量照旧直接出去。
TUN 模式在网络层。客户端创建一张虚拟网卡,并把系统默认路由指向它。此后任何程序发出的 IP 包,无论它知不知道代理的存在,都先经过这张网卡进入客户端,由客户端按规则决定直连还是走节点。
一句话:系统代理靠程序自觉,TUN 靠系统强制。
哪些程序只认系统代理
浏览器是最典型的配合者:Chrome、Edge、Safari 默认读系统代理设置,Firefox 可选。多数用 WebView 或系统网络库写的桌面软件也配合,比如 Telegram 桌面版、Discord、Slack、Spotify、Steam 商店页面的网页部分。
这些程序在系统代理模式下工作良好。它们还有个优点:把域名原样交给客户端,由客户端决定解析方式,所以 DNS 问题少。
哪些程序不走系统代理
- 终端命令行:curl、git、pip、npm、go、Claude Code、Codex 等都不读系统代理设置,需要单独设
http_proxy/https_proxy环境变量。开发者的终端配置见 Claude Code 使用教程。 - 游戏:游戏客户端和游戏本体基本都是自己建 UDP 连接,不看代理设置。而且系统代理只处理 TCP,游戏大量用 UDP。
- UWP / 微软商店应用:Windows 的 UWP 沙箱默认禁止应用访问本机回环地址,即便读了代理设置也连不上 127.0.0.1。需要工具解除回环限制,或直接用 TUN。
- 系统服务与更新:Windows 更新、macOS 更新、iCloud、OneDrive 同步等不走系统代理。
- 部分即时通讯和会议软件:微信、QQ、Zoom、Teams 的音视频通道走自己的 UDP。
- 虚拟机和 Docker 容器:它们有自己的网络栈,宿主机的系统代理对它们不可见。
- 部分 Electron 应用的特定版本:有的读系统代理,有的要启动参数,不统一。
这些程序想走代理,只有 TUN 一条路。
TUN 模式的代价
- 需要权限:Windows 要管理员权限或安装服务模式,macOS 要在「隐私与安全性」里允许网络扩展,Linux 要 root。
- DNS 变复杂:所有解析请求都被客户端接管,DNS 配置错了会出现「开了 TUN 没网」。Fake-IP 模式通常最省心,少数程序不适应时需要加白名单。
- 多一层处理:所有流量都过一遍客户端,包括本来该直连的国内流量。性能开销在现代电脑上可以忽略,但在老路由器或低端盒子上能感觉到。
- 和其他 VPN 冲突:企业 VPN、WireGuard、Tailscale 都会抢默认路由,同时开容易互相覆盖。
- 协议栈选择:system、gvisor、mixed 三种栈兼容性不同,某个程序不通时换一种栈试试。
开了 TUN 没网、权限报错、虚拟网卡冲突等问题的具体排查,见 TUN 模式问题排查。
各客户端怎么切换
Clash Verge Rev(Windows / macOS / Linux):左侧「设置」,顶部有「系统代理」和「TUN 模式」两个开关。首次开 TUN,Windows 建议先在同一页安装「服务模式」,之后不用每次管理员启动;macOS 会弹系统扩展授权。完整配置见 Clash Verge 教程。
FlClash(全平台):首页「设置」下方的「TUN」开关;桌面端另有「系统代理」开关。安卓版只有 VPN 模式,即 TUN。
Mihomo Party:设置页「虚拟网卡」开关对应 TUN,「系统代理」单独开关,支持同时开。
sing-box 系(sing-box 官方 App、GUI.for.SingBox、Karing、Hiddify):配置文件里 inbound 用 tun 还是 mixed 决定模式。图形界面通常提供「TUN」或「VPN 模式」开关。
Shadowrocket / Stash / Surge / Loon / Quantumult X(iOS):iOS 没有系统代理模式的概念,所有客户端都通过 VPN 接口工作,等同 TUN。开关就是那个大按钮。Surge for Mac 则有「增强模式」,就是 TUN。
v2rayN(Windows):右下角「系统代理」菜单切换清除 / 自动配置,TUN 模式在主界面左下的「Tun 模式」开关,需要管理员。
Clash Meta for Android / v2rayNG 等安卓客户端:VPN 模式等同 TUN,是默认模式。个别客户端有「仅代理」或「HTTP 代理」模式,那是系统代理,只对浏览器之类有效。
同时开两个会怎样
可以同时开,不会打架。流程是:浏览器把流量发到 127.0.0.1:7890(系统代理),客户端收下后匹配规则决定去向;其他程序的流量被 TUN 网卡拦下,同样匹配规则。两条入口最后汇到同一套规则和节点,结果一致。
但同时开有两点要注意:
- 来自系统代理的流量带着域名,来自 TUN 的流量多数只有 IP(除非用 Fake-IP),规则匹配的信息量不同。开了 Fake-IP 则两边一致。
- 退出客户端时如果崩溃,系统代理设置可能残留,表现为「关了客户端全部网站打不开」。到系统网络设置里手动关掉代理即可。
推荐做法:桌面日常用系统代理,需要跑终端、游戏、UWP 时开 TUN;或者干脆常开 TUN 并关掉系统代理,一套规则管全部。两种选法都没错,取决于你是否常用不配合的程序。
怎么判断该用哪个
一个简单的测试:开着系统代理,打开那个你觉得「不走代理」的程序,看客户端的连接面板里有没有它的连接记录。有,说明它配合系统代理,不用 TUN;没有,开 TUN 再看,连接出现了就是解决了。
模式之外还有规则的问题:开了 TUN 但某个网站仍走直连,是规则没匹配上,不是模式的错。规则、分流与三种代理模式的关系见 代理模式与规则。
常见误区
「开了 TUN 就是全局代理」:不是。TUN 只是把流量接管进客户端,之后仍然按规则分流,国内网站照样直连。全局还是规则,由客户端的模式决定,和 TUN 无关。
「系统代理不安全,TUN 才安全」:两者的安全性相同,都是在本机内把流量交给同一个客户端。差别只在覆盖范围,不在加密强度。
「TUN 会拖慢网速」:在电脑和手机上,TUN 的处理开销在毫秒级,测速结果和系统代理模式几乎没有差别。能感知到慢的只有性能极弱的路由器和盒子。
「浏览器连不上一定要开 TUN」:浏览器走系统代理就够。浏览器连不上通常是节点或规则问题,开 TUN 不会改变结果。
什么时候必须用 TUN
把不走系统代理的程序列成一张清单,看看你有没有在用其中任何一个:命令行工具、游戏、微软商店应用、系统更新、虚拟机或容器、不读代理设置的桌面软件。有,就常开 TUN。没有,系统代理足够,少一层权限和配置。
常见问题
系统代理和 TUN 模式哪个更好?
各有用处。只用浏览器,系统代理够且省资源;要让游戏、终端、微软商店应用、其他不走代理的软件也通,必须 TUN。
为什么开了系统代理终端还是连不上?
终端命令行工具不读系统代理设置,要么在终端里设 https_proxy 环境变量,要么开 TUN。
TUN 模式和系统代理可以同时开吗?
可以,不会冲突,走系统代理的程序会在客户端内部再匹配一次规则。但多数情况下开 TUN 就够了,同时开只是多一层无用的转发。
手机上有系统代理和 TUN 的区别吗?
iOS 和 Android 的客户端都用 VPN 接口,本质就是 TUN,不存在系统代理模式的选择。Android 上有个别客户端提供「仅代理」模式,那才是系统代理。
开 TUN 需要管理员权限吗?
需要。创建虚拟网卡是系统级操作,Windows 要管理员或安装服务模式,macOS 要授权系统扩展,Linux 要 root 或 CAP_NET_ADMIN。
本文为信息整理与个人经验,不构成购买建议。机场政策与软件界面可能变化,以官方为准。发现过期内容请 联系纠错。