教程中心 网络基础

系统代理和 TUN 模式区别:什么时候需要开 TUN

系统代理和 TUN 模式有什么区别?本文解释两者接管流量的原理与适用范围,列出终端、游戏、WSL 等必须开 TUN 的场景,给出 Windows 与 macOS 下检查系统代理、设置终端代理变量和确认 TUN 虚拟网卡的命令,并说明开启 TUN 的常见错误与注意事项。

系统代理和 TUN 模式区别:什么时候需要开 TUN

核心结论

系统代理只是在操作系统里登记一个代理地址,浏览器等“愿意读取”的程序才会走代理;TUN 模式则创建一块虚拟网卡,在网络层接管几乎所有程序的流量。浏览器上网用系统代理就够了,终端工具、游戏、WSL 或不支持代理设置的软件需要开 TUN。

文章目录 11 个章节
  1. 一句话区别
  2. 对比表
  3. 两种方式的工作原理
  4. 系统代理:登记一个地址
  5. TUN:在路由层拦截
  6. 怎么选:三步判断
  7. 哪些情况必须开 TUN
  8. 检查系统代理是否生效
  9. 给终端单独设置代理
  10. 开启 TUN 的步骤
  11. 确认 TUN 虚拟网卡已创建
  12. 常见错误与注意事项
  13. 常见问题

一句话区别

系统代理是“告示”,TUN 是“关卡”。 系统代理只是在操作系统里登记“请通过 127.0.0.1 的某个端口上网”,程序愿不愿意遵守由程序自己决定;TUN 模式则在系统中创建一块虚拟网卡并修改路由,所有程序的流量都会先经过它,程序想绕也绕不开。

所以:只用浏览器,开系统代理就够了;需要让终端、游戏、桌面应用或 WSL 走代理时,开 TUN。无论哪种方式,流量进入客户端后怎么分流,仍然由规则、全局、直连三种模式决定,参见 代理模式有什么区别。

对比表

对比项 系统代理 TUN 模式
工作层级 应用层,靠程序主动读取设置 网络层,虚拟网卡接管路由
覆盖范围 浏览器及遵守系统设置的程序 几乎所有程序
支持 UDP 通常不支持 支持
终端 / 命令行 大多不生效,需要另设环境变量 直接生效
权限要求 普通权限 通常需要管理员权限或服务组件
出问题的影响 个别程序不走代理 设置错误可能导致整机断网
适合人群 以浏览器为主的普通用户 开发者、游戏玩家、AI 编程用户

两种方式的工作原理

系统代理:登记一个地址

客户端启动后会在本机监听一个端口(常见为混合端口,同时支持 HTTP 与 SOCKS5)。打开“系统代理”开关,本质上就是把这个地址写进操作系统的代理设置里。浏览器发起请求前会读取这个设置,于是把请求交给本地端口,客户端再根据规则决定直连还是转发到节点。

问题在于,“读取系统代理”是程序自己的选择。浏览器、大部分即时通讯和办公软件会读,但很多命令行工具、开发环境和游戏根本不看这个设置,它们的流量会绕过客户端直接出去。

TUN:在路由层拦截

TUN 模式下,客户端创建一块虚拟网卡,并把系统的默认路由指向它。任何程序发出的数据包,都会先被路由到这块虚拟网卡,再由客户端读取、分流和转发。程序本身完全不需要知道代理的存在,因此覆盖面几乎是全部流量,包括 UDP。

为了让域名规则在 TUN 下正常工作,客户端通常还会接管 DNS 查询,常见做法是 Fake-IP 或 DNS 劫持。这也是 TUN 模式偶尔出现“某些网站打不开”的原因之一,相关排查见 Fake-IP 模式导致网站打不开。

怎么选:三步判断

  1. 你主要用浏览器吗? 是的话,系统代理足够,不必折腾 TUN;
  2. 你需要命令行或 WSL 走代理吗? 偶尔用可以只给终端设置环境变量;每天都用,直接开 TUN 更省心,也能避免某些子进程漏走直连;
  3. 你有游戏、语音或其他 UDP 需求吗? 有的话只能开 TUN,系统代理无法处理这类流量。

对于长时间使用 Claude Code、Codex 等 AI 编程工具的用户,推荐开 TUN 并固定节点:这样工具发起的所有请求都从同一出口出去,既减少“部分请求直连”导致的地区校验失败,也方便排查问题。

哪些情况必须开 TUN

以下几类场景,只开系统代理往往不起作用:

  1. 命令行工具:git、npm、pip、curl 以及 Claude Code、Codex CLI、Gemini CLI 等 AI 编程工具,大多不读取系统代理;
  2. WSL 与虚拟机:它们有自己的网络栈,不会继承 Windows 的系统代理设置;
  3. 游戏和语音软件:大量使用 UDP,系统代理通常无法转发;
  4. 自带网络模块的桌面软件:部分客户端软件硬编码直连,完全忽略系统设置;
  5. 需要统一出口的场景:比如希望 AI 工具的所有请求都从同一节点出去,避免部分请求直连暴露真实地区。

