Skip to content
发布数据核实最近更新信息来源通用技术资料;品牌公开资料/用户提供清单

终端与命令行工具走代理:环境变量与常见坑 ​

让终端和命令行工具走代理,核心是弄清一个事实:命令行程序不会自动继承浏览器的系统代理。常见做法有三种:在会话中设置代理环境变量,为具体工具写独立配置,或用 TUN 模式在网络层统一接管。

本页讲通用原理、变量写法、域名解析位置和十余种失效场景的排查路径,不涉及任何软件的版本与菜单细节。

核心结论与适用条件 ​

  • 如果你只需要让少数几个命令走代理,那么在当前终端会话里设置环境变量最轻量,关掉窗口就失效,影响范围最小,也最容易回退。
  • 如果你每天都要在终端里访问需要代理的服务,那么可以把变量写成可开关的函数或别名,而不是直接写死在启动文件里,避免代理软件没开时所有命令都卡住。
  • 如果你的工具并不读取标准变量,或者运行在容器、虚拟机、提权环境中,那么环境变量方案会频繁失效,此时应评估 TUN 模式,或为该工具使用它自己的代理配置项。
  • 如果你同时在使用 AI 命令行工具,那么还要把“出口是否固定”考虑进来,避免终端与浏览器走了不同出口;这部分原理见AI 分流规则的搭建思路。
  • 如果你想确认某个节点能否用于某个平台,本页无法给出结论。品牌资料显示覆盖相关使用场景,具体可用性、解锁状态及节点表现可能随 IP、地区和平台策略变化,建议以最新实际测试结果为准。

本页属于 AI 场景专题 的使用侧文章,只讲终端这一环。编辑器内的设置见 IDE 与编程助手的代理设置,用量问题见 AI 工具的流量消耗估算。

为什么终端不会自动走代理 ​

要理解各种坑,先要知道一个请求是怎样决定“走不走代理”的。

浏览器、聊天软件等图形程序通常会向操作系统询问“当前有没有系统代理”,然后按系统给出的地址和例外列表发起连接,或者提供自己的代理选项。命令行程序的做法更朴素:它们大多在启动时读取几个约定俗成的环境变量,有的工具则读取自己的配置文件,还有不少工具完全不处理代理,直接向目标地址建立连接。

这导致三种常见局面:

  1. 程序读取环境变量:设置变量即可生效,是最理想的情况。
  2. 程序只读取自己的配置:变量设置了也没用,必须找到该工具的代理选项。
  3. 程序什么都不读:只有在网络层接管流量(例如 TUN 模式)才能让它走代理。

此外,同一个工具的不同子功能也可能走不同路径。例如一个工具的下载环节遵循变量,调用外部组件的环节却创建了新进程、丢失了变量。排查时不要只看“主程序”,要看实际发出网络请求的那个进程。

三种接管方式对比 ​

终端流量走代理,本质是三种机制之一,选择取决于覆盖范围与可控性。

指标单位统计口径数据来源更新时间
环境变量方式的覆盖范围文本仅覆盖读取标准变量的程序,且仅限设置了变量的会话及其子进程通用技术资料2026-10-18
工具自带配置的覆盖范围文本仅覆盖该工具本身,需逐个工具配置通用技术资料2026-10-18
TUN 模式的覆盖范围文本在网络层接管,理论上覆盖所有经过虚拟网卡的 IP 流量通用技术资料2026-10-18
环境变量方式的权限要求文本普通用户权限即可通用技术资料2026-10-18
TUN 模式的权限要求文本通常需要更高的系统权限通用技术资料(具体以所用客户端说明为准)2026-10-18
环境变量方式的可回退性文本取消变量或关闭终端窗口即恢复通用技术资料2026-10-18
TUN 模式与其他网络软件的冲突风险文本可能与其他虚拟网卡、安全软件产生路由冲突通用技术资料2026-10-18
域名解析位置控制文本变量方式取决于协议写法;TUN 方式取决于 DNS 配置通用技术资料2026-10-18

