摘要:Windows 侧设 HTTPS_PROXY 即可;WSL 里 127.0.0.1 指向它自己而非宿主机,必须换成宿主机 IP 并在客户端允许局域网连接。不想折腾就开 TUN,一次生效。

一分钟速查

  • Windows:PowerShell 设 HTTPS_PROXY 指向本地端口。
  • WSL:指向宿主机 IP,开允许局域网连接。
  • 最省事:直接开 TUN 模式。
  • 验证:在跑 Codex 的终端里用 curl 测。

Windows 原生:PowerShell 设置

在客户端设置里查本地混合端口,通常是 7897,以实际显示为准。在 PowerShell 执行:

$env:HTTPS_PROXY="http://127.0.0.1:7897"
$env:HTTP_PROXY="http://127.0.0.1:7897"
curl.exe -I https://api.openai.com

这些变量只在当前窗口有效。要长期生效,可写入 PowerShell 配置文件。

WSL:指向宿主机 IP

允许局域网连接

在客户端开启「允许局域网连接」,让代理端口接受 WSL 虚拟网卡的连接。

防火墙放行

Windows 防火墙弹提示时,允许客户端在专用网络通信。

获取宿主机 IP

在 WSL 里获取宿主机 IP 并设置代理变量。

镜像网络模式

较新版本的 WSL 支持镜像网络模式,启用后 WSL 与宿主机共享网络,通常可直接用 127.0.0.1。

最省事的方案:TUN 模式

TUN 模式在系统层接管流量,Windows 原生程序与 WSL 的流量都会被客户端处理,不用逐个设环境变量,也避免了 Codex 子进程漏走代理的问题。开启后若 WSL 能 ping 通 IP 却无法解析域名,通常是 DNS 没被正确接管。

如何确认代理真的生效

curl 验证可达

在跑 Codex 的那个终端里执行 curl 访问 api.openai.com,能返回响应头说明可达。

看连接列表

看客户端连接列表,确认出现来自 WSL 或 PowerShell 的 OpenAI 连接。

确认节点地区

确认连接走的是美国、日本或新加坡节点,而不是香港节点组。

关于 WSL 代理的 3 个误区

  • 「WSL 里 127.0.0.1 就是宿主机」——WSL 有独立虚拟网络,127.0.0.1 指 WSL 自己,要改宿主机 IP;
  • 「设一次环境变量永久有效」——export 只对当前终端会话生效,长期要写配置文件或开 TUN;
  • 「能 ping 通就说明代理好了」——ping 通是网络层通,还要确认域名能解析、连接走对节点。