Windows10のWSL(Linux 用 Windowsサブシステム)で追加されたUbuntuからホストであるWindows10からPINGを通す方法を備忘録的に投稿します。
ファイヤーウォールで制御されている
結論から先に書くと、WSL2でインストールしたUbuntuでは既定で通信が確保されていて、UbuntuからネームサーバーとしてホストであるWindows 10を利用して外部への通信ができるようになっています。
例えば、次のコマンドを入力すると
sudo apt update
外部のサーバーを参照して、必要なファイルがダウンロードができれば、外部との通信が確保されています。
また、次のように
ping www.google.com
ping www.yahoo.co.jp
通信を確認するコマンドを入力しても正常に通信ができていることがわかります。
しかし、ホストであるWindows 10に同様にPINGコマンドを入力しても
パケットが到達することはありません。これは、WSLで追加されるネットワークが[パブリック ネットワーク]として識別されているため、Windowsのファイヤーウォール機能でICMP通信が遮断されているためです。
テスト的に、[Windows Defender ファイヤーウォール]画面で[ゲストまたはパブリック ネットワーク]のファイヤーウォールを無効化してみると
Windows10側のIPアドレスにPINGコマンドでパケット通信ができるようになります。
WSLのホストにPINGを許可する方法
ICMP通信が制御されているだけなので、他の通信は利用できますがPINGなどのコマンドが利用したい場合には、次の手順で許可を行います。
1.[Windows Defender ファイヤーウォール]画面の[詳細設定]をクリックします。
2. 表示された[セキュリティが強化された Windows Defender ファイヤーウォール]画面で[受信の規則]をマウスの右ボタンでクリックして表示されたポップアップメニューから[新しい規則]メニューを選択します。
3. 表示された[規則の種類]で[カスタム]を選択して[次へ]ボタンをクリックします。
4. [プログラム]画面で[すべてのプログラム]を選択して[次へ]ボタンをクリックします。
5. [プロトコルおよびポート]画面で[プロトコルの種類]の一覧から[ICMPv4]を選択して[インターネット制御メッセージ プロトコル(ICMP)の設定]部分の[カスタマイズ]ボタンをクリックします。
6. 表示された[ICMP 設定のカスタマイズ]画面の[特定の種類の ICMP]を選択して[エコー要求]にチェックを付けて[OK]ボタンをクリックします。
7.[プロトコルおよびポート]画面の[次へ]ボタンをクリックします。
8.[スコープ]画面で[次へ]ボタンをクリックします。
9.[操作]画面で[接続を許可する]を選択して[次へ]ボタンをクリックします。
10.[プロファイル]画面で[次へ]ボタンをクリックします。
11.[名前]画面で設定する規則の名前を入力して[完了]ボタンをクリックします。
12.[セキュリティが強化された Windows Defender ファイヤーウォール]画面に新しい規則が追加されます。
13. ファイヤーウォール機能が有効な状態でも、Windows10側のIPアドレスにPINGコマンドでパケット通信ができるようになります
まとめ
WSLにインストールしたUbuntuに割り振られたIPアドレスからホストであるWindows10のIPアドレスへのICMP通信は、WSLで追加されたネットワークアダプターが[ゲストまたはパブリックネットワーク]に設定されているため、Windows10のファイヤーウォール機能で制限されているため、PINGなどのコマンドで通信をすることができません。
ICMPでの通信が制御されているだけで、他のポートなどでは通信をすることができるます。PINGなどのコマンドを利用したい場合には、ファイヤーウォール設定に新しいルールを追加する必要があります。
Windows10のWSLでインストールしたUbuntuからホストにPINGが通らない人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。