ICMP

ICMP ガイド: ping、traceroute、およびネットワーク診断

ICMP が TCP および UDP ポートとどのように異なるか、エコー要求をいつ許可するか、悪用を招くことなく診断を有効に保つ方法を理解します。

既定ポート
ICMP
プロトコル
ICMP
主な用途
ネットワーク診断

ICMPとは何ですか?

ICMP (インターネット制御メッセージ プロトコル) は、ネットワーク制御メッセージとエラー メッセージを伝送します。これは ping やtraceroute などのツールで使用されますが、TCP サービスや UDP サービスではなく、HTTP、SSH、DNS のようなポート番号を持ちません。

  • ICMP にはポートではなくタイプとコードがあります

    Ping は ICMP エコー要求メッセージとエコー応答メッセージを使用します。他の ICMP メッセージは、到達不能な宛先、時間超過、断片化の必要性、およびルーティングの問題を報告します。

  • すべての ICMP をブロックすると、トラブルシューティングに支障をきたす可能性があります

    一部の ICMP メッセージは、パス MTU の検出、遅延チェック、監視、およびルーティングまたはファイアウォールの問題の診断に重要です。

ICMP の仕組み

ICMP は IP と並行してネットワーク状態を報告します。ホスト、ルーター、またはファイアウォールは、宛先に到達できない場合、パケットが転送中に期限切れになる場合、断片化が必要な場合、または診断エコー要求に応答が必要な場合に ICMP メッセージを送信できます。

最もよく知られた ICMP ワークフローは ping です。クライアントはエコー要求を送信し、ターゲットはエコー応答で応答します。ラウンドトリップ時間は、到達可能性と遅延についての簡単な情報を提供しますが、443 や 22 などのアプリケーション ポートが開いていることを証明するものではありません。

ICMP ポートと TCP および UDP ポートの比較

ICMP は TCP または UDP ポート番号を使用しません。メッセージタイプとコードを使用します。 ICMP ガイドを通常のオープンポート記事のように扱うべきではないのはこのためです。デーモンが番号付きポートでリッスンしているかどうかではなく、特定の ICMP メッセージを許可するかどうかを決定するのです。

ポート チェッカーは、TCP または UDP サービスの到達可能性をテストします。 Ping は ICMP 到達可能性をテストします。どちらも便利ですが、答えられる質問は異なります。サーバーは、HTTPS が動作している間は ping をブロックでき、すべてのアプリケーション ポートが閉じている間は ping に応答できます。

Ping とtraceroute

Ping は、ターゲットが ICMP エコーに応答するかどうか、およびラウンドトリップにかかる時間をチェックします。これは、迅速な到達可能性チェック、プローブのモニタリング、および遅延ベースラインの確認に役立ちます。

Traceroute は、TTL 値を増加させてパケットを送信し、途中のルーターから ICMP 時間超過メッセージを読み取ることによって、パスをマッピングします。一部のプラットフォームでは、traceroute に UDP または TCP プローブを使用しますが、中間ホップを報告するパス診断の数の中心となるのは依然として ICMP メッセージです。

ICMP を許可する必要がある場合

システム、ロード バランサー、ネットワーク チーム、または運用スタッフの監視に到達可能性と遅延信号が必要な場合は、ICMP を許可します。内部ネットワークの場合、制御された ICMP を許可すると、多くの場合、トラブルシューティングが改善され、死角が減ります。

公共システムの場合、多くのチームは、信頼できる監視ソースからの限られたエコー応答を許可し、断片化が必要な動作や宛先に到達できない動作などの重要なエラー メッセージを許可します。正確なポリシーは、ネットワーク エッジ、DDoS ポスチャ、可観測性のニーズに一致する必要があります。

ICMP ファイアウォール ルールを変更する前に

ICMP をブロックまたは許可する前に、どのメッセージを制御するかを決定してください。エコー要求、エコー応答、時間超過、宛先に到達不能、およびパケットが大きすぎる動作は、運用上のさまざまな影響を及ぼします。

トレードオフを理解していない限り、ブランケット ブロックは避けてください。すべての ICMP をブロックすると、パス MTU の検出ができなくなり、有用なルーティング エラーが隠蔽され、監視の精度が低下し、チームが弱い信号でのデバッグを強いられる可能性があります。

Windows、Linux、クラウド ファイアウォールで ICMP を管理する方法

