WSL2のKali Linuxで名前解決ができない場合の対応


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が自動的に生成される。なのでこの設定を変更する。

  1. powershellかwslマンドでログインする。
  2. 制御をするためのファイル(/etc/wsl.conf)を作る。

    sudo vi /etc/wsl.conf
  3. 中身を次のようにする。

    [network]
    generateResolvConf = false
  4. 別のpowershellを立ち上げてwslをシャットダウンさせる。

    wsl --shutdown
  5. WSL2を起動して/etc/resolv.confを書き換える。

    > wsl
    > sudo vi /etc/resolv.conf
    
  6. 中身を書き換える。

    nameserver 8.8.8.8

これでDNSサーバの設定ができドメイン名が解決できるようになる。

出典:WSL2でネットワークのドメインを解決できない場合の対処