方法一
WSL子系统中执行:
sudo cp /etc/resolv.conf /etc/resolv.conf.bak
sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
sudo chattr +i /etc/resolv.conf
Windows中执行
wsl --shutdown
netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns
方法二
退回到WSL1版本(WSL1和WSL2的网络模式不同,/etc/resolv.conf文件内容也不同)
wsl --set-version Ubuntu-20.04 1
无解的场景
如果使用的是WSL2版本,且安装了Symantec Endpoint Protection赛门铁克等安全软件,会拦截wsl.exe流量。如果无法关闭这类软件,则只能考虑使用Virutal Box、VMWare等虚拟机了。
参考地址
https://github.com/microsoft/WSL/issues/5382
https://www.zhangbj.com/p/1178.html