TUN 模式和系统代理有什么区别?什么时候该开 TUN
系统代理只对遵守系统代理设置的程序生效,命令行、部分游戏和应用会绕过它;TUN 模式在网络层接管全部流量。本文讲清两者的原理差异和适用场景,以及开启 TUN 前要注意的权限、VPN 冲突与 DNS 劫持设置。
小鱼一句话解释
系统代理是修改操作系统的代理设置,只有主动读取这个设置的程序(浏览器和大部分常用软件)才会走代理,命令行工具、很多游戏和部分应用会直接绕过;TUN 模式创建一块虚拟网卡,通过路由表在网络层接管所有程序的 TCP 和 UDP 流量。日常浏览开系统代理就够了;需要让命令行、游戏或不认系统代理的程序走代理时再开 TUN,开启前准备好服务模式或管理员权限,并避免与其他 VPN 同时运行。
- 系统代理是一种“约定”,程序自己决定是否遵守;TUN 通过路由表强制接管
- 系统代理覆盖浏览器和多数软件,但一般不处理 UDP;TUN 同时接管 TCP 和 UDP
- 命令行工具读环境变量而不读系统代理,可以单独设置,不一定要开 TUN
- 开启 TUN 需要服务模式或管理员权限,并且不要和其他 VPN 类软件同时运行
- TUN 靠 DNS 劫持找回域名,浏览器安全 DNS、安卓私人 DNS 会绕过劫持
- 适合
- Lv.2 普通用户
- 阅读
- 7 分钟
- 更新