三者并非互斥。一种稳妥的组合是:日常用环境变量处理个别命令,遇到不读变量的工具或容器场景再切换 TUN,并始终通过日志确认请求实际的去向。TUN 的原理与取舍见基础设施篇的路由说明,客户端侧的 TUN 配置思路可以对照Clash 系客户端的 TUN 模式一文。

环境变量清单:哪些名字被广泛识别 ​

下表列出常见的代理相关变量及其通用含义。是否读取、是否区分大小写,因工具而异,表里的“通用约定”只表示广泛采用的习惯,具体行为要以所用工具的说明为准。

变量名作用常见写法示例是否通用数据来源
HTTP_PROXY指定 http 请求使用的代理协议加主机加端口,端口用占位广泛采用通用技术资料
HTTPS_PROXY指定 https 请求使用的代理同上,代理地址本身通常仍写 http 或 socks 协议广泛采用通用技术资料
ALL_PROXY兜底代理,适用于所有协议常用于 socks 写法部分工具读取通用技术资料
NO_PROXY指定不走代理的目标逗号分隔的主机、域名后缀、地址段广泛采用,细节不一通用技术资料
小写变体同名变量的小写形式如 http_proxy部分工具只认小写,部分只认大写通用技术资料

这里有一个常见误解值得单独说明:HTTPS_PROXY 的值并不是“https 开头”。它的含义是“访问 https 目标时使用的代理”,而代理服务本身往往是以 http 或 socks 协议监听的本地端口。把它写成 https 开头,大概率导致握手失败。

大小写也要留意:有的工具只认小写,有的只认大写,常见做法是两种形式都设置并保持值一致。

代理协议怎么写:HTTP、SOCKS 与解析位置 ​

本地代理软件通常在同一个端口或不同端口上提供 HTTP 和 SOCKS 两种入口,具体端口以你的客户端设置为准,本页统一用占位表示。

HTTP 代理适合绝大多数命令行工具,因为生态内的支持最广泛。SOCKS 代理的优点是不局限于 HTTP 语义,可以承载更多种类的 TCP 流量,缺点是并非所有工具都支持,写法也有细微差别。

最关键的差别是域名解析发生在哪一端:

  • 本机解析:程序先在本机把域名解析为 IP,再让代理去连这个 IP。优点是简单;缺点是本机 DNS 的结果可能与代理出口所在地区的结果不同,还会让域名查询暴露给本地网络。
  • 代理端解析:程序把域名原样交给代理,由代理端解析并连接。这种方式常对应带 h 的写法(例如 socks5h)以及 HTTP 代理的 CONNECT 请求,通常更符合“让出口决定一切”的预期。

对 AI 类服务而言,解析位置会影响“请求被分到哪个出口”与“域名规则是否命中”。如果客户端的分流规则是按域名写的,而程序在本地先把域名解析成了 IP 再发给代理,代理收到的只有 IP,域名规则可能无法命中,请求会落到兜底规则。这类问题的现象是:日志里看到的是一堆 IP 而不是域名。要避免它,要么使用让代理端解析的写法,要么在客户端启用能够还原域名的嗅探功能。相关概念可以在规则与路由原理中继续了解,协议层面的差别见协议与传输层说明。

动手设置:从临时到常驻 ​

下面按“影响范围由小到大”介绍四种设置方式。示例中的地址与端口均为占位,请换成你的客户端实际监听的值。

方式一:只对一条命令生效 ​

在命令前面直接写变量赋值,变量只对这一条命令及其子进程有效,执行完即消失。这是验证“某个工具是否读取变量”的有效办法:加上变量试一次,不行就换思路,不留任何副作用。

text
HTTPS_PROXY=http://127.0.0.1:端口 某命令 参数

方式二:对当前终端会话生效 ​

用导出语句设置变量,之后在该窗口里启动的所有程序都会继承。关闭窗口即失效。适合一次性的工作阶段。

text
export HTTP_PROXY=http://127.0.0.1:端口
export HTTPS_PROXY=http://127.0.0.1:端口
export NO_PROXY=localhost,127.0.0.1

方式三:写成可开关的函数 ​

把开启与关闭写成两个函数,放进 shell 的启动配置文件里,用名字调用。这样既免去每次输入,又保留了“默认不走代理”的安全状态。示意如下:

