Cisco機器がICMP Unreachableを送信する間隔について、CMLで環境を構築し検証します。
ネットワーク構成
以下のネットワークをCMLで構築し検証を行います。
各機器の設定
疎通確認
Router1からRouter3のLoopback1(1.1.1.1)に向けてPingを実施し、疎通可能であることを確認します。
ping 1.1.1.1
Router1#ping 1.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/5/7 ms
ICMP Unreachableの送信間隔の確認
ICMP Unreachableが送信される環境の構築
Router2の1.1.1.1向けのルーティング設定を削除し、ICMP Unreachableが送信されるようにします。
no ip route 1.1.1.1 255.255.255.255 192.168.2.3
Router1からRouter3のLoopback1(1.1.1.1)に向けてPingを実施し、疎通不可であることを確認します。※Ping結果に、Unreachableを示す”U”が表示されることを確認します。Unreachableの送信間隔が分かりやすいようにPing回数を10回にしています。
ping 1.1.1.1 repeat 10
Router1#ping 1.1.1.1 repeat 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
U.U.U.U.U.
Success rate is 0 percent (0/10)
パケットキャプチャ確認
Router1-Router2間のパケットキャプチャを確認すると、Router2から2回に1回の割合で、Destination unreachable (Host unreachable) が送信されていることが分かります。
ip icmp rate-limit unreachable (ICMP到達不能レート制限)
全てのPingにDestination unreachable (Host unreachable)を返さない理由は、「ip icmp rate-limit unreachable」という設定で、ルーターが到達不能メッセージを返す間隔(割合)を制限しているからです。
Cisco機器のデフォルト設定は、500(msec)となっています。
show run all | inc rate-limit unreachable
show ip icmp rate-limit
Router2#show run all | inc rate-limit unreachable
ip icmp rate-limit unreachable 500
Router2#show ip icmp rate-limit
DF bit unreachables All other unreachables
Interval (millisecond) 500 500
設定は、1-4294967295 の間で、msec(ミリ秒)で指定できます。
Router2(config)#ip icmp rate-limit unreachable ?
<1-4294967295> Once per milliseconds
ICMP Unreachableの送信間隔の変更
送信間隔の制限を変更し、到達不能メッセージの送信状況を確認します。
送信間隔の制限を削除
Router2で下記のコマンドを実施し、送信間隔制限を削除します。
no ip icmp rate-limit unreachable
Router1からRouter3のLoopback1(1.1.1.1)に向けてPingを実施します。Ping結果は、全て”U”となりました。
ping 1.1.1.1 repeat 10
Router1#ping 1.1.1.1 repeat 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
UUUUUUUUUU
Success rate is 0 percent (0/10)
パケットキャプチャ確認
Router1-Router2間のパケットキャプチャを確認すると、全てのICMPに対して、Destination unreachable (Host unreachable) が送信されていることが分かります。
送信間隔の制限を3000msecに変更
Router2で下記のコマンドを実施し、送信間隔制限を3000(msec)に変更します。
ip icmp rate-limit unreachable 3000
Router1からRouter3のLoopback1(1.1.1.1)に向けてPingを実施します。Ping結果は、3回に1回の割合で”U”となりました。
ping 1.1.1.1 repeat 10
Router1#ping 1.1.1.1 repeat 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
U..U..U..U
Success rate is 0 percent (0/10)
パケットキャプチャ確認
Router1-Router2間のパケットキャプチャを確認すると、Router2から3回に1回の割合で、Destination unreachable (Host unreachable) が送信されていることが分かります。※前回のUnreachableから3秒以内のパケットに対しては、Unreachableを返していません。
ICMP到達不能レート制限の目的
この機能は、ルーターへのDoS攻撃等による処理不可上昇の回避を目的としています。しかし、到達不能メッセージ(ICMP Unreachable)を契機に処理を変えるようなアプリケーションを実装している場合には考慮が必要となります。
以上で、ICMP Unreachableの送信間隔(Cisco機器)の説明は完了です!