跳到正文

Claude Code WSL 代理:NO_PROXY 设置

Claude Code 不走代理,多半是变量设错了地方,而不是代理有问题。本文讲在 Windows 和 WSL 里该设在哪,以及每一步怎么验证。

最常见的三个原因

原因 1:变量设错了地方。在 WSL 终端里启动的 Claude Code 是 Linux 进程,在 Windows PowerShell 里设的变量传不到它,除非用 WSLENV 传过去;反过来也一样。在 shell 里 export 的变量只在启动时读一次,后台代理又由同一个守护进程启动,所以 settings.json 是最稳妥的位置。

原因 2:地址只在 Windows 上有效。WSL 默认是 NAT 模式,WSL 里的 127.0.0.1 指的是 WSL 自己,所以跑在 Windows 上、监听 127.0.0.1 的代理客户端它够不到。要用 Windows 主机的 IP,或者把 WSL 切到镜像模式,这时 127.0.0.1 就能访问 Windows 上的服务。

原因 3:URL 不是 Claude Code 接受的写法。它不支持 SOCKS,而且 URL 少了 http:// 会让启动报错,并指出是哪个变量。

变量该设在哪

变量该设在哪
项目变量设在哪怎么连 Windows 上的代理客户端
原生 Windows(PowerShell)单次会话用 $env:HTTPS_PROXY,长期用 %USERPROFILE%\.claude\settings.json 的 env 块用 127.0.0.1 加代理客户端的端口
WSL,NAT 模式(默认)在 WSL 终端里 export,或写进该发行版里 ~/.claude/settings.json 的 env 块127.0.0.1 是 WSL 自己;用 Windows 主机 IP,并让客户端接受来自它的连接
WSL,镜像模式同上127.0.0.1 可访问 Windows 上的服务(Windows 11 22H2 及以上)
把 Windows 的值带进 WSL用 WSLENV,或设 autoProxy=true 复制 Windows 的 HTTP 代理信息代理主机在外网时不需要

来自 Claude Code 的网络和设置页面,以及 Microsoft 的 WSL 网络页面,2026 年 11 月 15 日阅读。新版本的行为可能变化。

按这个顺序排查

  1. 第 1 步:先不用 Claude Code,单独测代理

    在你启动 claude 的同一个终端里,用 curl -x 加代理 URL 请求 https://ipinfo.io/json。这一步失败,说明地址、端口、协议或账号密码有问题,Claude Code 也一定连不上。

  2. 第 2 步:用 HTTP 写法

    写成 http://USERNAME:PASSWORD@HOST:PORT。Claude Code 不支持 SOCKS。密码里有特殊字符时,要做百分号编码。

  3. 第 3 步:在 claude 运行的地方设变量

    按下面的命令,WSL 用 bash,Windows 用 PowerShell。再加上 NO_PROXY,写上你的工具会访问的本地地址,比如 localhost 和 127.0.0.1。

  4. 第 4 步:写成长期有效

    把同样的值写进那个系统里 settings.json 的 env 块。如果启动环境里已经设置了同名变量,settings 里的值会被忽略,所以别在两处设不同的值。

  5. 第 5 步:确认 Claude Code 实际用的是什么

    启动 claude,运行 /status:Proxy 一行显示正在使用的代理 URL。想看更多细节,用 claude --debug 启动再读日志。

WSL:设置变量并检查代理

# Inside the WSL terminal, before you start claude
export HTTPS_PROXY="http://USERNAME:PASSWORD@HOST:PORT"
export HTTP_PROXY="$HTTPS_PROXY"
export NO_PROXY="localhost,127.0.0.1"

# What does the proxy show? (a wrong login or port fails here, not in Claude Code)
curl -sS -x "$HTTPS_PROXY" https://ipinfo.io/json

claude

仅为示例。把 USERNAME、PASSWORD、HOST、PORT 换成你自己的。

Windows PowerShell

# Windows PowerShell, native Claude Code on Windows
$env:HTTPS_PROXY = "http://USERNAME:PASSWORD@HOST:PORT"
$env:HTTP_PROXY  = $env:HTTPS_PROXY
$env:NO_PROXY    = "localhost,127.0.0.1"
claude

仅为示例。只对当前 PowerShell 窗口有效。

两个系统通用的 settings.json

{
  "env": {
    "HTTPS_PROXY": "http://USERNAME:PASSWORD@HOST:PORT",
    "HTTP_PROXY": "http://USERNAME:PASSWORD@HOST:PORT",
    "NO_PROXY": "localhost,127.0.0.1"
  }
}

仅为示例。文件是 ~/.claude/settings.json;在 Windows 上是 %USERPROFILE%\.claude\settings.json。

镜像模式与 Windows 代理信息

# C:\Users\<you>\.wslconfig   (Windows 11 22H2 or later)
[wsl2]
networkingMode=mirrored
autoProxy=true

仅为示例,来自 Microsoft 的 WSL 页面。修改后重启 WSL。

用 WSLENV 从 Windows 传变量

# PowerShell: pass variables from Windows into a WSL process
$env:HTTPS_PROXY = "http://USERNAME:PASSWORD@HOST:PORT"
$env:NO_PROXY    = "localhost,127.0.0.1"
$env:WSLENV      = "HTTPS_PROXY:NO_PROXY"
wsl claude

# WSL in the default NAT mode: the Windows host as seen from WSL
ip route show | grep -i default | awk '{ print $3}'

示意代码。最后一行是 Microsoft 给出的、在 WSL 里查 Windows 主机 IP 的命令。