text
proxy_on()  { export HTTP_PROXY=... ; export HTTPS_PROXY=... ; export NO_PROXY=... ; }
proxy_off() { unset HTTP_PROXY HTTPS_PROXY ALL_PROXY NO_PROXY ; }

写函数时记得同时处理大小写两种形式,并在开启后给出一行提示,避免忘记当前状态。

方式四:直接写进启动文件 ​

把变量固定在启动文件里,每个新终端默认带代理。这是风险最高的一种:代理软件一旦没启动,所有读取变量的命令都会超时,而你往往很久才会想到是这里的问题。除非你的环境始终保证代理在线,否则不建议采用。

选择原则可以概括为:能用方式一就不用二,能用三就不用四。越是常驻,越要提供便捷的关闭手段。

NO_PROXY:该写什么,不该写什么 ​

NO_PROXY 解决的是“有些目标不应该经过代理”的问题。典型对象包括本机服务、局域网设备、公司内网地址,以及你希望直连的国内站点。

写法上的通用习惯是用英文逗号分隔多项,每项可以是主机名、域名后缀或地址。但几个细节各工具并不统一:是否支持以点开头的后缀、是否支持网段表示、是否支持通配符、端口如何写。因此建议遵循“保守原则”:

  • 先只写最确定的两三项(本机回环、局域网常用段),验证有效后再增加。
  • 不依赖复杂通配符,每新增一项都用一次实际请求验证它是否被直连。
  • 不要把大量域名堆在这一个变量里。更复杂的“哪些走代理、哪些直连”应交给代理客户端的规则去做,变量只负责兜住本地与内网这类简单例外。

还有一个经典的误伤:本地开发服务器在 localhost 上监听,而程序却把对 localhost 的请求发给了代理,结果收到代理软件的错误页。这几乎总是因为 NO_PROXY 没有包含本机回环,或者目标写成了机器名而非 NO_PROXY 里列出的形式。

反过来也要留意,直连的例外越多,越可能让本应走固定出口的 AI 域名悄悄绕过代理。涉及 AI 服务的域名,不要出现在 NO_PROXY 中。

常见工具如何读取代理 ​

下面按类别说明,不列任何工具的具体版本或默认值。结论一律以“先看该工具的官方文档,再用日志验证”为前提。

  • 下载与请求类命令行工具:多数读取标准变量,并提供命令参数形式的代理选项,参数通常比变量优先。
  • 版本控制工具:往往有自己的代理配置项,可对不同协议、不同远程地址分别设置;通过 SSH 协议的访问不走 HTTP 代理变量,需要另行设置连接转发方式。
  • 语言包管理器:多数读取标准变量,同时也有各自配置文件中的代理项;配置文件中的值可能覆盖变量,排查冲突时应两边都查。
  • 容器相关工具:客户端命令与后台服务是两个进程,设置变量只影响前者;后台服务拉取镜像时的代理需要在服务自身的配置中指定。
  • 各语言的 SDK 与脚本:部分库默认读取变量,部分库需要在创建会话对象时显式传入代理,还有的库需要打开“信任环境设置”之类的选项,具体名称以库文档为准。
  • SSH 与其他非 HTTP 协议:不遵循 HTTP 代理变量,常见做法是借助连接转发辅助程序,或使用 TUN 在网络层处理。

调用 AI 服务接口的脚本和命令行工具,属于上面最后几类。关于接口调用时的超时与稳定性,可以另读 调用 AI 接口时的代理与超时配置。

常见坑:现象、原因与处理 ​

把最常遇到的问题整理成对照表。这里的“处理方向”都是通用思路,不是针对某软件的操作步骤。

