Skip to content

Claude Code WSL 代理怎么配?与 Windows 原生的三点差异 ​

Claude Code WSL 代理怎么配?和 Windows 原生有三点差异。一是代理地址不同:Windows 原生用 127.0.0.1 加客户端端口即可,WSL2 默认有独立的虚拟网络,里面的 127.0.0.1 是 WSL 自己,必须指向 Windows 宿主的 IP,或者开启 WSL 的镜像网络模式让两边共享 localhost。二是客户端要勾选「允许局域网连接」,否则宿主 IP 不接受来自 WSL 的连接。三是 Windows 防火墙可能拦截这条连接。三点都处理好,WSL 里的 Claude Code 才能走到节点。

Windows 原生终端的基础配置(PowerShell 里设 $env:HTTPS_PROXY)见Claude Code 网络环境,本文只讲 WSL 的不同之处。

速读要点

  • WSL2 默认要把代理地址指向 Windows 宿主 IP
  • 客户端必须开「允许局域网连接」,否则宿主端口拒绝 WSL
  • 能开镜像网络就开,写法与 Windows 原生完全一致

差异一:代理地址指向哪里,与 Windows 原生的根本区别 ​

环境代理地址写法说明
Windows 原生(PowerShell、CMD)http://127.0.0.1:端口客户端与终端在同一网络栈
WSL1http://127.0.0.1:端口WSL1 共用 Windows 网络栈,与原生一致
WSL2 默认(NAT 模式)http://<Windows 宿主 IP>:端口WSL2 是独立虚拟网络,127.0.0.1 不是 Windows
WSL2 镜像网络模式http://127.0.0.1:端口开启后与 Windows 共享 localhost

WSL2 NAT 模式下宿主 IP 的获取方式:在 WSL 里执行 ip route show default,默认网关地址通常就是宿主;或者读取 /etc/resolv.conf 里的 nameserver。这个地址在每次 Windows 重启后可能变化,建议写成脚本动态获取,而不是写死。

差异二:客户端要允许局域网连接 ​

WSL2 访问宿主 IP 时,对代理客户端来说是一个「局域网内的其他设备」。客户端默认只监听 127.0.0.1,必须开启「允许局域网连接」(不同客户端叫法有别)后才会监听宿主 IP。开启后用 WSL 里的 curl -I --proxy http://<宿主 IP>:端口 https://www.anthropic.com 验证,有状态码返回才算通。

差异三:防火墙与镜像网络 ​

  • 防火墙。 第一次从 WSL 连宿主端口,Windows 防火墙可能弹窗或静默拦截。在防火墙里给代理客户端放行专用网络即可,不要整体关闭防火墙。
  • 镜像网络模式。 在 Windows 的 WSL 配置文件里开启镜像网络后,WSL2 与 Windows 共享网络接口,127.0.0.1 直接指向宿主,环境变量写法与 Windows 原生一致,也不再需要动态获取 IP。它还能让 Windows 侧的 TUN 模式更完整地覆盖 WSL 流量。是否可用取决于你的 Windows 与 WSL 版本,以官方文档为准,开启后重启 WSL。

Claude Code WSL 代理怎么配:推荐做法 ​

  1. 能开镜像网络就开,最省事,WSL 里的配置与 Windows 原生完全一致。
  2. 不能开的,在 WSL 的 shell 配置里用一小段脚本读取宿主 IP 并导出 HTTPS_PROXY、HTTP_PROXY,顺带把 NO_PROXY 设为 localhost 与 127.0.0.1。
  3. 客户端开「允许局域网连接」,防火墙放行。
  4. 每次新开 WSL 终端先 curl ifconfig.me 看出口,再启动 Claude Code。

节点本身的要求与 Windows 原生相同:固定单出口、低丢包,见Claude Code 固定出口节点怎么选。

连不上时的 10 秒自检 ​

现象最可能原因10 秒自检
curl 立刻报 Connection refused代理地址仍是 127.0.0.1,或客户端没开局域网监听echo $HTTPS_PROXY 看地址是否为宿主 IP
curl 长时间无响应后超时防火墙拦截Windows 侧暂时放行客户端的专用网络再试
昨天能用今天不行宿主 IP 重启后变了ip route show default 对比变量里的地址
curl 正常、Claude Code 不行变量不在同一 shell在同一窗口启动,或写进 shell 配置

推荐机场 ​

常见问题 ​

Windows 里 Claude Code 正常,WSL 里连不上? ​

WSL2 的 127.0.0.1 不是 Windows。把代理地址改成宿主 IP 并开「允许局域网连接」,或开启镜像网络。

宿主 IP 每次重启都变怎么办? ​

NAT 模式的正常现象。用脚本从默认路由或 resolv.conf 动态读取,或者开启镜像网络后用 127.0.0.1。

Windows 开了 TUN 模式,WSL 里还要设环境变量吗? ​

NAT 模式下 TUN 对 WSL 流量的覆盖不一定完整,以 WSL 里 curl ifconfig.me 的结果为准;镜像网络模式下覆盖通常更完整。不确定就两边都设。

WSL 里 curl 能走代理,Claude Code 却不行? ​

环境变量只在当前 shell 生效。确认 Claude Code 与 curl 在同一个终端启动,或把导出语句写进 shell 配置文件后重开终端。

下一步 ​

相关阅读 ​

本站内容仅供参考,部分链接含推广说明,详见各优惠页。关于本站