wsl2+dockerで突然名前解決できない場合がある。その時に行った対処法をまとめた。(dockerを先週から使い始めまだまだ分からないことが多いです。説明等の拙さご了承ください。)
結論、ping 8.8.8.8はつながったがgoogle.comがつながっていない。あと少しで解決できそう。
対応したことは以下4つ。
1./etc/wsl.conf 追記
2./etc/resolv.conf 記述
3.powershell7 wsl関連サービス再度立ち上げ
4.cmd wsl --shutdown
5. windows11 再起動
generateResolvConfがtrueだとresolv.confが作られる。
自分は他の対応されてるブログを参考にfalseにし、resolv.confファイルを自分で作成した。
cat /etc/wsl.conf
#上2行追記
[network]
generateResolvConf = false
[boot]
systemd=true
以下、2行付け足すことでDNS名前解決できると散見し、実行。
root@HA000144876:~# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
WSLが再起動するたびに内部のIPアドレスが変わることが関係してるのではと考え、
powershell 7 で以下コマンド三つ打った。
LxssManagerはWindows Subsystem for Linux 関連サービス。Linuxでよく使用されるバイナリのフォーマットである ELF を Windows で動作させる機能に関するものらしい。
hns はコンテナネットワークに関するサービス。Host Network Serviceの略。
その2つをrestartする。
Restart-Service LxssManager
Stop-Service -name "hns"
Start-Service -name "hns"
Get-NetAdapter -IncludeHidden | Where-Object `
>> {$_.InterfaceDescription.StartsWith('Hyper-V Virtual Switch Extension Adapter')} `
>> | Enable-NetAdapter -Confirm:$False
結果は以下のようになった。今まで何も表示されなかったが初めて何か出た。
root@HA000144876:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 172.19.149.231 icmp_seq=1 Destination Host Unreachable
From 172.19.149.231 icmp_seq=2 Destination Host Unreachable
次に行ったのはwslの再起動
wsl --shutdown
以下のコマンド打ってから再度立ち上げた。これでも変化がなかったので
いろいろやったが最後にwindows11を再起動した。いろいろなWebサイトではする必要がないとのことだったが結果的にこれでping 8.8.8.8だけ通るようになった。
追記:2024/3/12
vpn4wsl.ps1の起動でvpnとwslのインターフェースを上手く引っ付けてくれた。
そのおかげで全部ネット関係はうまくいった。