现象最可能的原因处理方向
设置变量后命令仍然直连工具不读取变量,或读取的是小写形式大小写都设置;查工具文档;用日志确认
命令卡住后超时变量指向的代理没有启动,或端口写错先确认代理软件在线、端口与客户端设置一致
访问本地服务返回代理错误页NO_PROXY 缺少本机回环补充本机与局域网例外并验证
提权后代理失效提权过程重置了环境变量显式传入变量,或评估 TUN
容器内无法连接容器里的 localhost 不是宿主机使用宿主机可达地址,并检查监听范围
证书校验失败代理或安全软件替换了证书,或系统时间不对先排除时间与中间人,不要直接关闭校验
域名规则未命中,日志全是 IP本机先解析了域名使用代理端解析写法或启用域名嗅探
网页能开,命令行 AI 工具报连接错误终端与浏览器走了不同出口,或工具未读变量固定出口并在同一终端验证
开了 TUN 后部分网络异常路由或 DNS 配置与其他软件冲突逐一关闭其他虚拟网卡软件,核对 DNS 设置
代理地址含特殊字符时报错凭据中的符号未做编码对特殊字符做 URL 编码,或改用无需认证的本地代理

几个值得展开的点:

关于证书错误。 遇到证书校验失败,第一反应不应是关闭校验。先检查系统时间是否正确,再检查是否有安全软件在做流量检查,最后才考虑是不是代理链路本身的问题。关闭校验等于把传输层的保护拆掉,在涉及账号与接口密钥的场景里风险尤其高。

判断路径:终端请求没走代理时怎么查 ​

Decision Path

终端或命令行工具请求没有经过代理的排查顺序

条件化判断
text
终端里的请求没有走代理
├─ 代理客户端在线,且本地端口能被其他程序访问吗?
│  ├─ 否 → 先修复代理客户端本身(监听端口、订阅更新、内核状态)
│  └─ 是 → 继续
├─ 只给这一条命令加变量,请求有变化吗?
│  ├─ 有变化 → 工具读取变量;问题在于会话里变量未设置或被覆盖
│  │     ├─ 检查大小写两种形式是否一致
│  │     └─ 检查工具自身配置文件是否覆盖了变量
│  └─ 无变化 → 继续
├─ 工具有自己的代理选项吗?
│  ├─ 有 → 使用它,并用日志验证
│  └─ 没有或不确定 → 继续
├─ 运行环境是提权、容器、虚拟机、定时任务吗?
│  ├─ 是 → 变量大概率丢失;显式传入、使用宿主机可达地址,或转向 TUN
│  └─ 否 → 继续
├─ 日志里看到的是域名还是 IP?
│  ├─ 只有 IP → 域名在本机被提前解析;改用代理端解析写法或启用嗅探
│  └─ 有域名 → 检查是否命中了预期规则
└─ 仍然异常
   └─ 评估 TUN 模式,并在启用后复查路由、DNS 与冲突软件
决策树仅用于梳理判断顺序,结论依赖你的实际网络环境与需求,不构成购买建议。

这条路径的思路是由外向内:先确认代理本体可用,再确认变量是否生效,最后才怀疑环境与规则。很多人的习惯是直接换节点,但对于“请求根本没进代理”的问题,换节点毫无作用。

知识图谱:终端代理 ​

实体定义。 终端代理,是指让命令行程序发出的网络请求经由本地代理软件转发的做法,可通过环境变量、工具自带配置或 TUN 网络层接管三种机制实现。

相关概念。 系统代理(面向图形程序的统一设置)、环境变量(进程启动时继承的键值对)、NO_PROXY(直连例外清单)、SOCKS(承载任意 TCP 流量的代理协议)、HTTP CONNECT(HTTP 代理承载加密流量的方法)、TUN(虚拟网卡,在网络层接管流量)、DNS 解析位置(本机或代理端)、域名嗅探(从连接内容还原域名)。

技术参数。 变量名与大小写形式;代理协议(http 或 socks);是否由代理端解析域名;例外清单写法;运行环境(普通终端、提权、容器、虚拟机、定时任务);监听范围(仅本机或开放局域网)。以上均为配置项而非数值,具体取值取决于你的客户端设置。

适用场景。 访问需要代理的软件包与代码仓库;命令行形态的 AI 工具与脚本;在服务器或远程环境中临时访问外部资源;需要确认某命令出口地区的排查场景。

对比依据。 选择环境变量还是 TUN,看三点:工具是否读取变量、运行环境是否会丢失变量、你能接受的权限与冲突风险。选择 HTTP 还是 SOCKS,看工具支持与域名解析位置的需求。

