WSL的网络问题(1)
在 Windows 下使用 WSL2(Windows Subsystem for Linux)时,有时会遇到以下问题:
apt update
/ping google.com
/gif clone
等命令提示 “Temporary failure in name resolution” 或 “Could not resolve host”
这种问题的本质是 WSL 内部的 /etc/resolv.conf
配置了一个无法正常访问的 DNS 服务器。
1. 让 DNS 设置永久生效
WSL 默认会在重启时覆盖 /etc/resolv.conf
,我们需要禁用它的自动生成。
-
编辑 WSL 配置:
sudo vim /etc/wsl.conf
写入:
[network] generateResolvConf = false
-
重启 WSL:
wsl --shutdown wsl
2.解决办法
1:使用公共的DNS解析服务器
-
在 WSL 中:
sudo vim /etc/resolv.conf
改成:
nameserver 8.8.8.8 nameserver 114.114.114.114
2:使用当前 Wi-Fi 的 IPv4 地址
-
在 PowerShell 中查看 Wi-Fi IPv4:
ipconfig
找到
无线局域网适配器 WLAN
→IPv4 地址
(例如192.168.1.5
)。 -
在 WSL 中:
sudo vim /etc/resolv.conf
改成:
nameserver 192.168.1.5 nameserver 114.114.114.114
- 如果遇到无法修改文件,可以试试这个
sudo chattr -i /etc/resolv.conf
- 如果遇到无法修改文件,可以试试这个
-
保存并退出,然后测试:
ping baidu.com
3:使用 WSL 的虚拟网关的IPv4
-
在 Windows 中查看:
ipconfig
找到
vEthernet (Default Switch)
→IPv4 地址
(例如172.27.240.1
)。 -
修改 WSL DNS:
sudo vim /etc/resolv.conf nameserver 172.27.240.1 nameserver 114.114.114.114
-
保存并测试。