摘要:系统代理是登记一个地址,软件自觉读取;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 和系统代理不能同时开」——多数情况不冲突,出现无法上网时先关一个排查。