常见问题指向。 浏览器正常而终端异常,看变量与工具配置;提权与容器失效,看环境隔离;域名规则不命中,看解析位置;AI 工具异常,先看出口一致,再看平台策略。

方案关联:与客户端方案的配合 ​

终端代理本身不依赖某个机场品牌,它依赖的是你本地代理客户端提供的监听入口和规则能力。因此“方案关联”应该看客户端层面:

品牌侧,下面仅按 data/brands.json 的字段,整理本站在 AI 场景有标签的几家的客户端方式。这是资料整理而非排序,也不构成推荐,价格均区分类型标注。

品牌客户端方式(品牌资料)价格口径入门流量AI 场景状态
光速云自研客户端+第三方订阅导入年付折算约 7.5 元/月,月付价待核实59GBVendor Data
极连云自研客户端+第三方客户端月付价 18 元/月100GBVendor Data
光年梯自研客户端+第三方订阅导入月付价 18 元/月110GBVendor Data
速界自研客户端+第三方订阅导入月付价 25 元/月150GBVendor Data

对终端场景而言,值得关注的字段是“是否支持第三方订阅导入”。能导入第三方客户端,意味着你可以使用带有规则、混合端口和 TUN 功能的客户端,从而灵活处理终端流量。但该字段只表示资料层面的客户端兼容,不代表任何平台可用。品牌资料显示覆盖相关使用场景,具体可用性、解锁状态及节点表现可能随 IP、地区和平台策略变化,建议以最新实际测试结果为准。想按标签浏览更多资料,可进入品牌库按 AI 工具筛选。

优点、限制与风险提示 ​

优点 ​

  • 环境变量方案无需额外权限,设置、验证、回退都很快,适合试错。
  • 按会话生效,影响范围可控,不会改动系统其他部分。
  • 与规则型客户端配合,可以让终端和浏览器共用一套分流逻辑与固定出口。
  • 配合可开关的函数,可在“默认直连”与“按需代理”之间自由切换。

限制 ​

  • 只对读取变量的程序有效;不读变量的工具、提权环境和定时任务都需要另想办法。
  • 不同工具对大小写、通配符、协议写法的支持不一致,同一份配置不能保证到处通用。
  • 变量方式无法统一约束所有进程,无法保证“终端中所有流量”都被覆盖。
  • TUN 虽然覆盖面广,但依赖权限,并可能与其他网络软件冲突。

风险提示 ​

  • 代理地址中携带凭据会暴露在环境变量、历史记录和进程信息里,应避免。
  • 开放本地代理监听给局域网或容器时,同网络的其他设备也可能使用它,需评估网络环境的可信度。
  • 不要为了让命令通过而关闭证书校验,这会削弱传输安全。
  • 通过代理访问外部服务时,应遵守所在地法律法规与各平台服务条款;本页只讨论技术原理与使用风险。
  • AI 平台的风控规则不公开且会变化,终端与浏览器出口不一致会增加环境漂移风险,账号层面的建议见AI 账号与网络环境一致性。

常见问题 ​

浏览器能上网,为什么终端里的命令还是连不上? ​

因为浏览器通常读取系统代理或自带代理设置,而终端中的命令行工具多数只读取环境变量,或者有自己独立的代理配置,二者互不相通。系统代理开着,不等于终端里的程序会使用它。需要在终端里设置代理环境变量、为具体工具单独配置,或者改用 TUN 模式在网络层接管流量。

HTTP_PROXY 和 ALL_PROXY 有什么区别,应该设置哪个? ​

HTTP_PROXY 与 HTTPS_PROXY 分别针对 http 与 https 请求,是最多工具识别的一组;ALL_PROXY 是更通用的兜底写法,只有部分工具读取。实际操作中先设置前两个,再把 ALL_PROXY 作为补充,并以所用工具的文档确认它读取哪些变量,不要想当然地认为所有工具行为一致。

socks5 与 socks5h 差在哪里? ​

差别在域名解析发生的位置。socks5 通常由本机先解析域名再把 IP 交给代理,socks5h 则把域名交给代理端解析。后者可以避免本机 DNS 解析结果与代理出口不一致,也减少域名查询暴露在本地网络的情况。是否支持这种写法取决于具体工具,需要查阅该工具的说明。

