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が使える。
今回は以上です。