sm1314
V2EX  ›  Codex

codex 使用 Netch 按进程代理问题

  •  
  •   sm1314 · 9h 31m ago · 169 views

    背景:

    windows 设备,不喜欢 TUN 模式,所以一直在用 netch 按进程+子进程代理,并且勾选了 DNS 劫持。 之前一直正常,6 月 24 日更新版本后无法使用了。作为对比,同一套配置,antigravity 目前依然正常。

    问题排查:

    网络代理软件报错日志可以看到,大量 twitter/facebook/dropbox 等乱七八糟的常见 dns 污染 ip 连接失败的报错,怀疑新版 codex 对网络做了改动,导致 dns 劫持失败

    让 AI 分析了 6 月 24 日 codex 更新的内容,说是引入了 DoH:

    引入内置 DoH (DNS over HTTPS) / 独立解析回退机制 新版 Codex 的 Rust 底层网络客户端(基于 reqwest / hyper 栈)为了应对 API 劫持和连通性问题,强化了自定义的 DNS 解析逻辑。如果系统默认解析超时或被阻断,它会绕过操作系统,直接向海外权威 DNS 发起 DoH 请求。 为什么 Netch 失效:Netch 的进程模式主要通过 Hook 系统的 getaddrinfo 等标准 API 来截获域名。当 Codex 在应用层自己构造 HTTPS 报文去查 DNS 时,Netch 会将其当作普通的加密数据直接放行。结果导致 Codex 拿到 OpenAI 的真实海外 IP 后尝试直连,随即被防火墙精准拦截并发送 TCP RST 复位包,客户端就会抛出经典的 远程主机强迫关闭了一个现有的连接。 (os error 10054)。

    想问一下,有其他非 TUN 方案能解决吗?

    2 replies
    ntdll
        1
    ntdll  
       8h 55m ago
    随便用你熟悉的软件,用梯子开出来一个 http 代理

    然后写个批处理

    set http_proxy=http://<your-ip>:<port>
    set https_proxy=http://<your-ip>:<port>
    codex

    之后运行这个批处理就行
    sm1314
        2
    sm1314  
    OP
       8h 38m ago
    @ntdll 感谢!解决了,和你的思路应该是一样的。新建一个 C:\Users\xxx\.codex\.env 文件,配置写进去,HTTP_PROXY="http://127.0.0.1:1081"
    HTTPS_PROXY="http://127.0.0.1:1081"
    NO_PROXY="localhost,127.0.0.1,::1"
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1033 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 18:25 · PVG 02:25 · LAX 11:25 · JFK 14:25
    ♥ Do have faith in what you're doing.