症状与处理

Claude Code 能启动,但请求超时

检查 代理变量对这个进程不可见,或者地址只在 Windows 上有效。

处理 运行 /status 看 Proxy 一行。如果是空的,就在 claude 运行的地方设变量;如果有值,就在同一个终端里用 curl 测同一个 URL。

停止条件 curl 也失败,就先修代理:问题不在 Claude Code。

启动时报错并点出某个变量

检查 代理 URL 解析不了,比如开头没有 http://。

处理 写完整的 URL:协议、账号、密码、主机、端口。

停止条件 别试 socks5:// 的写法:Claude Code 不支持 SOCKS。

PowerShell 里正常,WSL 里不行

检查 变量根本没传进 WSL。

处理 在 WSL 终端里设,或写进该发行版里的 settings.json,或用 WSLENV 传。

停止条件 检查有没有在两个地方设了同名但值不同的变量。

设了代理后本地工具坏了

检查 访问本地服务的请求也被送去了代理。

处理 把本地主机加进 NO_PROXY,例如 localhost,127.0.0.1。

停止条件 * 表示所有请求都不走代理,只有你确实想这样才用。

在 Claude Code 里用 Proxy302

Claude Code 需要的是 HTTP 代理 URL,Proxy302 的 HTTP 代理可以提供:主机 proxy.proxy302.com,端口 2222,账号密码在「我的资产」里。静态 ISP IP 在整个租期内固定不变、不轮换,一个账号就一直用同一个地址。代理不会改变 Anthropic 的条款:请只在 Claude 支持的地区使用,因为政策限制人员在不受支持的地区实际所在时使用。如果出现验证,请如实完成;页面打不开,先检查网络和 IP 本身,再带订单号提交工单。

静态 ISP IP 一天 US$0.50,30 天 US$7.99,所有国家价格相同,协议在购买时按每个 IP 选择。自动续费是可选的,可以在「我的资产」里关闭。没有免费试用,最小购买单位是一个 IP 一天。

常见问题

Claude Code 支持 SOCKS5 代理吗?

不支持。Claude Code 的网络文档写明它不支持 SOCKS 代理,请使用 HTTP 代理 URL。

WSL 里的 Claude Code 从哪读 settings.json?

从 claude 所在发行版 Linux 主目录里的 ~/.claude/settings.json 读。Windows 版用 %USERPROFILE%\.claude\settings.json。

一定要设 NO_PROXY 吗?

只有不该走代理的地址才需要,比如本地服务。它接受空格或逗号分隔的列表,* 表示所有请求。

为什么代理用 curl 正常,Claude Code 里不行?

通常是变量设在了和运行 claude 的不同的 shell 或系统里,或者启动环境里已有同名变量,导致 settings 里的值被忽略。

一定要用镜像模式吗?

不用。它让 WSL 里的 127.0.0.1 能访问 Windows,需要 Windows 11 22H2 或更高版本。不用它,就用 Windows 主机 IP。

参考资料

6
  1. Proxy302 产品信息与价格表

    产品观察 · 确认日期:

    站点的产品信息文件(数值于 2026 年 10 月 18-19 日对照控制台、后端和价格表核对):以美元计价(1 PTC = 1 美元)、租期、协议和端口、没有免费试用。

  2. Claude Code 文档:企业网络配置

    官方文档 · 确认日期:

    2026 年 11 月 15 日阅读:Claude Code 读取 HTTPS_PROXY、HTTP_PROXY 和 NO_PROXY(空格或逗号分隔,* 表示全部)及其小写形式;不支持 SOCKS 代理;账号密码写在代理 URL 里;在 shell 里 export 的变量只在启动时读取一次;同样的变量也可以写进 settings.json;后台代理由同一个守护进程托管,所以变量要写进 ~/.claude/settings.json 的 env;/status 有 Proxy 一行;无法解析的代理 URL(比如缺少 http://)会让启动报错;启动环境里已设置的变量会让 settings 里的同名值被忽略。

  3. Claude Code 文档:设置文件与优先级

    官方文档 · 确认日期:

    2026 年 11 月 15 日阅读:用户级设置文件是 ~/.claude/settings.json;在 Windows 上 ~/.claude 指 %USERPROFILE%\.claude;/status 会列出加载了哪些设置文件;settings 里的 env 块是普通键。

  4. Microsoft Learn:WSL 网络应用访问

    官方文档 · 确认日期:

    2026 年 11 月 15 日阅读:WSL 默认是 NAT 网络;从 Linux 访问 Windows 要用主机 IP,可用 ip route show | grep -i default | awk '{ print $3}' 查到;设 networkingMode=mirrored(Windows 11 22H2 及以上)后,Linux 可用 127.0.0.1 访问 Windows 上的服务;autoProxy=true 让 WSL 使用 Windows 的 HTTP 代理信息。

  5. Microsoft 开发博客:在 WSL 与 Windows 之间共享环境变量

    官方文档 · 确认日期:

    2026 年 11 月 15 日阅读:WSLENV 是用冒号分隔的变量名列表,列出的变量会在 Windows 和 WSL 进程之间传递;/u(仅从 Windows 启动 WSL 时)、/w 等标记改变方向。

  6. Anthropic:支持的地区

    官方文档 · 确认日期:

    2026 年 11 月 15 日阅读:政策限制人员在不受支持的地区实际所在时使用。

准备好试试了吗?

注册账号、充值一次,就能选动态住宅、静态 ISP 或数据中心 IP,几分钟配进你的浏览器。