Windowsマシンから他の端末へのpingは通るのに、逆方向(端末からWindowsマシン)にはpingできない、という理不尽な事象が発生したらまずはここを確認。
Windows端末はデフォルトでICMP Echo Requestをブロックする
そう。多くの場合、原因はこれ。WindowsはデフォルトでICMP Echo Request(エコー要求)を受け付けない。ただし、Echo Replyは受信する。なのでWindows端末自身からのpingは成功するが、他の端末からのpingは失敗する。このようなケースに遭遇したらまずはファイアーウォールの設定を確認してみよう。
”セキュリティが強化されたWindows Defender ファイアウォール”を確認
まずなんとかして”セキュリティが強化されたWindows Defender ファイアウォール”の画面を表示してほしい。一番簡単なのは検索窓に"wf"と打つことだと思う。Win11なら以下のように表示されると思う。
”セキュリティが強化されたWindows Defender ファイアウォール”を起動したら、まずは中央のペインに注目してほしい。ドメイン、プライベート、パブリックのプロファイルについての表記があって、どれかが“アクティブです”となっていると思う。例えば以下は”パブリックプロファイルがアクティブです”。
また、ここで”規則に一致しない受信接続はブロックされます”と書いてあることにも留意してほしい。つまり、ルールが有効になっていない通信はブロックされるということ。
どのルールが有効になっていないといけないのか?
まず“受信の規則”を確認したいので、左側のペインにて“受信の規則”をクリック。その後中央のペインを下にスクロールさせ、”コアネットワーク診断 - ICMPエコー要求”を探す。IPv4用とIPv6用で各2行ずつでてくると思うが、自分がいまアクティブになっているプロファイルのものを選ぶ。以下の例はパブリックプロファイルを使用時に適用されるIPv4用のルールを選択している。
ここで“有効”のカラムが”いいえ”になっていることに注目してほしい。すなわちICMPv4 エコー要求は“規則に一致しない”のでブロックされているのだ。なので以下のようにこれを右クリックして”規則の有効化”を選べば良い。これで同一セグメント上の端末(すなわちローカル)からのpingに応答するようになる。
ハァ? リモートからのpingには答えないの?
答えない。リモート、つまりルータの向こう側にいる端末からのICMPエコー要求は相変わらずブロックされる。ブロックしないようにするためにはルールのプロパティを表示して、“スコープ”のタブの中の、“リモートIPアドレス”の設定を変える必要がある。以下の例はどこから飛んできたICMPエコー要求でも受信できるようにする設定だ。
”ファイルとプリンターの共有”グループにもエコー要求のルールがあるんだけど?
そう。ある。このルールを有効化しても同じようにpingに応答するようになる。具体的には以下のルール。
実はここのルールはWindowsの”ファイルとプリンターの共有”機能を有効にすると自動的に有効化される。つまり以下の設定を“オン”にするとpingに応答するようになる。なのでファイル共有をさせてる場合はこの問題は起こらなかったはずだ。(ただしデフォルトでは同一セグメント上からのpingに限る)
今回の目的からするとこちらのルールをいじるのはでなく、前述した”コアネットワーク診断”グループのルールをいじった方がより適切だ。
まとめ
- WindowsはデフォルトでICMP Echo Requestをブロックする
- ”セキュリティが強化されたWindows Defender ファイアウォール”を使ってルールを有効化する必要がある
- ”ファイルとプリンターの共有”機能とこのルールは連動している
超基本の切り分けツールpingがのっけから失敗することにアタフタしてしまわないように