ICMPリダイレクトの仕組み

ICMPリダイレクトの仕組み

ICMPリダイレクトの仕組みについて説明します。

目次

ICMPリダイレクトとは

ICMPリダイレクトとは、ルーター等のL3機器が、自身よりも適切なゲートウェイが存在すると判断したときに、ICMP(Type:5 Redirect)を利用して送信元に通知する機能です。ICMPリダイレクトメッセージを受け取った送信元の機器は、ルーティングテーブルに一時的に経路を追加し、以降は通知されたゲートウェイを利用して通信を行います。

ICMPのタイプとコードの説明については、下記を参照してください。

ICMPリダイレクトの仕組み

ICMPリダイレクトにより、経路が変更される仕組みを説明します。

ネットワーク構成

ネットワーク環境は下記の通りです。

  • Desktop1/Router1/Router2/L2Switchが、同一セグメント(10.0.0.0/24)に接続されています。
  • Desktop2は、Router2のGi0/0に別セグメント(192.168.1.0/24)で接続されています。
  • Dektop1のデフォルトゲートウェイは、Router1(10.0.0.1)に設定されています。
  • Router1には、別セグメント(192.168.1.0/24)へのネクストホップして、Router2(10.0.0.2)が設定されています。
ネットワーク構成

通常時の経路(ICMPリダイレクト機能が利用されない場合)

ICMPリダイレクト機能が利用されない場合、Desktop1からDesktop2への経路は下記の通りです。

通常時の通信経路

Desktop1

Desktop1でtracerouteを実行します。

traceroute 192.168.1.100
Desktop1:~$ traceroute 192.168.1.100
traceroute to 192.168.1.100 (192.168.1.100), 30 hops max, 46 byte packets
 1  10.0.0.1 (10.0.0.1)  6.884 ms  6.811 ms  6.067 ms
 2  10.0.0.2 (10.0.0.2)  17.731 ms  16.961 ms  9.244 ms
 3  192.168.1.100 (192.168.1.100)  9.294 ms  13.611 ms  15.268 ms

Router1→Router2→Desktop3を経由して通信していることがわかります。

Desktop1でルーティングテーブルを確認します。

ip route
Desktop1:~$ ip route
default via 10.0.0.1 dev eth0

ルーティングテーブルには、デフォルトゲートウェイ(10.0.0.1)のみが設定されています。

ICMPリダイレクトによる通信経路変更のフロー

ICMPリダイレクトによる通信経路変更のフローについて説明します。

STEP
Router1がDektop1へICMPリダイレクトを送信

Router1は、Dekstop1からパケットを受け取ると、Router2へパケットをルーティングすると同時に、Dekstop1へICMPリダイレクトメッセージを送信します。ICMPリダイレクトメッセージには「効率的にネットワークを利用するために、ゲートウェイをRouter2にするように」という情報が含まれています。

Router1がICMPリダイレクトを送信

パケットキャプチャを確認すると、Type5/Code0のICMPメッセージが送られていることがわかります。

パケットキャプチャ抜粋

Internet Control Message Protocol
    Type: 5 (Redirect)
    Code: 0 (Redirect for network)
    Checksum: 0xa7da [correct]
    Gateway address: 10.0.0.2

ICMPリダイレクトを送信する条件
ルーター等のL3機器は、転送パケットの受信インターフェースと送信インターフェースが同じときに、効率的な経路があると判断します。

STEP
Desktop1がルーティングテーブルに経路情報を追加

ICMPリダイレクトメッセージを受け取ったDesktop1は、自身のルーティングテーブルに「宛先:192.168.1.100、ネクストホップ:10.0.0.2」という情報を追加します。

Desktop1がルーティングテーブルに経路情報を追加
Desktop1

Dekstop1のルーティングテーブルを確認します。

ip route
Desktop1:~$ ip route
default via 10.0.0.1 dev eth0
192.168.1.100 via 10.0.0.2 dev eth0

ルーティングテーブルに、「宛先:192.168.1.100、ネクストホップ:10.0.0.2」という情報が追加されています。

ICMPリダイレクトメッセージにより追加されたルーティング情報は、一定時間が経過すると自動的に削除されます。

STEP
Router2をゲートウェイとして通信を実施(Router1を経由しない)

以降は、Router1を経由せずに、直接Router2へパケットを送信し通信が行われます。

Router1を経由せず通信を実施

Desktop1からDekstop2へ連続pingを実施した際のパケットキャプチャを確認すると、2回目のICMPエコー要求から、宛先MACアドレスがRouter2に変わっていることがわかります。

パケットキャプチャ抜粋

1   0.000000   10.0.0.100 → 192.168.1.100 ICMP 98 Echo (ping) request  id=0x0004, seq=0/0, ttl=64
Destination: RealtekU_0c:0f:06 (52:54:00:0c:0f:06) <--- Router1 Gi0/1のMACアドレス
Source: RealtekU_1b:4b:2a (52:54:00:1b:4b:2a)

4   1.000543   10.0.0.100 → 192.168.1.100 ICMP 98 Echo (ping) request  id=0x0004, seq=1/256, ttl=64
Destination: RealtekU_19:24:80 (52:54:00:19:24:80) <--- Router2 Gi0/1のMACアドレス
Source: RealtekU_1b:4b:2a (52:54:00:1b:4b:2a)

ICMPリダイレクトの問題点・無効化

ICMPリダイレクトは、ネットワーク経路を効率的に利用するために便利な仕組みですが、悪用される可能性や管理上の問題点もあります。

ICMPリダイレクトを悪用する例

ルーティングテーブルを書き換えることで通信を不能にする。

攻撃者によりルーティングテーブル変更

ルーティングテーブルを肥大化させることで処理能力を超過させ、通信を不能にする。

攻撃者によりルーティングテーブル肥大化

経路を変更し、悪意のある行為(盗聴やデータ改竄)を行う。

攻撃者により経路が変更され、盗聴やデータ改善が行われる

管理上の問題

ICMPリダイレクトにより、管理者が意図しないルーティングで、偶然通信が成立してしまうことがあります。この場合、不要と思われた機器を撤去することで、通信に影響を与えてしまうことがあります。

HSRP利用時の注意点

Cisco機器でHSRPを利用している場合、ICMPリダイレクト機能が動作すると、想定通りに冗長化できない場合があります。そのため、HSRPを有効にしているインターフェースでは、ICMPリダイレクトメッセージの送信が停止されます。

ICMPリダイレクトの無効化

上述の理由から、ICMPリダイレクト機能は無効化することが推奨される場合が多いです。

  • ホスト端末では、ICMPリダイレクトを受け入れないように設定する。
  • ルーター等のL3機器では、ICMPリダイレクトを送信しないように設定する。
  • Firewall等では、ICMPリダイレクトの通貨を許可しないように設定する。

以上で、ICMPリダイレクトの仕組みの説明は完了です!

  • URLをコピーしました!
  • URLをコピーしました!
目次