问题
在 WSL Ubuntu 中执行:
sudo apt update一直卡在0% [Connecting to security.ubuntu.com],同时ping -c 4 www.baidu.com无法返回结果,但是ping -c 4 8.8.8.8可以正常通信
原因
WSL 默认 DNS 不可用
cat /etc/resolv.conf得到nameserver 10.255.255.254,这是 WSL 自动生成的 DNS 地址,但是当前网络环境下,该 DNS 无法正常解析域名
| 测试 | 结果 |
|---|---|
| ping 8.8.8.8 | 正常 |
| ping www.baidu.com | 失败 |
| apt update | 卡在 Connecting |
解决方案
配置 systemd-resolved DNS
- 编辑
sudo nano /etc/systemd/resolved.conf - 添加:
[Resolve] DNS=8.8.8.8 1.1.1.1 FallbackDNS=8.8.4.4 1.0.0.1- 重启 DNS 服务
sudo systemctl restart systemd-resolved
- 检查
resolvectl status得到确认:DNS Servers: 8.8.8.8 1.1.1.1
关闭 systemd-resolved,手动管理 DNS
修改 WSL 配置
- 编辑
sudo nano /etc/wsl.conf
[boot] systemd=true [user] default=<你的设备名> [network] generateResolvConf=false
generateResolvConf=false防止 WSL 默认自动生成/etc/resolv.conf
[user]只能存在一次default只能有一个:解决 WSL 启动时Duplicated config key 'user.default'
删除自动生成 DNS
- 停止 WSL:
wsl --shutdown- 进入 Ubuntu:
- 删除
sudo rm /etc/resolv.conf - 创建 `sudo nano /etc/resolv.conf~
- 写入
nameserver 8.8.8.8 nameserver 1.1.1.1验证
- 查看
cat /etc/resolv.conf
- 得到:
nameserver 8.8.8.8 nameserver 1.1.1.1- 测试
ping -c 4 www.baidu.com成功 sudo apt update恢复正常
总结
本次问题根因:
WSL2 网络正常,但是 DNS 解析链路异常。开启 systemd 后 systemd-resolved 接管 DNS,但没有正确配置上游 DNS,导致 apt、curl、ping 域名全部失败。
最终解决:
- 修正
/etc/wsl.conf - 禁止 WSL 自动生成 resolv.conf
- 手动配置 DNS