WSL2でKali Linuxを使っていたら、インターネットに接続できない事象に出くわした。いろいろ調べてみると、ネットワークのドメインを解決できていない模様。
今回はそんな課題にぶち当たった際の原因を特定し、解決するための方法を紹介します。
問題の症状
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
無視:1 http://http.kali.org/kali kali-rolling InRelease
無視:2 https://brave-browser-apt-release.s3.brave.com stable InRelease
無視:2 https://brave-browser-apt-release.s3.brave.com stable InRelease
無視:1 http://http.kali.org/kali kali-rolling InRelease
無視:1 http://http.kali.org/kali kali-rolling InRelease
無視:2 https://brave-browser-apt-release.s3.brave.com stable InRelease
エラー:1 http://http.kali.org/kali kali-rolling InRelease
'http.kali.org' が一時的に解決できません
エラー:2 https://brave-browser-apt-release.s3.brave.com stable InRelease
'brave-browser-apt-release.s3.brave.com' が一時的に解決できません
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
アップグレードできるパッケージが 14 個あります。表示するには 'apt list --upgradable' を実行してください。
W: http://http.kali.org/kali/dists/kali-rolling/InRelease の取得に失敗しました 'http.kali.org' が一時的に解決できません
W: https://brave-browser-apt-release.s3.brave.com/dists/stable/InRelease の取得に失敗しました 'brave-browser-apt-release.s3.brave.com' が一時的に解決できません
W: いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。
対処
wsl2ではDNSサーバの設定であるresolv.confが自動的に生成される。なのでこの設定を変更する。
- powershellから
wsl
コマンドでログインする。 制御をするためのファイル(/etc/wsl.conf)を作る。
sudo vi /etc/wsl.conf
中身を次のようにする。
[network]
generateResolvConf = false
別のpowershellを立ち上げてwslをシャットダウンさせる。
wsl --shutdown
WSL2を起動して/etc/resolv.conf
を書き換える。
> wsl
> sudo vi /etc/resolv.conf
中身を書き換える。
nameserver 8.8.8.8
これでDNSサーバの設定ができドメイン名が解決できるようになる。
出典:WSL2でネットワークのドメインを解決できない場合の対処