ICMPとは?
ICMP(インターネット制御メッセージプロトコル)は、ネットワークの問題によりIPパケットの通過が妨げられているときに、ネットワークデバイス(ルーターなど)がエラーメッセージを生成するために使用するプロトコルです。.
インターネット制御メッセージプロトコルは、インターネットを機能させる基本的なシステムの1つです。 ICMPについて聞いたことがないかもしれませんが、おそらくその機能の1つであるPingについて聞いたことがあるでしょう。このガイドでは、この重要なプロトコルについて詳しく学びます。.
ICMPの歴史
ICMPは TCP / IPプロトコルスタック. に配置されています インターネット層 また、コアインターネットプロトコルをサポートするエラーメッセージ標準です。 ICMPの元の定義は、 ジョンポステル, インターネットの創設者の一人。最初の標準は、RFC 777で1981年4月に公開されました。これは、その後何度か更新されています。プロトコルの安定した定義はRFC 792に含まれています。RFC792もポステルが作成し、 インターネットエンジニアリングタスクフォース 1981年9月.
ICMPの目的
下位レベルのインターネット層は接続保証に関係することを想定していませんが, ICMPは、物事がうまくいかない場合に通信に関するフィードバックを少し提供します. したがって、UDPを使用している場合でも、 コネクションレス 通信モデルでは、送信が失敗した理由を見つけることはまだ可能です。すべてのネットワーク接続デバイスはICMPメッセージを処理できるため、ルーターとエンドポイントデバイスが含まれます。. ICMPはIPv6で動作できるように適合されています IPv4を提供したのと同じくらい徹底的に.
このプロトコルはインターネット層にあるため, そのメッセージはIPパケットによって運ばれます そのため、スイッチの動作構造よりも高いレベルで存在します。 ICMPはIPパケット内で伝送されますが、データ伝送パケット内には存在しません。 ICMPパケットは、その着信メッセージの送信が失敗したときに、着信データパケットへの応答としてのみ生成されます. ICMPパケットを引き起こすエラー状態は、多くの場合、失敗したパケットのIPヘッダーに含まれるデータの結果です。.
ICMPパケット構造
ルーターがICMPパケットを跳ね返ってエラーを報告すると、報告対象のパケットの元のIPヘッダー内のすべてのフィールドが再作成されます。そのため、元の送信コンピューターのエラー収集プログラムはヘッダーを分析し、送信したIPパケットのどれが失敗したかを正確に判断できます。.
IPヘッダーの後、 3つのフィールドICMPヘッダー. これらには、エラーを分類するコード、エラーコードの説明を改良するサブコードフィールド、およびチェックサムが含まれます。 ICMPフィールドの後、ペイロードの最初の8バイトが来ます。これは実際には トランスポート層ヘッダー (TCPまたはUDP).
ICMPメッセージコード
ICMPブロックの最初のコードフィールドには、非常に役立つ情報が含まれています。コードは数値であり、フィールドが持つことができる興味深い値の一部を次に示します。
0:エコー応答-pingに使用
3:宛先に到達できません
4:ソースクエンチ-ルーターが過負荷
5:リダイレクト-別のルーターを使用
8:エコー要求-pingに使用
9:ルーター広告応答
10:ルーター要請
11:時間を超過-tracerouteに使用
有効期間
ICMP生成エラーを引き起こすために最もよく知られているIPヘッダーフィールドの1つは 有効期間 フィールド(TTL)。このフィールドには、 パケットが通過できるルーターの最大数. この数は、パケットを処理する各ルーターによって1つずつ減少します. ルーターがTTLがゼロのパケットを受信すると、そのパケットをドロップします そして、その失敗した送信の発信者にICMPメッセージを送り返します.
TTL枯渇の場合、パケットが宛先に到達しない理由は、ルーターの問題やパケットヘッダーの不正なデータとは関係ありません。 TTLは、不正なパケットがインターネットに詰まるのを防ぐために作成された構造です。 ルータテーブルエラーが循環パスになったとき. ただし、このフィールドの副産物は非常に便利なネットワーク管理ツールです。 トレースルート.
こちらもご覧ください: SolarWinds Tracerouteツールのレビュー
ICMPを使用したtraceroute
Tracerouteは、起動コンピューターから特定の宛先IPアドレスまでの一般的なパスを表示する有名なネット管理ツールです。ユーティリティは、一連の空のIPパケットを送信します。これらの各送信の重要な機能は、IPヘッダーのTTL値です.
Tracerouteプログラムは、パケットの送信を開始します。 0のTTL. これは、最初に受信したルーター(通常はネットワークゲートウェイ)によってドロップされます。そのルーターはICMPパケットを送り返します。 Tracerouteがその応答から必要とする情報は、次のもののみです。 戻ってくるのにかかる時間とパケットの送信元アドレス. これは、Tracerouteに、宛先へのパス上の最初のルーターのアドレスを伝えます。その後、プログラムは以下のパケットを送信します 1のTTL. これはゲートウェイを通過し、TTLを1減らします。次にパケットを取得するルーターは、TTLがゼロであることを確認し、パケットをドロップします。 ICMPパケットを送り返します. したがって、パスの2番目のルーターが表示され、Tracerouteはその応答が到着するまでにかかった時間を記録します。送信ごとにTTLを1ずつ増やすことにより, Tracerouteは最終的に、インターネット上の指定されたアドレスへのすべてのリンクのマップを作成します.
トレースルートの問題
Tracerouteは、既存の管理機能を活用して、 効率的で有益なユーティリティ それから。 Tracerouteにはいくつかの弱点があります.
ネットワーク管理者は、おそらく最近の接続が非常に悪くなった理由を確認するために、ユーティリティを使用するでしょう。しかしながら, Tracerouteは過去に何が起こったのかを伝えることができません. 現在のルートの進行状況に関するフィードバックのみを提供できます.
ルータはそれぞれ、パケットの宛先IPアドレスへの最短パスを提供するネイバーを決定します。ただし、その決定は毎回正確に同じとは限りません。ルーターが混雑したり、電源が切れたりすると、隣接するルーターはすぐに問題を発見し、 問題を回避するためにルーティングテーブルを調整する. その変更されたルーティング情報は、インターネット上のすべてのルーターに波及しますが、 すべてのルーターが問題を発見する前に問題を修正することができます. その後、再調整されたルートは世界中に拡散します.
コマンドのオプション、-j」を使用すると、Tracerouteがパスとしてたどるルーターのアドレスを指定できます。ただし、この機能を使用するには、 故障した伝送がたどった経路をすでに知っている まったく同じパスのTraceroute実行でのみその情報を引き出すことができます.
したがって、接続が遅い場合, 後で発行するTracerouteコマンドでは、何が起こったかが明らかにならない場合があります その時までに。遅延の原因となった問題は修正されている可能性があり、Tracerouteパスは低速接続が使用したパスと異なる場合があります.
Tracerouteのもう1つの問題は、送信が特定の宛先に到達する可能性のあるパスに興味深い表示を与えることです。しかしながら, 受け取った情報で何かをするためのツールは提供しません. パスを指定することはできません。そのため、インターネット上のルーターの1つが遅い応答時間を示している場合は、どのルーターが接続を遅らせているかを知るだけです。そのルーターはあなたの会社に属していないため、スピードアップすることはできません, Tracerouteを通じて知識を習得したが、それに基づいて行動できない.
こちらもご覧ください: Tracerouteに最適なツール
ICMP Ping
Pingは2つのICMPコードを使用します:8(エコー要求)および0(エコー応答)。プロンプトでPingコマンドを発行すると、Pingプログラムは、コード8を含むICMPパケットを送信します タイプ フィールド。返信には タイプ of0。プログラムは、エコー要求パケットの送信と応答の到着の間のギャップを計ります。そのため、「往復時間”指定された宛先へのパケットの往復.
エコー要求パケットは、エラーによって引き起こされることなく送信される唯一のICMPパケットであるという点で異常です。したがって、PingはICMPメッセージを取得するためにエラー状態をエミュレートする必要はありません。 Pingには、伝送に必要なパスのアドレスのリストを指定できる2つのオプションがあります。これらは “-j「これはルートを示唆し、「-k「、ルートを決定します.
ICMP Pingポート
あなたは疑問に思うかもしれません Pingが使用するポート. 答えは: なし. ユーティリティでポートを「ping」できる場合、それは文字通りPingコマンドではありません。代わりに、そのユーティリティはTCPまたはUDPパケットを使用してポートをテストします。実際、このタイプの機能は「ポートスキャナー」または「ポートチェッカー.」
Pingはポートよりも下位レベルに存在するプロトコルであるため、ポートを使用できません トランスポート層, ポートが主要な機能である場合.
利用可能なICMP Pingポートレポートに最も近い方法は 特定のポートにUDPパケットを送信します. そのポートがアクティブでない場合、送信はタイプ3のホストからICMPメッセージを引き起こします(宛先に到達できません)サブタイプ3(宛先ポートに到達できません)。そのため、ポートに関するICMPメッセージを引き起こすことは可能ですが、Pingメカニズムを使用して、ICMPパケットをエコー要求としてそもそもそのポートに送信することはできません。 Pingコマンド(つまり、ping :)でIPアドレスにポート番号を追加すると、コマンドは起動しませんが、代わりに構文エラーが返されます.
パス
Pathpingは、 Windowsオペレーティングシステムに組み込まれています また、Windows NT以降のすべてのバージョンで使用できます。このプログラムは以下の組み合わせです ピン そして トレースルート, だから悪用する 3つのICMPメッセージタイプ. これらは、エコー要求とエコー応答のメッセージタイプ(8と0)、および時間超過メッセージタイプ(11)です。.
TracerouteとPingの両方と同様, コマンドへのパラメータとして推奨パスのアドレスのリストを提供することが可能です ユーティリティは、これらのアドレスを介して宛先にパケットを送信しようとします.
Pathpingは、以下を示すフォーマットされた結果レポートを作成します ルートと往復時間 各ルーターに。宛先に繰り返し連絡するのではなく、パス内の各ルーターに繰り返しping要求を送信します。それがPingが行うこと、またはパス内の各ルーターを1回だけ記録することです。これはTracerouteが行うことです。.
PathpingはPingやTracerouteほど回復力がありません. インターネット上のすべてのデバイスはICMPメッセージを送信できますが, すべてのデバイスでICMP機能がアクティブになっているわけではありません. 一部のルーターおよびサーバーの所有者は、ハッカー攻撃に対する保護としてICMP機能を意図的にオフにします.
中間ルーターがICMPを使用しない場合でも、Pingはそのルーターを通過して宛先をテストします。 TracerouteがICMPパケットを送信しないルーターを検出すると、次のルーターに進み、非通信ルーターにアスタリスクの行を表示します。同じ状況で, PathpingはICMPが無効になっているルーターで問い合わせを終了します.
スマーフ攻撃
一部の機器所有者がデバイスのICMP機能をオフにする主な理由は、ハッカーがシステムを攻撃の導管として使用できるためです。スマーフ攻撃はそのようなケースの1つです.
スマーフ攻撃はリフレクター戦略を使用します. ターゲットを直接攻撃するのではなく、他のコンピューターとルーターを呼び出して被害者にメッセージを送信します。攻撃者は、被害者のネットワークで使用されているブロードキャストアドレスを解決し、ICMPエコー要求を送信します(ピン)。ネットワーク上の各デバイスは、ブロードキャストIPアドレスをホストするルーターにエコー応答を送信します.
この攻撃は大規模なネットワークでのみ機能します. ネットワーク内から分散型サービス拒否(DDoS)攻撃を効果的に引き起こしますが、ほとんどの攻撃はインターネット上のリモートコンピューターを介して実行されます。. 攻撃タイプは、ゲートウェイルーターでICMP機能をオフにすることで防止できます。 または、遠隔地からネットワークに着信するパケットでネットワークのブロードキャストIPアドレスを運ぶ要求の受け入れを除外することにより.
ピンフラッド
Pingフラッドは、ターゲットコンピューターを圧倒するDDoS戦略です ICMPエコー要求. Pingの一部の実装は、他の実装よりも優れています。たとえば、Pingコマンドが「洪水」オプション。ただし、このオプションはPingのすべてのバージョンで使用できるわけではありません– Windowsに組み込まれているバージョンでは有効なオプションではありません, 例えば。フラッドオプションが普遍的ではないという事実は、ハッカーに感染したリモートコンピューターを誘導したいという問題を提起します。 ボットネット Ping要求を送信する制御プログラム。フラッドオプションはまれなので、おそらく ボットネット内のほとんどのデバイスは攻撃を開始できません.
ハッカーが、感染したすべてのコンピューターが攻撃を開始する試みを使用し、Pingの実装でフラッドオプションを使用できるようにすれば、この攻撃戦略はより成功するでしょう。それを確実にする1つの方法は、攻撃の前にコンピューターをテストし、分類することです。 正しい形式のPingを持つグループ, または、ボットネットウイルスに感染しているすべてのコンピューターにフラッディング対応のPingをインストールする.
Pingフラッドに対する最も簡単な防御は、 ICMP機能をオフにする ルーター上。 Webサーバーを実行している場合、WebアプリケーションファイアウォールはPingフラッドから保護する必要があります。.
死のピング
Ping of Deathには、長すぎるping要求パケットの送信が含まれます. リクエストには、ペイロードの最後に大量のフィラーがあります. データグラムは送信するには長すぎるため、インターネットプロトコルプロセッサは、送信者の最大送信単位(MTU)のサイズの文字列をチャンクに分割します。受信者は、これが分割された余分な長いパケットであることに気づき、試してみます 元の長いパケットを再構築する 宛先アプリケーションに送信する前に。パケットの長さが受信側コンピューターで使用可能なメモリのサイズよりも大きい場合、パケットを再構築しようとするとコンピューターが妨害されます.
Ping of Deathは現在、よく知られた攻撃タイプです そのため、ステートフルファイアウォールと侵入検知システムがそれを見つけてブロックする可能性があります。知られるようになるハッカーのトリックと同様に、その有効性はもはや脅威ではありません。そのため、ハッカーは主にPing of Death戦略を廃止し、 ピンフラッド.
ICMPトンネル
ルーターは、ICMPデータの背後にあるTCP / UDPヘッダーを含むICMPパケットのヘッダーのみを調べます。そう ICMPセクションが含まれている限り、大量のデータを含む通常のパケットは通過します。. これは潜在的に バックドア 訪問者がパブリックネットワークの認証および課金手順を回避するため. これはICMPトンネルまたはPingトンネルと呼ばれます.
ほとんどの人がコンピューターに持っている標準のネットワークPingユーティリティだけでは、ゲートウェイとファイアウォールをトンネルすることはできません。. ICMPトンネルをプログラムする必要があります. これは、ハッカーにとってネットワークへの可能なルートでもあります。残念ながら、ネットワーク管理者にとって, インターネットからダウンロードできる無料のICMPトンネルパッケージが多数あります。.
前の2種類のICMP攻撃と同様, Pingトンネルは、Webアプリケーションファイアウォール、侵入検知システム、または単にすべてのICMPアクティビティをブロックすることによりブロックできます ネットワークゲートウェイで.
トゥインジ攻撃
Twingeは、ハッカー攻撃プログラムです。起動します ICMPフラッド ターゲットコンピューターを圧倒します。ターゲットが受信するすべてのPing要求は、多くの異なるソースから送信されたように見えますが、実際にはすべて同じソースから送信されています, ヘッダーに偽の送信元IPアドレスが含まれる. Twingeは、「フラッド」オプションが実装された、単に名前が変更されたPingユーティリティです。それは非常に便利なツールになります ボットネット 起動するために所有者がゾンビコンピューターにロードする Pingフラッド攻撃.
本質的に, TwingeフラッドはPingフラッドと同じです また、ネットワークをネットワークから保護するためのソリューションは、ICMPを介したDDoS攻撃の主なカテゴリと同じです。 ICMPをオフにする、Webアプリケーションファイアウォールまたはステートフルファイアウォールをインストールする、または侵入検知システムをインストールする.
パスMTUディスカバリー
最大伝送単位(MTU)は、ネットワークに準拠したデバイスの設定であり、 デバイスが処理するIPパケットの最長の長さ. で表されます オクテット, これは8ビットバイトです。インターネットプロトコルの元のMTU勧告は576オクテットでした。ただし、イーサネット標準では、 1,500オクテット これはすべてのネットワークおよびインターネットデバイスの標準になりました.
任意のルーターでMTU設定を調整できます。そう, パケットがMTUの低いルーターを通過する場合、それぞれが2つのIPパケットに分割されます. これにより、元のパケットを受信者が組み立て直す前に再構成する必要があるため、転送の配信が遅くなります トランスポート層処理 そして、宛先アプリケーションに渡されます.
IPヘッダーで、「分割」と呼ばれる分割を指定することもできます。フラグメンテーション」はパケットに対して実行しないでください。この場合、パケット長よりも短いMTUを持つルーターはパケットをドロップし、ICMPエラー通知で報告します。このエラーメッセージはICMPタイプ3(宛先に到達できません)サブタイプ4(断片化が必要ですが、「断片化しない」フラグが設定されています).
パスMTUディスカバリー試行は、フラグメント化またはドロップされたパケットの問題を回避します。伝送に必要なパスで最も低いMTUを見つけることができる場合は、そのサイズまで独自のMTUを設定する必要があります.
発見メカニズムは、上記で概説した障害手順によって実装されます。 IPパケットは、送信者のMTUサイズと「断片化しないでください」フラグが設定されています。問題が解決した場合、テストパケットの送信先への接続に問題はないはずです。送信がICMPエラーを引き起こした場合、テストを繰り返し試行します。, 毎回パケット長を減らす. これにより、最終的に通過するパケットを送信し、そのパケットの長さで宛先へのパスで最も低いMTUがわかります.
Pingには、「断片化しないでください” 国旗。ただし、これは、Pingパケットがパス内のルーターのMTUより長い場合にのみ有効です。. PingはMTUサイズにパディングしません, そのため、短いPingパケットがドロップされることは疑わしい.
の Linuxベース IPutilsパッケージには、パスMTUディスカバリーを実行するtracepathが含まれています。オン ウィンドウズ コンピュータでは、無料のmturouteユーティリティをチェックアウトできます。.
ICMPの世界
ICMPシステムは、伝送障害を報告するための非常に単純なメカニズムです。しかし、それはまた ネットワーク管理者が利用できる最も強力なツールセットの1つ. 良いニュースは ICMPは無料です ネットワークに接続されたデバイスで自動的に利用可能になります。悪いニュースは ICMPはハッカーが使用できる ファイアウォールを介して攻撃を仕掛けたり、スニーク接続を行う.
ICMPを悪意を持って使用できるという事実は、多くのリスク回避的なネットワーク管理者がメッセージングシステムをオフにすることを促進します。このガイドで説明されている非常に便利なユーティリティの多くを無効にするため、これは残念です.
ネットワークを実行している場合、特にインターネットトラフィックを渡すルーターを所有している場合, ICMPの誤用をブロックするために、ステートフルファイアウォールと侵入検知システムの使用を検討する メッセージングプロトコルを完全にオフにする代わりに。ルーターの設定とファームウェア機能を調べて、デバイスでICMPの操作を続行できるICMP悪用解決手順があるかどうかを確認します。.
ICMPメソッドを使用して接続を確認していますか?定期的に使用し、他の人に推奨できるICMPベースのGUIユーティリティはありますか?ネットワークを保護するためにルーターでICMPをオフにしましたか?にメッセージを残す コメント 以下のセクションで経験を共有してください.
遅延時間(RTT)」と呼ばれます。Pingは、ネットワーク接続の問題を特定するために使用されます。例えば、Pingが失敗する場合、接続が切断されている可能性があります。また、Pingは、ネットワークの帯域幅をテストするためにも使用されます。Pingは、ネットワーク管理者にとって非常に重要なツールであり、ネットワークの問題を特定するために頻繁に使用されます。