NO_PROXY 应该怎么写才不会误伤本地服务? ​

NO_PROXY 里列出不需要走代理的主机名、域名后缀或地址段,用英文逗号分隔,通常至少包含本机回环地址与局域网地址。不同工具对通配符、网段写法的支持不完全一致,所以应保持简单,只写工具明确支持的形式,并在配置后用一个本地服务的请求验证是否被代理拦走。

为什么用 sudo 运行命令时代理突然失效? ​

因为提权命令往往会重置或过滤环境变量,当前用户终端里设置的代理变量不会传给被提权的进程。常见处理是在提权命令里显式传入变量,或在系统允许的前提下让提权配置保留这些变量。这类设置涉及系统安全策略,修改前应理解其含义,必要时改用不依赖环境变量的 TUN 方案。

Docker 或虚拟机里的程序为什么读不到宿主机的代理? ​

容器与虚拟机拥有各自的网络空间,里面的 localhost 指向它自己而不是宿主机。代理地址写成 127.0.0.1 时,容器内程序连的是自己,自然连不上。需要使用宿主机在该网络中可达的地址,并确认代理软件允许来自局域网或虚拟网卡的连接,这同时也要求你评估开放监听带来的安全风险。

用 TUN 模式是不是就不用管终端环境变量了? ​

多数情况下确实不用,因为 TUN 在网络层接管流量,不依赖程序是否读取变量。但它也有代价:需要更高的系统权限,可能与其他虚拟网卡或安全软件冲突,并且规则与 DNS 配置要同步到位。对只想让个别命令走代理的场景,环境变量更轻量、更可控。

终端代理配置会不会泄露我的账号或密码? ​

有可能。如果代理地址里包含用户名与密码,它会出现在环境变量、命令历史和进程信息中,被同机其他程序或日志读取。本机代理通常无需认证,应避免把凭据写进变量;确需认证时,使用受保护的配置文件,并避免把含凭据的配置提交到代码仓库或贴到公开场合。

AI 命令行工具和编程助手需要额外的代理设置吗? ​

需要先确认它们是否读取环境变量。本页只讨论通用方法:多数命令行形态的 AI 工具会遵循标准代理变量,但具体行为以工具文档为准。品牌资料显示覆盖相关使用场景,具体可用性、解锁状态及节点表现可能随 IP、地区和平台策略变化,建议以最新实际测试结果为准。

怎样确认终端里的请求真的经过了代理? ​

可以从三层核对。第一,在客户端的连接日志里查看该请求是否出现、命中哪条规则;第二,在同一终端里请求一个会返回出口 IP 信息的服务,对比有无代理时的结果;第三,观察域名解析是否在预期位置完成。三层结果一致,才说明终端流量按预期走了代理。

下一步 ​

Cluster · workflow

AI 工作流

7 / 7
  1. 为 AI 服务单独配置分流规则如何让 AI 服务固定走指定节点?
  2. 编程助手与 IDE 插件的代理设置IDE 和编程助手插件怎么设置代理?
  3. 终端与命令行工具走代理:环境变量与常见坑如何让终端和命令行工具走代理?
  4. AI 工具的流量消耗:文本、图像与语音场景估算日常使用 AI 工具大概消耗多少流量?
  5. 小团队共同使用 AI 工具的网络方案小团队一起使用 AI 工具时网络方案怎么规划?
  6. AI 对话变慢:区分网络延迟与模型响应时间AI 回复慢是网络问题还是模型本身的问题?
  7. 按 AI 场景筛选品牌资料:从标签到实测的路径有 AI 使用需求时应该如何筛选品牌资料?

信息来源与更新日期 ​

  • 信息来源:通用技术资料(代理环境变量约定、SOCKS 与 HTTP 代理原理、TUN 与 DNS 解析的通用机制);品牌公开资料/用户提供清单(data/brands.json)。
  • 品牌字段状态:Vendor Data;测速与可用性:Not Tested。
  • 数据核实日期:2026-10-18。
  • 最近更新时间:2026-10-18。

本站整理品牌公开资料与用户提供清单,不构成购买建议;未验证信息均标注“待核实”。部分链接为官方注册/推广链接。