连接故障故障排查

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

系统代理只对遵守系统代理设置的软件生效,TUN 模式通过虚拟网卡接管几乎所有流量。本文对比两者的覆盖范围、权限、UDP 支持与兼容性,并解释 Claude Code、Codex 等命令行工具为什么常需要 TUN。

系统代理和 TUN 模式有什么区别?该开哪个?的网络技术概念插图
梯子k原创概念插图
本文目录

两者的区别在于「谁来决定走不走代理」。系统代理是在系统设置里登记一个代理地址,软件自己决定是否读取;TUN 模式是在系统里创建一张虚拟网卡,把流量从网络层面接过来,不管软件是否配合。

所以日常只用浏览器、微信这类会读取系统代理的软件,开系统代理就够了;如果命令行工具、游戏或某些桌面软件「开了代理还是连不上」,就需要开 TUN 模式。

两者对比

对比项 系统代理 TUN 模式
工作方式 在系统设置中登记 HTTP 代理地址 创建虚拟网卡,接管网络流量
覆盖范围 只对读取系统代理设置的软件生效 几乎所有软件的流量
需要权限 普通权限即可 通常需要管理员权限或服务模式
UDP 流量 基本不涉及 可以接管 UDP
命令行工具 多数不生效 通常直接生效
兼容性问题 少 偶尔与其他 VPN、虚拟机网卡冲突
适合场景 浏览器日常使用 CLI 工具、游戏、不支持代理设置的软件

CLI 工具为什么常需要 TUN

在终端中运行的 Claude Code、Codex CLI、git、npm 等程序,通常不会读取 Windows 或 macOS 的系统代理设置,而是看终端里的代理环境变量。于是会出现浏览器能打开 claude.ai,终端里却连接超时的情况。

解决方法有两种:

  1. 开启 TUN 模式:一次设置,所有终端和程序都生效,最省事。Clash Verge Rev 的设置方法见 TUN 模式教程。
  2. 设置环境变量:只对当前终端会话生效,适合不想开 TUN 或没有管理员权限的情况。

bash 或 zsh 中:

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890

PowerShell 中:

$env:HTTP_PROXY = "http://127.0.0.1:7890"
$env:HTTPS_PROXY = "http://127.0.0.1:7890"

示例中的 7890 只是常见端口,不同客户端和版本的默认值不同,以你客户端设置里显示的代理端口为准。关闭终端后环境变量失效,需要重新设置。Claude Code 和 Codex 的具体网络配置可分别参考 Claude Code 网络设置与 Codex CLI 代理设置。

该开哪个

  • 只用浏览器访问网页和 AI 网页版:系统代理。
  • 使用 Claude Code、Codex、Gemini CLI 等命令行工具:TUN,或系统代理加终端环境变量。
  • 玩游戏、使用语音软件:TUN。
  • 公司电脑没有管理员权限:系统代理加环境变量。
  • 电脑上同时装了其他 VPN 或虚拟机:先用系统代理,需要 TUN 时注意关闭其他虚拟网卡。

总结

  • 系统代理靠软件自觉读取,TUN 从网络层接管流量。
  • 浏览器用系统代理即可,CLI 工具、游戏通常需要 TUN。
  • 不开 TUN 时,可以在终端设置 HTTP_PROXY 和 HTTPS_PROXY,端口以客户端设置为准。
  • 开启 TUN 需要管理员权限,分流仍由客户端规则决定。

排查顺序速查

从本地到远端依次缩小问题范围,避免同时修改多个配置。
顺序检查对象验证方法
1本地网络关闭代理,确认普通网页是否正常
2订阅与节点核对有效期与配置,单独测试一个节点
3DNS 与路由查看客户端日志,每次只改变一个设置

常见问题

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

可以,多数情况下也不会冲突。开启 TUN 后,流量已经被虚拟网卡接管,系统代理是否开启影响不大。如果出现无法上网,先关闭其中一个排查。

开了 TUN 之后国内网站会变慢吗?

正常情况下不会。TUN 只负责接管流量,是否走代理仍由客户端的分流规则决定,国内域名按规则直连。如果国内网站明显变慢,检查是否误选了全局模式,或 DNS 设置是否正确。

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

TUN 需要在系统中创建虚拟网卡并修改路由表,这属于系统级操作。Clash Verge Rev 通常会提示以管理员身份运行或安装服务模式,按提示操作即可。

所属专题连接故障