Windows では、Windows Defender ファイアウォールには、選択したプロファイルと送信元アドレスに対して有効にできる事前定義された ICMP エコー ルールがあります。デフォルトで広範なパブリック ping 応答を有効にするのではなく、可能であればルールの範囲を信頼できるネットワークに設定します。

Linux では、nftables、iptables、firewalld、およびクラウド セキュリティ グループは、タイプに応じて ICMP を許可または制限できます。多くのディストリビューションでは、エコー動作に関するカーネル sysctl 設定も公開されていますが、通常はファイアウォール ポリシーがより明確な制御ポイントです。

クラウド プラットフォームでは、セキュリティ グループが ICMP を TCP や UDP とは別に扱うことがよくあります。インバウンドとアウトバウンドの両方のポリシーを確認し、ロード バランサー、CDN エッジ、プロバイダーの DDoS コントロールでは、インスタンス ファイアウォールとは異なる方法で ICMP を処理する可能性があることに注意してください。

  • 診断: 必要に応じて、ping、traceroute、パス MTU 検出、およびエラー可視化に十分な ICMP を許可します。
  • スコープ: 広範囲の可視性が必要ない場合、パブリック エコー応答を信頼できるモニタリング ソースに制限します。
  • レート制限: レート制限またはエッジ保護を使用して、すべての診断を削除せずに洪水のリスクを軽減します。
  • 検証: ICMP 到達可能性とアプリケーション ポートの両方をテストします。これらは異なる質問に答えるためです。

ICMP のテスト方法

ping を使用して、エコー要求と応答をテストします。一部のルータは意図的に ICMP 応答を抑制したりレート制限したりすることに留意して、traceroute またはtracert を使用してパスを検査し、パケットが停止する場所を特定します。

ping は失敗してもアプリケーションは動作する場合、TCP または UDP は許可されているにもかかわらず、ICMP がブロックされる可能性があります。 ping は機能するがアプリケーションが失敗する場合、ネットワーク層ではターゲットに到達できますが、特定のサービス ポート、ファイアウォール ルール、リスナー、またはアプリケーションが壊れている可能性があります。

代わりにアプリケーション ポートをテストします

一般的な ICMP トラブルシューティングのケース

ping がタイムアウトした場合は、ターゲットがダウンしているか、ルートが見つからないか、ICMP エコーがブロックされているか、中間ファイアウォールがメッセージをドロップしている可能性があります。タイムアウトは、ホストがオフラインであることを自動的に証明するものではありません。

Traceroute がホップで停止する場合、そのホップは TTL 期限切れの応答またはレート制限診断をフィルタリングしている可能性があります。小さなリクエストが機能する一方で大規模な転送が失敗する場合は、パス MTU の検出と、パケットが大きすぎるメッセージがブロックされているかどうかを確認してください。

ICMP のセキュリティ チェックリスト

反射的にすべてをブロックするのではなく、意図的に ICMP を許可します。エコー トラフィックのレートを制限し、必要に応じてパブリック応答をスコープし、安定したネットワークに必要な重要なエラー メッセージを保存します。

異常な ICMP ボリューム、スプーフィングされたソース、およびエッジでのフラッド パターンを監視します。機密性の高いネットワークの場合は、セキュリティ境界として ping の可視性に依存するのではなく、ICMP ポリシーをセグメンテーションおよび信頼できるモニタリングと組み合わせます。

よくある質問

ICMP はどのポートを使用しますか?

ICMP は TCP ポートまたは UDP ポートを使用しません。 ping のエコー要求やエコー応答などのメッセージ タイプとコードを使用します。

ping はポートチェックと同じですか?

いいえ。Ping は ICMP 到達可能性をテストします。ポート チェックでは、TCP サービスまたは UDP サービスが到達可能かどうかをテストします。ホストは、すべてのアプリケーション ポートが閉じているときに ping に応答することも、アプリケーションが動作しているときに ping をブロックすることもできます。

ICMP をブロックする必要がありますか?

影響を理解せずに、デフォルトですべての ICMP をブロックしないでください。制御された ICMP は、モニタリング、traceroute、パス MTU 検出、およびトラブルシューティングに役立ちます。可能な場合は、代わりにスコープまたはレートを制限します。

Web サイトは動作しているのに、ping が失敗するのはなぜですか?

サーバーまたはネットワークは、HTTP または HTTPS を許可しながら ICMP エコーをブロックする可能性があります。実際のアプリケーション ポートをテストして、サービスの到達可能性を確認します。