WSL2联网问题

使用wsl做开发有一段时间了,最近突然遇到在wsl中无法联网,查找原因发现是因为无法解析域名。

查看文件/etc/resolv.conf,里面解释文件是wsl启动时生成的,将文件里的namespace更改为8.8.8.8后,可以正常访问网络,但是重启之后,文件/etc/resolv.conf恢复成原来的了。

经过一番查找,按如下方法修改后,文件/etc/resolv.conf不在会改变。

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

参考

  1. WSL 2 keeps overwriting resolv.conf · Issue #5420 · microsoft/WSL (github.com)
  2. Custom resolv.conf being replaced by generated file, even with comment removed. · Issue #1908 · microsoft/WSL (github.com)
  3. WSL 中的高级设置配置 | Microsoft Docs