WEB/システム/IT技術ブログ

WSL2でドメイン名が解決できないためアップグレードできない

ある日突然、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を再起動したので、そのタイミングでファイルが書き換えられたのかな?

B!

Comment

コメントはありません

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Monthly Archives