ある日突然、WSL2でドメイン名が解決できないためにアップグレードできない事象に陥りました。
$ sudo apt-get update Ign:1 http://archive.ubuntu.com/ubuntu jammy InRelease Ign:2 http://security.ubuntu.com/ubuntu jammy-security InRelease Ign:3 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy InRelease Ign:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease Ign:2 http://security.ubuntu.com/ubuntu jammy-security InRelease (中略) Err:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease Temporary failure resolving 'archive.ubuntu.com' Reading package lists... Done Building dependency tree... Done Reading state information... Done 34 packages can be upgraded. Run 'apt list --upgradable' to see them. W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy/InRelease Temporary failure resolving 'archive.ubuntu.com' W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease Temporary failure resolving 'archive.ubuntu.com' W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease Temporary failure resolving 'archive.ubuntu.com' W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/jammy-security/InRelease Temporary failure resolving 'security.ubuntu.com' W: Failed to fetch https://ppa.launchpadcontent.net/ondrej/php/ubuntu/dists/jammy/InRelease Temporary failure resolving 'ppa.launchpadcontent.net' W: Some index files failed to download. They have been ignored, or old ones used instead.
環境は以下のとおりです
- Windows 11 Home
- WSL 1.0.3.0
- Ubuntu 22.04.1
原因について
ドメイン名が解決できていないのか、今一度確認してみます。
$ ping google.com ping: google.com: Temporary failure in name resolution
やはりダメ。
少し前までは問題なく接続できていました。原因ははっきりしませんが、考えられるとしたらWSLのアップデートを実行したことぐらいです。
2022/11/22から、Microsoftストアで配布されてるWSLが正式版になったということで、アップデートを実行しました。これが原因かな。。
ASCII.jp: Microsoftストア版WSLが正式版になり、Windows 10でも動作可能に (1/2)
解決策
ネームサーバを確認してみると、プライベートIPが割り振られてる?元々の設定がわからないので、WSLアップデートで書き換えられてるのか不明です。
$ cat /etc/resolv.conf # This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf: # [network] # generateResolvConf = false nameserver 172.25.224.1
とりあえず、「/etc/resolv.conf」ファイルの自動生成を防ぐためには「/etc/wsl.conf」の設定が必要みたいです。私の場合、ファイルがなかったので作成します。
$ sudo touch /etc/wsl.conf
ファイルに以下を記述します。
[network] generateResolvConf = false
さらに、resolv.confに有効なネームサーバを設定します。
# nameserver 172.25.224.1 nameserver 8.8.8.8
これで大丈夫なはずです。
動作確認
動作確認のため、再度pingを実行してみます。
$ ping google.com PING google.com (142.250.196.142) 56(84) bytes of data. 64 bytes from xxx.xxx.xxx.xxx: icmp_seq=1 ttl=115 time=33.6 ms (中略)
ドメイン名を解決できています。では、再度アップデートを実行してみます。
$ sudo apt-get update (中略) Reading package lists... Done $ sudo apt-get upgrade (中略)
無事にアップグレードが実行できました。
この流れを見ると、WSLアップデートの際にWSLを再起動したので、そのタイミングでファイルが書き換えられたのかな?
私も本日(3/25)同じ問題にぶちあたり、ネット検索したところ貴殿のブログに出会いました。おかげさまで問題を解決することができました。ありがとうございました。
環境:
Windows 11 Pro version 22H2 (OSビルド22621.1413)
WSL バージョン: 1.1.3.0
Ubuntu 22.04.2 LTS
こちらこそ!環境共有いただきありがとうございます
解決して良かったです!