症状:ネットに繋がらない
WSL2で開発中、突然外部との通信ができなくなった。
-
ping 8.8.8.8を打つと 100% packet loss(パケットが一つも返ってこない)。 -
ping google.com自体は通る(=名前解決はできている)。
用語解説
- パケットとは: ネット上でやり取りされるデータの「小包」。
- パケットロスとは: 送った小包が相手に届かない、または返ってこない状態。
- DNS(名前解決)とは: 「google.com」という名前を「172.217...」という住所に変換すること。住所はわかるのに荷物が届かないのが今回の謎。
原因:Windowsファイアウォールによる誤遮断
Windowsファイアウォール(PCの門番) が、WSL2からの通信を「正体不明の怪しい通信」と判断し、すべてのパケットをドロップ(ゴミ箱にポイ捨て) していた。
用語解説
- 仮想ネットワークアダプターとは: Windowsの中にソフトで作られた「見えないLANカード」。WSL2はこの仮想カードを使って通信するが、ここが門番にブロックされていた。
解決方法
Windows側のネットワーク認識をリセットするため、以下の順で実施。
1. ファイアウォールの初期化
「Windows Defender ファイアウォール」の設定から 「既定値の復元」 を実行。
※壊れたフィルタリングルール(門番の変なルール)を強制リセットするため。
2. 競合アダプターの無効化
VirtualBox Host-Only Network など、使用していない他の仮想アダプターを無効化。
※似たような「見えないLANカード」が複数あると、パケットが迷子になるため。
3. OSの「再起動」
「シャットダウン」ではなく 「再起動」 を選択。
※Windowsの「高速スタートアップ」を回避し、ネットワークサービスの状態を完全にクリーンにするため。
結論
WSL2の通信トラブルは、Linux側の設定(resolv.confなど)よりも Windows側のセキュリティ設定(ファイアウォール) に原因があることが多い。
色々といじくり回す前に、まずは 「ファイアウォールのリセット」 と 「OS再起動」 を試すのが最短ルート。