【tips】Windows11を22H2にアップデートしたらWSLのネットワークが通らなくなった時の対応

1 Windows11を22H2にアップデートしたところ

WSL2でUbuntu20.04を使っています。21H2の状態ではネットワークも問題なく使えていた。

22H2が降ってきたのでアップデートしたところネットワークが通らなくなった。

2 問題はnameserverの設定

いろいろとググってみたところ/etc/resolv.confのnameserverが正しくないようだ。

$sudo vi /etc/resolv.conf⏎

とやってエディタを開いてnameserverの行を以下に修正した。

nameserver 8.8.8.8

※これはDNSサーバを8.8.8.8に設定することを意味する。8.8.8.8はGoogleが立てている公開DNSのIPアドレスである。もし自宅や会社のDNSを使うならそのアドレスを記載すれば良い。例えば192.168.1.1などである。

修正を保存する。

確認する。

$ping google.com⏎

pingが通っていればここを修正すれば良いことが確認できた。

3 修正内容を次回以降も適用したい

3.1 課題点

1.WSL起動時にresolv.confが再生成されてしまう

2.WSLを再生成しないようにすると/etc/resolv.confが消えてしまう

3.2 resolv.confが再生成されないようにする

/etc/resolv.confは、/mnt/wsl/resolv.confのシンボリックリンク。

/mnt/wsl/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 8.8.8.8

書いてあるとおり/etc/wsl.confに

[network]
generateResolvConf = false

を書き込む。

調べて見たら/etc/wsl.confはなかったので新規に作成した。(追加の場合も同様)

$sudo vi /etc/wsl.conf⏎

新規なら上記2行を記載。追加の場合は、上記2行と同様の記載がないか確認しなければ追加する。

編集終了したら上書き保存。(:wq)

これで/etc/resolv.conf(なのか/mnt/wsl/resolv.conf)が再生成されなくなる。

3.3 しかし/etc/resolv.confが消えてしまう

先の手順を実行してWSLを再起動すると/etc/resolv.confが消えてしまう。

消えてしまったので作ることにする。

まず、/etc/resolv.confがあるかどうか確認する。

$ls -l /etc/resolv.conf

/etc/resolv.confがある場合は削除する。

$sudo rm /etc/resolv.conf

なくなっていれば次を実行する。

$sudo cp /mnt/wsl/resolv.conf /etc/resolv.conf⏎

元々はシンボリックリンクだったがコピーする。(シンボリックリンクのままだと属性変更ができないので)

最初に行った確認事項の「nameserver 8.8.8.8」になっているかを確認。

$cat /etc/resolv.conf⏎

「nameserver 8.8.8.8」になっていなければ修正する。(最初の項目を参照)

修正が確認できたら、/etc/resolv.confが消されちゃわないように属性を変える。

+iは、immutableということで状態を変えることができない属性である。

$ sudo chattr +i /etc/resolv.conf⏎

先にも書いたが、シンボリックリンクのままだとこれができない。(私はここではまった)

これで設定は完了。

4 WSLを再起動して確認する

「コマンドプロンプト」で以下のコマンドを実行しWSLを再起動する。

>wsl --shutdown⏎

再度、Ubuntu20.04のターミナルを開いて確認する。

$ping google.com⏎

これでpingが通っていれば次回以降も/etc/resolv.confの修正が反映された状態でwslが使える。

今回は以上です。

5 参考情報

タイトルとURLをコピーしました