系统代理和 TUN 模式有什么区别?什么时候该开 TUN

系统代理只对读取系统设置的程序生效,终端和很多游戏不走;TUN 模式接管整台电脑的流量。本文讲清两者区别、适用场景,以及让终端走代理的环境变量设置方法。

作者:最后更新:阅读约 2 分钟

直接答案系统代理是在系统网络设置里填一个代理地址,只有「愿意读取这个设置」的程序才会走代理,浏览器基本都可以,但终端、命令行工具、很多游戏和部分软件不读。TUN 模式是让客户端创建一块虚拟网卡,接管整台电脑的流量,所有程序都会经过它。日常浏览用系统代理就够;要让 Claude Code、Codex、git 等终端工具或游戏走代理,就开 TUN 模式。

一张表看懂区别

对比项 系统代理 TUN 模式
原理 在系统网络设置里填一个代理地址 创建虚拟网卡,接管所有网络流量
浏览器 ✅ 走代理 ✅ 走代理
终端 / 命令行工具(Claude Code、Codex、git、npm 等) ❌ 大多不走 ✅ 走代理
游戏、部分桌面软件 ❌ 很多不走 ✅ 走代理
是否需要管理员权限 不需要 需要(首次授权)
稳定性 简单,几乎不出问题 偶尔和 VPN、虚拟机、其他网络工具冲突

系统代理:只管「听话」的程序

开启系统代理后,客户端会在操作系统的网络设置里填上一个本地代理地址,比如 127.0.0.1 加客户端的端口。浏览器、大多数聊天软件会读取这个设置,于是走代理。

问题在于,很多程序根本不看这个设置:

  • 终端里运行的命令行工具,比如 Claude Code、Codex CLI、git、npm、pip;
  • 很多游戏和游戏平台;
  • 一些自带网络模块的桌面软件。

这就是为什么「浏览器能打开 Claude,终端里的 Claude Code 却连不上」。

TUN 模式:整台电脑都接管

TUN 模式下,客户端会创建一块虚拟网卡,让系统把所有网络流量都交给它,再按规则决定哪些走代理、哪些直连。程序读不读系统设置都无所谓,流量都会经过客户端。

适合开 TUN 的情况:

  • 用 Claude Code、Codex 等 AI 编程工具,或在终端里用 git、npm 访问境外资源;
  • 玩需要走代理的游戏;
  • 某个软件就是不走系统代理,又找不到设置代理的地方。

注意:TUN 模式仍然受规则控制。在规则模式下,国内网站照样直连。

不开 TUN,让终端走代理:设置环境变量

只想让某个终端窗口走代理,可以设置环境变量。先在客户端设置里找到本地代理端口(以客户端显示为准,比如 Clash Verge Rev 的默认混合端口是 7897),然后:

macOS / Linux(zsh、bash):

export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897

Windows PowerShell:

$env:HTTPS_PROXY="http://127.0.0.1:7897"; $env:HTTP_PROXY="http://127.0.0.1:7897"

把 7897 换成你客户端实际的端口。设置只对当前窗口有效,关闭窗口就失效。大多数命令行工具都会读取这些变量,但也有少数工具不读,这时还是得开 TUN。

怎么选

  • 只用浏览器:系统代理就够了,最简单稳定。
  • 用 Claude Code、Codex 等终端工具,偶尔用:设置环境变量,不影响其他程序。
  • 经常用终端工具,或要让游戏、其他软件走代理:直接开 TUN 模式,一劳永逸。
  • 开了 TUN 后出现网络异常:先关掉其他 VPN、加速器、虚拟机网络工具,它们容易和 TUN 冲突。

用 Claude Code 还要选对节点地区、注意丢包,见 Claude 用什么地区的节点。

常见问题

TUN 模式会不会更费流量?

不会因为模式本身多耗流量。是否走代理仍由规则决定:规则模式下国内网站照样直连。只是原来不走代理的程序(比如终端、游戏)现在会按规则走代理,这部分流量会计入机场流量。

开了 TUN 模式后国内网站变慢了怎么办?

检查客户端是否处在规则模式,以及 DNS 设置是否正常。TUN 模式配合全局模式会让所有流量都走代理,国内网站自然变慢。

为什么开 TUN 需要管理员权限?

TUN 模式要创建虚拟网卡、修改系统路由,这需要系统权限。Clash Verge Rev 等客户端通常要求安装「服务模式」或以管理员身份运行,第一次开启时会弹出授权提示。

只想让某一个终端窗口走代理,不想开 TUN,可以吗?

可以,在这个终端里设置代理环境变量即可,只影响当前窗口,关掉就失效。具体命令见正文。