给 Codex 配置 DeepSeek provider 后,一直报 `error sending request for url`,切回官方 provider 又能正常访问
相同的配置,在家里的电脑上可以正常使用,但公司电脑不行
后来让 Codex 调用本地代理,再由本地代理访问 `api.deepseek.com` 又是正常的。最后通过下面的命令:
strace -f -e trace=network codex --model deepseek-v4-flash --config 'model_provider="deepseek"' doctor
定位到问题出在 Codex 解析 `api.deepseek.com` 的 IPv6 地址时发生了错误
结论:
* 公共 DNS(比如运营商 DNS、`1.1.1.1` 这类)在域名没有 IPv6 记录时,会返回 `NOERROR`;公司大楼里的自建 DNS 服务器在解析不到 IPv6 记录时,却会返回 `SERVFAIL`
* Codex 在解析域名时会同时查询 IPv4 和 IPv6。即使实际不使用 IPv6,IPv6 查询也不能失败
* Codex 官方 provider 使用的 `chatgpt.com` 同时可以解析出 IPv4 和 IPv6,因此使用官方 provider 时不会触发这个问题
* 我系统使用的是 `systemd-resolved`。把配置改成 `DNS=<自建DNS> 1.1.1.1`,问题解决
#走出科学