2014
11
03

CiscoのACLでtracerouteを許可する

CiscoのACLでtracerouteを許可するポリシーで少しハマったのでメモ。
結論から言うと、ICMP応答メッセージの「Port Unreachable」を許可するポリシーを入れて解決しました。
以下、詳細。

そもそもtracerouteの仕組みとは?
tracerouteでは「TTL」の値を利用します。TTLはルータを経由すると値が1つ減ります。TTLが0になったら、ルータは送信元に対してなんらかのICMPメッセージを返します。
この特性を利用して。。。

1.まずは宛先ホストに対して、TTLを「1」にセットしたパケットを送ります。
2.すると最初のネクストホップのルータがTTLを1つ減らすので「0」にります。
3.TTLが「0」になったら、ルータは「Time Exceeded」メッセージを返します。「Time Exceeded」は「TTLが途中で0になったからパケットを破棄しました」という意味になります。
4.「Time Exceeded」メッセージには、メッセージを返したルータのIPが含まれているので、送信元ホストはそのIPを記憶します。
5.今度はTTLを「2」にセットして宛先ホストに送信します。
6.すると2つ先のルータでTTLが「0」になり、「Time Exceeded」メッセージが返されます。
7.「Time Exceeded」メッセージに含まれる2つ目のルータのIPを記憶します
8.宛先ホストに到達するまでTTLを1つずつ増やしながらパケットを送信し続けます。
9.宛先ホストにパケットが到達したら、宛先ホストは「Echo Reply」もしくは「Port Unreachable」メッセージを送って、パケットを受け取ったことを知らせます。


つまり、CiscoのACLでtracerouteを許可するには「Time Exceeded」、「Echo Reply」、「Port Unreachable」の3種類のICMP応答メッセージを許可するポリシーを入れる必要があります。
私の場合は「Time Exceeded」と「Echo Reply」は許可していたのですが、「Port Unreachable」を許可していなかったので最後の宛先ホストからのICMP応答メッセージを受け取れていませんでした。

以下のような感じでACLを入れました。

permit icmp [source] [destination] echo-reply
permit icmp [source] [destination] time-exceeded
permit icmp [source] [destination] port-unreachable



※宛先のネットワークでICMP応答メッセージを返さないようなフィルタリングがされていれば、当然応答はありません。

tracerouteの解説は以下のリンクが分かりやすいです。↓
http://www5e.biglobe.ne.jp/%257eaji/3min/36.html
http://atnetwork.info/tcpip/tcpip89.html

以上
Comment



Only the blog author may view the comment.

[68]

Link exchange is nothing else except it is simply placing the other person's webpage link on your page at suitable place and other person will also
do same for you.

Trackback
Trackback URL

«  | HOME |  »

奇妙な風景 Unique Scene
<< >>

プロフィール


最新記事


最新コメント


最新トラックバック


月別アーカイブ


カテゴリ


スポンサード リンク


FC2カウンター


検索フォーム


RSSリンクの表示


リンク


ブロとも申請フォーム


QRコード