摘要:系统代理是登记一个地址,软件自觉读取;TUN 是虚拟网卡,从网络层强制接管。浏览器和常见 App 用前者就够,命令行工具、游戏、语音这类不读系统代理的才需要 TUN。

一分钟速查

  • 系统代理:靠软件自觉读取,浏览器、微信够用。
  • TUN 模式:网络层接管,覆盖所有程序。
  • CLI 工具:不读系统代理,用 TUN 或终端环境变量。
  • 游戏:流量通常不走系统代理,要 TUN。

两者对比

对比项系统代理TUN 模式
原理登记代理地址,软件自行读取虚拟网卡,网络层接管流量
覆盖范围只覆盖会读系统代理的软件覆盖所有程序,含命令行、游戏
权限无需管理员需管理员权限或服务模式
适合浏览器、日常网页CLI 工具、游戏、语音软件

一句话概括这张表:系统代理是「约定」,TUN 是「强制」。

CLI 工具为什么常需要 TUN

终端程序不读系统代理

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

两种解决办法

一是开 TUN 模式,一次设置全部生效,最省事;二是在终端里设置代理环境变量,只对当前会话生效,适合临时排障或公司电脑没管理员权限的场景。

该开哪个

只用浏览器

访问网页、AI 网页版、看视频,系统代理足够。不开 TUN 也不用给管理员权限,出问题好排查。

命令行工具

用 Claude Code、Codex、Gemini CLI 这类工具,要么开 TUN,要么系统代理加终端环境变量。两者选一个,别都不配再抱怨「终端连不上」。

玩游戏、语音软件

这类程序基本不读系统代理,很多还走 UDP,只能靠 TUN 接管。

没有管理员权限

公司电脑开不了 TUN,就用系统代理加环境变量,浏览器和终端各自配好,效果接近。

PAC 自动配置是什么

PAC(Proxy Auto-Config)用一个脚本按域名分流:脚本里写好哪些域名走代理、哪些直连,浏览器按脚本执行,适合「只让部分流量走代理」的精细场景。

不过 PAC 配置复杂、只对认它的程序生效,日常精细分流如今基本由客户端的规则分流取代——Clash、Shadowrocket 的规则系统比 PAC 脚本更强也更直观。除非有特殊场景,不必再手写 PAC。

关于代理模式的 3 个误区

  • 「开了系统代理就全搞定」——CLI、游戏不读系统代理,要 TUN 或环境变量;
  • 「开 TUN 国内网站会变慢」——TUN 只接管流量,走不走代理仍由分流规则决定,国内域名照常直连;
  • 「TUN 和系统代理不能同时开」——多数情况不冲突,出现无法上网时先关一个排查。