如果你只是偶尔在终端里用一下,也可以不开 TUN,改为给终端单独设置代理环境变量,下面会给出命令。

检查系统代理是否生效

Windows PowerShell:

# 查看当前用户的系统代理设置:ProxyEnable 为 1 表示已开启
Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | Select-Object ProxyEnable, ProxyServer
# 查看 WinHTTP 代理(部分系统服务使用)
netsh winhttp show proxy

macOS:

# 查看系统代理配置,HTTPEnable / HTTPSEnable 为 1 表示已开启
scutil --proxy

如果显示已开启但某个软件仍然不走代理,说明它不读取系统代理,参考 系统代理不生效怎么办。

给终端单独设置代理

不开 TUN 时,可以为当前终端窗口设置环境变量,关闭窗口后自动失效。

Windows PowerShell:

$env:HTTP_PROXY  = "http://127.0.0.1:7897"
$env:HTTPS_PROXY = "http://127.0.0.1:7897"
curl.exe -I https://www.google.com --max-time 10

macOS / Linux:

export http_proxy=http://127.0.0.1:7897
export https_proxy=http://127.0.0.1:7897
curl -I https://www.google.com --max-time 10

7897 为 Clash Verge Rev 常见的默认混合端口,以你的客户端设置为准。能返回 HTTP 状态码即说明终端已走代理。在 Windows 上配合 WSL 使用 AI 编程工具的更多细节,可以看 Claude Code 网络环境指南。

开启 TUN 的步骤

以 Clash Verge Rev 为例,菜单名称以实际版本为准:

  1. 确认电脑上只运行了一个代理客户端,退出其他同类软件;
  2. 在“设置”中找到服务模式或类似选项,按提示安装服务组件(Windows 通常需要管理员授权);
  3. 打开“虚拟网卡模式”或“TUN 模式”开关;
  4. 保持代理模式为“规则”,此时系统代理开关可开可关;
  5. 在终端中直接执行 curl -I https://www.google.com(Windows 用 curl.exe),不设置任何环境变量也能返回状态码,即表示 TUN 已生效。

更详细的图文步骤见 Clash Verge Rev TUN 模式设置。

确认 TUN 虚拟网卡已创建

Windows PowerShell:

# 列出网卡,TUN 开启后会多出一块由客户端创建的虚拟网卡
Get-NetAdapter | Select-Object Name, InterfaceDescription, Status

macOS:

# TUN 开启后会出现新的 utun 接口
ifconfig | grep utun
netstat -rn | head -20

虚拟网卡的名称因客户端和内核而异,只要开关前后对比多出一块状态为 Up 的虚拟网卡即可。

常见错误与注意事项

  1. 同时运行两个代理客户端:两个 TUN 或两个系统代理互相覆盖,轻则部分程序失效,重则整机断网;
  2. 开了 TUN 却切到全局模式:所有流量包括国内都会走节点,速度变慢、流量翻倍;
  3. 忽略 DNS 设置:TUN 通常会接管 DNS,若配置不当可能导致网站打不开,可参考 DNS 问题排查;
  4. 公司或校园电脑强开 TUN:部分受管设备禁止安装虚拟网卡驱动,请遵守所在单位的网络管理规定;
  5. 忘记关闭:退出客户端前先关闭 TUN,个别版本异常退出后可能残留路由,重启电脑即可恢复。

请在遵守当地法律法规与相关服务条款的前提下使用网络工具。

常见问题

系统代理和 TUN 可以同时开吗?

可以,同一个客户端里同时开启一般不会冲突,流量会优先被 TUN 接管。要避免的是同时运行两个不同的代理客户端,它们会争抢系统代理设置和路由表。

为什么浏览器能上外网,终端里的 git、npm 却不行?

多数命令行程序不读取系统代理,而是读取 HTTP_PROXY、HTTPS_PROXY 等环境变量。可以在终端里设置这些变量,或者直接开启 TUN 模式。

开启 TUN 模式需要管理员权限吗?

通常需要。创建虚拟网卡和修改路由表属于系统级操作,Windows 上一般要以管理员身份运行或安装客户端的服务组件,macOS 上会要求授权,具体以客户端版本说明为准。

TUN 模式会更耗流量或更慢吗?

流量消耗取决于代理模式和规则,而不是 TUN 本身。TUN 模式会让更多程序进入分流判断,只要保持规则模式,国内流量依然直连。

开了 TUN 之后完全没网怎么办?

常见原因是同时运行了多个代理软件、DNS 劫持设置异常或虚拟网卡驱动未正确安装。先关闭 TUN 恢复网络,再按客户端没网的排查步骤逐项检查。

本文最后更新于 。网络服务与 AI 平台政策变化较快,如发现信息过时,欢迎通过联系我们反馈。