先说结论
系统代理是一份“请把请求发到这里”的约定,程序自己决定遵不遵守;TUN 模式是在网络层直接接管,程序不需要任何配合。
- 只用浏览器、聊天和办公软件:开系统代理就够了,Clash Verge Rev 的界面提示也是“建议大多数用户打开此选项”;
- 命令行工具、游戏、不认系统代理的软件也需要走代理:开 TUN,或者给这些程序单独设置代理;
- 开 TUN 之前:准备好服务模式或管理员权限,退出其他 VPN 类软件,并确认 DNS 劫持正常工作。
在整条代理链路里,这两种方式都属于第一个环节“接管流量”:决定哪些流量能进入客户端。后面的分流、解析、加密和线路,见专题主文章 代理上网的原理。
两种方式的原理
系统代理:一份程序可以不遵守的约定
开启系统代理时,客户端会把本机代理端口(Clash Verge Rev 默认是 7897)写进操作系统的代理设置。Clash Verge Rev 文档的解释是:代理程序在系统“约定”的位置(如注册表、系统变量)写好监听端口,由各个程序主动去读取;文档也直说,“并非所有程序都遵守这种非强制性的约定”。
遵守约定的程序会把请求交给本机端口。访问 HTTPS 网站时,浏览器直接把域名告诉代理,客户端不需要额外处理 DNS。系统代理的局限同样来自这种约定:它只对主动读取设置的程序有效,而且一般只处理 TCP 连接,同一份文档提到它无法代理游戏数据包这类 UDP 流量。
TUN:在网络层强制接管
TUN 模式会创建一块虚拟网卡,再修改系统路由表(mihomo 中对应的选项是 auto-route,作用是“自动将全局流量路由进入 tun 网卡”),让所有程序的 IP 数据包都先经过客户端。程序完全不知道代理的存在,TCP 和 UDP 都会被接管。
代价是客户端拿到的已经是发往某个 IP 的数据包。为了继续按域名分流,客户端要接管系统发出的 DNS 查询,也就是 DNS 劫持,再用 fake-ip 或域名嗅探把域名找回来。fake-ip 的完整原理见专题主文章中“域名在哪里解析”一节。
系统代理与 TUN 对比
| 对比项 | 系统代理 | TUN 模式 |
|---|---|---|
| 工作方式 | 程序读取系统设置,主动把请求发到本机代理端口 | 虚拟网卡加路由表,在网络层接管 |
| 覆盖范围 | 遵守系统代理设置的程序 | 几乎所有程序 |
| UDP 流量 | 一般不处理 | TCP、UDP 都接管 |
| 域名信息 | 程序直接把域名交给客户端 | 依靠 DNS 劫持加 fake-ip 或域名嗅探还原 |
| 权限要求 | 普通权限即可 | 需要服务模式或管理员权限 |
| 与其他 VPN 的关系 | 基本不冲突 | 容易争抢路由表和 DNS |
| 出问题时的影响范围 | 只影响走代理的程序;客户端异常退出时可能残留代理设置 | 影响整机网络,设置不当可能全部断网 |
| 适合 | 日常浏览和大多数软件 | 命令行、游戏、不认系统代理的程序 |
哪些程序不走系统代理
| 程序类型 | 为什么绕过系统代理 | 不开 TUN 的替代办法 |
|---|---|---|
| 命令行工具(curl、git、npm、pip 等) | 读取环境变量或自己的配置文件,不读系统代理设置 | 在终端设置代理环境变量,或在工具配置里填写代理 |
| 很多游戏的联机流量 | 大量使用 UDP,系统代理不处理 UDP | 基本只能开 TUN |
| Microsoft Store(UWP)应用 | Windows 8 起默认限制这类应用访问本机回环地址,连不上本机代理端口 | 用客户端自带的 UWP 工具解除限制 |
| 自带代理设置的软件 | 只认自己的设置,忽略系统代理 | 在软件里单独填写代理地址和端口 |
命令行工具是最常见的情况。设置环境变量只对当前终端窗口生效,关闭窗口就失效,不影响其他程序:
# macOS / Linux:端口以客户端设置为准(Clash Verge Rev 默认 7897)
export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897
export all_proxy=socks5://127.0.0.1:7897
# Windows PowerShell:同样只对当前窗口生效
$env:http_proxy="http://127.0.0.1:7897"
$env:https_proxy="http://127.0.0.1:7897"
注意大小写:curl 文档说明,http_proxy 只接受小写形式,其他代理变量才可以用大写。不同工具的规则不完全一样,统一用小写最省事。Codex 这类命令行 AI 工具的代理设置和常见报错,见 Codex CLI 的代理设置。
什么时候该开 TUN
适合开启的情况:
- 需要让命令行、开发工具整体走代理,又不想逐个配置环境变量;
- 游戏、语音软件等 UDP 应用需要走代理;
- 某个软件既不认系统代理,也没有自己的代理设置;
- 想让整台电脑的流量统一按规则分流,避免“有的程序走了、有的没走”。
不必开启的情况:
- 只用浏览器和常用软件,系统代理已经够用;
- 公司电脑装有企业 VPN 或终端安全软件,TUN 很可能与之冲突,也可能违反公司规定;
- 设备性能较弱,或者只想让个别软件走代理,这时用软件自身设置或环境变量更轻量。
还要注意,TUN 只负责把 UDP 流量交给客户端,节点本身也要支持 UDP 转发,游戏、语音才能真正走代理。各协议在 UDP 上的差异,见 代理协议怎么选。
开启 TUN 前的检查清单
准备权限:服务模式或管理员
创建虚拟网卡、修改路由表需要较高权限。Clash Verge Rev 的界面提示是“TUN 模式需要安装服务模式或管理员模式”:服务模式的作用就是让 TUN 能以非管理员身份启动,一般在「设置」里安装服务后,再打开「虚拟网卡模式」。官方 FAQ 提到,部分国产安全软件可能拦截服务安装;服务对内核文件的权限检查不通过时,客户端会退回 Sidecar 模式,普通权限下无法使用 TUN。不想安装服务的话,也可以以管理员身份运行客户端。
只保留一种接管方式
开启 TUN 后可以关闭系统代理。两者同时开着不会更快,反而让排查变复杂。
退出其他 VPN、加速器和代理软件
TUN 和各类 VPN 都靠修改路由表和 DNS 工作,同时运行会互相争抢。Clash Verge Rev 的 Windows FAQ 也提到,系统中存在多块网卡或网段与配置冲突时,TUN 可能工作异常。必须同时使用企业 VPN 时,可以在 TUN 设置的“排除自定义网段”里把公司内网网段排除在外,但能否共存取决于企业 VPN 的实现,最好先咨询公司 IT。
确认 DNS 劫持设置
Clash Verge Rev 的 DNS 劫持默认填写
any:53,即把发往任意地址 53 端口的 DNS 查询交给客户端处理,一般保持默认即可。不过 mihomo 文档列出了两种劫持不到的情况:Windows 和 macOS 上发往局域网地址的 DNS 请求,以及安卓开启“私人 DNS”之后。同理,浏览器开启“安全 DNS”(DoH)后,查询以 HTTPS 形式直接发出,也绕过了劫持。如果开启 TUN 后分流表现异常,先关掉浏览器的安全 DNS 和安卓的私人 DNS 再试。留意防火墙和协议栈
mihomo 提供三种 TUN 协议栈:system 使用系统协议栈,占用较低;gvisor 在用户空间实现协议栈;mixed 让 TCP 走 system、UDP 走 gvisor。文档提醒,打开防火墙时无法使用 system 和 mixed 栈,需要先放行内核,Windows 上可以在“Windows 安全中心 → 防火墙和网络保护 → 允许应用通过防火墙”里操作;放行有困难时,可以换用 gvisor 栈对比。Windows 上还可以开启“严格路由”(strict-route),它会添加防火墙规则,阻止 Windows 多宿主 DNS 解析行为造成的 DNS 泄露,副作用是 VirtualBox 等程序可能无法正常工作。
开启之后,可以这样确认是否生效:在没有设置任何环境变量的终端里访问一个需要代理的网址,同时打开客户端的「连接」页面,能看到来自终端进程的连接,就说明 TUN 已经接管。Clash Verge Rev 在 Windows 上的完整安装和服务模式设置,见 Windows 用哪个 Clash;系统代理和 TUN 两个开关在客户端里的位置,见 Clash 使用教程。
常见问题速查
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 虚拟网卡模式打不开,或提示服务不可用 | 服务未安装、被安全软件拦截或权限检查未通过 | 重新安装服务,检查安全软件;或以管理员身份运行 |
| 开启 TUN 后完全断网 | 与其他 VPN、虚拟网卡冲突,或防火墙拦截了内核 | 退出其他 VPN,放行内核,必要时更换协议栈 |
| 打印机、NAS 等局域网设备访问异常 | 局域网流量被接管 | 把局域网网段加入排除,或确认规则让局域网直连 |
| 部分网站分流不对 | 浏览器安全 DNS 或安卓私人 DNS 绕过了劫持 | 关闭这两项后重试 |
| 退出客户端后个别网站打不开 | 系统 DNS 缓存里残留 198.18 开头的 fake-ip 地址 | Windows 执行 ipconfig /flushdns,或等待缓存过期 |
| 退出客户端后所有网站都打不开 | 系统代理设置残留(常见于崩溃或断电后) | Windows 到“设置 → 网络和 Internet → 代理”,关闭“使用代理服务器” |
| Microsoft Store 应用连不上 | UWP 回环限制 | 用客户端的 UWP 工具解除限制,或改用 TUN |
手机上为什么没有这道选择题
安卓和 iOS 上的代理客户端都通过系统提供的 VPN 接口接管流量,效果接近桌面端的 TUN,所以手机客户端一般没有单独的“系统代理”和“TUN”开关。由此带来两个特点:
- 同一时间只能有一个 VPN 类应用在工作。 安卓开发者文档写明,每个用户或配置文件只能有一个活动的 VPN 服务,启动新的服务会自动停止已有的服务。所以代理客户端和其他 VPN、加速器不能同时使用;
- 可以按应用分流。 安卓的 VPN 接口支持“允许列表”或“排除列表”,客户端里的“分应用代理”就是基于这个机制:只让列表里的应用走代理,或者让列表里的应用绕过代理。
安卓客户端的 VPN 权限、后台保活和分应用代理设置,见 安卓用哪个 Clash。
总结
系统代理靠程序自觉遵守,覆盖浏览器和多数软件,简单、几乎不会冲突;TUN 在网络层强制接管,能覆盖命令行、游戏和 UDP 流量,但需要更高权限,也更容易和其他 VPN、DNS 设置打架。默认先用系统代理,遇到覆盖不到的程序,先考虑环境变量或软件自身设置,确实需要全局接管时再开 TUN,并按上面的清单逐项确认。
常见问题
系统代理和 TUN 需要同时打开吗?
不需要。Clash Verge Rev 的界面提示写明,TUN 接管系统所有流量,启用时无须打开系统代理。两者同时开着时,排查问题会更难判断流量是从哪条路进来的,建议只开其中一个。
开了 TUN 之后完全上不了网怎么办?
先关闭 TUN,确认网络恢复。然后依次检查:是否有其他 VPN、加速器同时运行;服务模式是否正常;安全软件或防火墙是否拦截了内核。Windows 上多块网卡或网段冲突也会导致这个问题。
手机上有 TUN 模式吗?
安卓和 iOS 上的代理客户端都通过系统的 VPN 接口接管流量,效果和桌面端的 TUN 接近,所以通常不区分“系统代理”和“TUN”。安卓官方文档说明,同一时间只能有一个 VPN 服务处于活动状态。
开 TUN 会让网速变慢吗?
对大多数电脑影响不明显。但所有流量都要经过客户端处理,在性能较弱的设备上可能成为瓶颈,可以和只开系统代理时的速度对比一下。
只想让某一个软件走代理,有比 TUN 更轻的办法吗?
有。先看软件自己有没有代理设置;命令行工具可以设置环境变量;安卓客户端大多支持分应用代理,只让指定的应用走代理。
参考资料
下一步建议
- 系统学习:回到专题主文章《代理上网的原理:从客户端到出口节点,一次访问经历了什么》,按顺序补齐相关知识。
- 还没想好用哪家?先看 2026 年稳定机场选购方法,再用 对比表 按自己的需求筛选。
- 已经有机场但用得不顺?从 客户端知识 和 网络知识 里找对应的排查方法。
✦ 小鱼严选机场
- 线路(官方)
- IEPL 专线
- 起步价
- ¥15/月 · 72GB
- 线路(官方)
- IEPL 专线 / IPLC 专线
- 起步价
- ¥20/月 · 130GB
严选入选理由见各自的“为什么选择”文章;本站尚未完成实测的机场会在资料页注明。部分服务商链接为推广链接(rel="sponsored"),我们可能因此获得佣金,但不影响评测结论。详见评测方法与商业披露。

