WSL2 无法联网(DNS 失效)+ Codex 卡死问题完整排查与解决
WSL网络故障排查与修复指南 问题症状:WSL网络完全不可用,DNS解析失败,curl报错"Could not resolve host" 根本原因:WSL DNS配置被破坏,多配置冲突导致网络瘫痪 解决方案: 修改.wslconfig文件,设置networkingMode=NAT和dnsTunneling=true 配置wsl.conf启用DNS自动生成 删除错误的resol
一、问题背景
最近在使用 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
希望大家可以解决问题
更多推荐



所有评论(0)