一、问题背景

最近在使用 WSL + VSCode + Codex(CLI) 时,出现了以下问题:

curl https://github.com 卡死
Could not resolve host

Codex 启动很慢,甚至报错:
MCP startup incomplete (failed: codex_apps)
resolv.conf 异常或丢失
网络完全不可用

二、问题本质(核心结论)

❌ 不是 Codex 的问题

❌ 不是代理配置问题

✅ 是 WSL DNS 配置被破坏,导致整个网络不可用

🔍 三、关键异常现象

1️⃣ DNS 配置异常

cat /etc/resolv.conf
输出:
nameserver 1.1.1.1
nameserver 8.8.8.8

👉 表面正常,但实际上在当前环境中无法解析域名
2️⃣ DNS 文件甚至消失
cat /etc/resolv.conf
报错:
No such file or directory
👉 说明 WSL 没有自动生成 DNS 配置
3️⃣ 网络彻底不可用

curl -I https://github.com

报错:
Could not resolve host: github.com

🧠 四、根因分析(非常关键)

这次问题的本质是 多配置冲突:
❌ 错误操作组合:
使用了 .wslconfig 中的:
networkingMode=mirrored
同时手动修改了:
/etc/resolv.conf
并关闭了自动 DNS:
dnsTunneling=false
👉 最终结果:
WSL 既没有自动 DNS,又没有可用手动 DNS

🚀 五、最终解决方案(一步一步)

最重要的部分 按照下面的操作 应该可以恢复网络配置
✅ Step 1:恢复 .wslconfig
在 Windows 中打开:
notepad %USERPROFILE%.wslconfig
写入:

[wsl2]
networkingMode=NAT
dnsTunneling=true
autoProxy=false

👉 说明:
networkingMode=NAT:回到稳定模式
dnsTunneling=true:让 WSL 走 Windows DNS
autoProxy=false:避免干扰
✅ Step 2:恢复 WSL DNS 自动生成
在 WSL 中执行:

sudo nano /etc/wsl.conf

写入:

[network]
generateResolvConf = true

✅ Step 3:删除错误 DNS 配置

sudo rm /etc/resolv.conf

✅ Step 4:重启 WSL(关键)

在 Windows 执行:

wsl --shutdown

然后重新进入 WSL

✅ Step 5:验证网络
检查 DNS

cat /etc/resolv.conf
nameserver 172.xx.xx.1

检查路由

ip route

正常应为:

default via 172.xx.xx.1 dev eth0

测试网络

curl -I https://github.com
HTTP/2 200

希望大家可以解决问题

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