WSL2でネットワークのドメインを解決できない場合の対処
WSL2でネットワークのドメインを解決できない場合の対処
WSL2上のLinux(ex.Ubuntu)で,
ping google.com
やapt update
がうまく行かない場合(Temporary failure)の対処である.
どうやらDNSサーバの設定がよくなく?ドメインの解決ができなくなっているぽい.
参考:
Apt-get update and apt-get upgrade fail · Issue #4435 · microsoft/WSL · GitHub
- WSL2 DNS stops working · Issue #4285 · microsoft/WSL · GitHub
現状(2020/07/16),原因は不明ぽいです.
(/etc/resolv.conf
がどっかのタイミングで勝手に書き換わる?)
環境
- Windows10 ver2004(OSビルド 19041.330)
エラー内容
wsl上のLinuxでping
やapt update
できなくなる.
ping
ができない
例えばgoogle
へのpingが返ってこない.
> ping google.com ping: google.com: Temporary failure in name resolution
apt update
ができない
apt update
するとTemporary failure
が起きる.
> sudo apt update Err:1 http://archive.ubuntu.com/ubuntu bionic InRelease Temporary failure resolving 'archive.ubuntu.com' Err:2 http://security.ubuntu.com/ubuntu bionic-security InRelease Temporary failure resolving 'security.ubuntu.com' Err:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease Temporary failure resolving 'archive.ubuntu.com' Err:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease Temporary failure resolving 'archive.ubuntu.com' Reading package lists... Done W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic/InRelease Temporary failure resolving 'archive.ubuntu.com' W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic-updates/InRelease Temporary failure resolving 'archive.ubuntu.com' W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/bionic-backports/InRelease Temporary failure resolving 'archive.ubuntu.com' W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease Temporary failure resolving 'security.ubuntu.com' W: Some index files failed to download. They have been ignored, or old ones used instead.
対処
wsl2ではDNSサーバの設定であるresolv.conf
が自動的に生成される.
なのでこの設定を変更する.
- powershellから
wsl
コマンドでログインする. -
`/etc/wsl.conf`で制御できるので,このファイルを作る.
sudo vim /etc/wsl.conf
-
中身を次のようにする.`:wq`で保存.
[network] generateResolvConf = false
-
別のpowershellを立ち上げてwslをシャットダウンさせる.
wsl --shutdown
WSL2を再起動して
/etc/resolv.conf
を書き換える.> wsl > sudo vim /etc/resolv.conf
-
次に書き換える.
nameserver 8.8.8.8
これでDNSサーバの設定ができドメイン名が解決できるようになる.