AI 专题 使用教程
Claude Code 网络环境配置与代理设置:环境变量、TUN 模式与常见报错
Claude Code 在终端运行,通常不会自动使用系统代理。本文给出 macOS、Linux、Windows PowerShell 的 HTTPS_PROXY 配置方法、TUN 模式方案、WSL 与远程服务器设置,以及连接超时的排查步骤。
- 作者
- AI 工具编辑组
- 首次发布
- 最后更新
- 内容类型
- 使用教程
- 资料核对
- 阅读时间
- 约 5 分钟
信息可能随服务调整而变化,请以最新官方信息为准。
直接答案
Claude Code 运行在终端里,通常不会读取系统代理,所以浏览器能用 Claude 不代表 Claude Code 能连上。解决方法有两种:在终端设置 HTTPS_PROXY / HTTP_PROXY(及 NO_PROXY)环境变量,指向代理客户端的混合端口;或在代理客户端开启 TUN 模式,让所有程序的流量都经过代理。配置后保持节点固定,避免会话中途切换。
Key Takeaways · 要点速览
- 系统代理通常只对浏览器生效,Claude Code 需要终端级别的代理配置。
- 环境变量方案灵活、影响范围小;TUN 模式覆盖全部程序,适合同时使用多个命令行工具。
- 代理地址建议写成 http://127.0.0.1:端口,端口以客户端显示的混合端口为准。
- WSL2、远程 SSH 服务器、容器中的 127.0.0.1 不是宿主机,需要单独处理。
- 长时间任务中不要切换节点,会话中断和额外验证多数由此引起。
操作步骤
-
确认代理客户端的混合端口
打开代理客户端设置,找到混合端口(Mixed Port)或 HTTP 端口,记下数值,例如 7897。确认客户端已连接到官方支持地区的节点。
-
为终端设置代理环境变量
macOS / Linux 执行 export HTTPS_PROXY=http://127.0.0.1:7897 与 export HTTP_PROXY=http://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"。
-
设置 NO_PROXY 排除本地地址
将 NO_PROXY 设置为 localhost,127.0.0.1,避免本地服务、登录回调等请求被错误地转发到代理。
-
验证终端是否已走代理
在同一个终端窗口执行 curl -I https://api.anthropic.com,能收到 HTTP 响应头即说明网络已通;超时则说明代理未生效或节点不可用。
-
启动 Claude Code 并完成登录
在已设置代理的终端中启动 claude,按提示在浏览器中完成登录授权。安装与登录方式以官方文档为准。
-
持久化配置或改用 TUN 模式
确认可用后,把环境变量写入 shell 配置文件或系统用户变量;如果还有其他命令行工具需要代理,可以改为开启客户端的 TUN 模式。
为什么 Claude Code 需要单独配置代理
直接回答:Claude Code 是一个命令行程序,它发出的请求不经过浏览器,也通常不会读取操作系统的「系统代理」设置。所以常见现象是浏览器里的 Claude 一切正常,终端里却提示连接错误或请求超时。只要让终端的流量进入代理,问题多数就解决了,方法是设置代理环境变量,或者开启代理客户端的 TUN 模式。
两种方案的区别如下:
| 方案 | 原理 | 优点 | 局限 |
|---|---|---|---|
| 环境变量 | 程序读取 HTTPS_PROXY 等变量,主动把请求发给代理 | 只影响当前终端,容易排查 | 每个终端或 shell 都要生效;不读取变量的程序无效 |
| TUN 模式 | 客户端创建虚拟网卡,在网络层接管流量 | 覆盖所有程序,无需逐个配置 | 需要管理员权限;与其他 VPN 类软件可能冲突 |
本文适用于 macOS、Linux 与 Windows。Claude Code 的安装方式以官方文档为准,这里只讨论网络部分。
准备工作
- 代理客户端已正常连接,并选中位于 Anthropic 官方支持地区的节点。中国大陆与中国香港不在官方支持列表中,地区判断以官方支持地区列表为准。
- 找到混合端口。在客户端设置中查看「混合端口」或「HTTP 端口」,以客户端显示的为准,例如
7897。下文均以http://127.0.0.1:7897举例,请替换为你自己的端口。 - 浏览器能正常打开 Claude,用于确认节点本身可用。
方法一:设置代理环境变量
macOS / Linux
在当前终端中临时生效:
export HTTPS_PROXY=http://127.0.0.1:7897
export HTTP_PROXY=http://127.0.0.1:7897
export NO_PROXY=localhost,127.0.0.1
部分程序只认小写变量名,可以同时设置一份小写版本(https_proxy、http_proxy、no_proxy)。
想让每个新终端自动生效,把上面几行追加到 shell 配置文件中:macOS 默认 shell 是 zsh,对应 ~/.zshrc;bash 用户对应 ~/.bashrc。保存后执行 source ~/.zshrc 或重新打开终端。
Windows PowerShell
当前窗口临时生效:
$env:HTTPS_PROXY="http://127.0.0.1:7897"
$env:HTTP_PROXY="http://127.0.0.1:7897"
$env:NO_PROXY="localhost,127.0.0.1"
需要长期生效时,可以写入当前用户的环境变量,之后新开的终端都会继承:
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://127.0.0.1:7897", "User")
[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://127.0.0.1:7897", "User")
如果使用的是 CMD,对应写法是 set HTTPS_PROXY=http://127.0.0.1:7897。
提示Claude Code 也支持在其配置文件的 env 字段中声明环境变量,适合只想让 Claude Code 走代理、不影响其他程序的情况。具体字段与文件位置以官方文档为准。
关于 NO_PROXY
NO_PROXY 列出不经过代理的地址。至少保留 localhost 与 127.0.0.1,避免本地开发服务、登录回调等请求被转发到代理导致失败。如果公司内网有需要直连的域名,也加在这里,用英文逗号分隔。
方法二:开启 TUN 模式
TUN 模式让代理客户端在系统中创建一块虚拟网卡,所有程序的流量都会先经过它,再由规则决定走代理还是直连。开启后无需设置环境变量,Claude Code、git、npm 等都会自动生效。
开启时注意:
- 首次开启通常需要授予管理员权限或安装服务组件;
- 建议同时开启客户端的 DNS 接管相关选项,避免 DNS 泄漏或解析异常;
- 与其他 VPN、加速器类软件同时运行可能冲突,出问题时先关闭其他软件。
以 Clash Verge Rev 为例的完整步骤,可以参考 Clash Verge Rev TUN 模式设置。
验证配置是否生效
在同一个终端窗口中执行:
curl -I https://api.anthropic.com
- 很快返回 HTTP 响应头(状态码不重要),说明终端到 Anthropic 的网络已通;
- 长时间无响应后超时,说明代理没有生效,或当前节点无法连接;
- 返回连接被拒绝,通常是端口写错或代理客户端没有运行。
验证通过后再启动 Claude Code,按提示在浏览器中完成登录授权。
特殊环境
WSL2
WSL2 默认运行在独立的虚拟网络中,里面的 127.0.0.1 指向 WSL 自身,而不是 Windows。可选做法:
- 在代理客户端开启「允许局域网连接」,把代理地址改为 Windows 宿主机在虚拟网络中的 IP;
- 或在较新的 WSL 版本中启用 mirrored 网络模式,使 WSL 与 Windows 共享网络,此时
127.0.0.1可以直接使用。
远程 SSH 服务器
在远程服务器上运行 Claude Code 时,可以把本机的代理端口通过 SSH 反向转发过去:
ssh -R 7897:127.0.0.1:7897 user@server
登录后在服务器上设置 HTTPS_PROXY=http://127.0.0.1:7897 即可。请确认这种用法符合服务器所属机构的安全规定。
Docker 与开发容器
容器内的 127.0.0.1 同样不是宿主机。需要在容器启动参数中传入代理环境变量,并使用宿主机可达的地址;具体写法取决于容器运行环境。
稳定性建议
- 固定节点:为 AI 工具单独建立一个手动选择的策略组,不要使用自动测速切换。
- 任务中不换节点:Claude Code 的一次任务可能持续较长时间,中途切换出口会导致请求中断,也可能因出口变化触发额外验证。
- 浏览器与终端同一出口:账号在同一时间从两个地区发出请求,属于不必要的风险。
- 优先稳定线路:长连接对晚高峰丢包非常敏感,选择方法见 Claude 网络环境完整指南。
常见报错与处理
| 症状 | 可能原因 | 处理方式 |
|---|---|---|
| Connection error / 请求超时 | 终端没有走代理 | 按方法一设置环境变量,或开启 TUN |
| 连接被拒绝(ECONNREFUSED) | 端口写错,或代理客户端未运行 | 核对客户端显示的混合端口 |
| 地区不可用相关提示 | 节点出口不在官方支持地区 | 更换支持地区节点并核实 IP 归属 |
| 浏览器登录后终端仍未登录 | 登录回调被代理或防火墙影响 | 确认 NO_PROXY 包含 localhost 与 127.0.0.1 |
| 任务进行中断开(ECONNRESET) | 线路丢包或中途切换节点 | 固定节点,换晚高峰更稳定的线路 |
| 证书错误 | 公司网络或安全软件进行了 HTTPS 检查 | 联系网络管理员,按官方文档配置受信任证书 |
按上述步骤仍无法连接,可以继续阅读 Claude Code 网络连接失败怎么办,按问题页的检查清单逐项排除。
常见问题
Claude Code 为什么不走系统代理?
系统代理是一项供程序自愿读取的设置,浏览器等图形程序会遵循它,但大多数命令行程序只读取 HTTPS_PROXY 等环境变量。因此需要为终端单独配置,或开启 TUN 模式在网络层接管流量。
代理地址能写 socks5:// 吗?
不建议。部分命令行工具对 SOCKS 代理支持有限,使用代理客户端混合端口对应的 http://127.0.0.1:端口 兼容性最好。
环境变量和 TUN 模式该选哪个?
只需要 Claude Code 走代理时用环境变量,影响范围小、便于排查;同时使用 git、npm、Codex CLI 等多个工具,或某个工具不读取环境变量时,用 TUN 模式更省心。两者不要叠加后又互相冲突,出现异常时先只保留一种。
在 WSL2 中设置 127.0.0.1 为什么不生效?
WSL2 默认运行在独立的虚拟网络中,127.0.0.1 指向的是 WSL 自身而不是 Windows。需要改用 Windows 宿主机的 IP 并在客户端开启允许局域网连接,或启用 WSL 的 mirrored 网络模式。
Claude Code 用着用着断开,是代理的问题吗?
多数与线路稳定性或中途切换节点有关。长任务依赖持续的长连接,建议固定一个晚高峰稳定的节点,关闭自动切换类策略组,并避免在任务进行中更换节点。