各オペレーティング システムでの traceroute コマンドの使用 方法;pdf

各オペレーティング システムでの traceroute コマンドの使用
方法
目次
概要
ハードウェアとソフトウェアのバージョン
一般的な操作
Cisco IOS および Linux Microsoft Windows
ICMP 到達不能パケット数の制限 例
Cisco ルータで Cisco IOS ソフトウェア 12.1(5) を使用している場合 PC で Linux 6.2 を実行している場合 PC で
Windows NT を実行している場合
補足情報 要約 関連情報
概要
traceroute コマンドを実行すると、パケットが通過したホップ数 を取得し、パケットが通過したソースから宛先までのパスを判
別できます。このユーティリティは、ホスト オペレーティング システム(Linux、 Microsoft (MS) Windows など)と Cisco
IOS ソフトウェ アに含まれています。
ハードウェアとソフトウェアのバージョン
この文書の情報は、次のバージョンのハードウェアおよびソフト ウェアに適用されます。
Cisco IOS ソフトウェア リリース 12.1(5)
Linux バージョン 6.2
Windows NT を実行しているデバイス
一般的な操作
ホストまたはホストとして機能している発信元デバイスで traceroute ip-address [-m
number-of-hops] コマン ドを実行すると、ホップ カウント、生存可能時間 (TTL)=n 付
きの IP アドレスが宛先に送信されます。通常、ルータを通 過すると、TTL フィールド
の値は 1 ずつ減っていきます。パスの中間にある ルータが TTL=1 のパケットを検出す
ると、インターネット制御メッセージ プロトコル (ICMP) の "time exceeded" メッセ
ージを発信元に戻し、パケッ トが n 番目のホップを通過していることを通知します。
このコマンドの動作は、traceroute コマンドが実装されているオ ペレーティング シス
テムによって異なります。
Cisco IOS および Linux
初期状態の User Datagram Protocol (UDP) データグラム プローブの TTL は 1 に設定
されます。あるいは、ユーザが拡張トレースで指定した最小 TTL に設定されます。初期
状態のデータグラム プローブの宛先 UDP ポート は 33434 か、拡張 traceroute コマ
ンド で指定したポートに設定 されています。 拡張 traceroute コマンドは、
traceroute コマンドの一 種です。初期状態のデータグラム プローブの発信元 UDP ポ
ートは、ランダ ムに設定され、0x8000 との OR 値になります。発信元ポートの最小値
は 0x8000 になります。 次では、UDP データグラムを送信したときのイベント につい
て説明します。
注:これらのパラメータは構成可能です。この例では、n=1 で 開始し、n=3 で終了して
います。
1. UDP データグラムがTTL=1 で送信されます。
2. UDP 宛先ポートが 1 増分し、発信元 UDP ポートがランダムに設定さ れ、2 番目
のデータグラムが送信されます。
3. 最大 3 つまでのプローブに対して(あるいは、拡張 traceroute コマンド出力で
要求した回数だけ)手順 2 が実行されま す。送信されたプローブごとに、"TTL
exceeded" メッセージが戻されます。 このメッセージにより、宛先ホストまでの
パスを辿ることができます。
4. ICMP "time exceeded" メッセージを受信すると、TTL が 1 つ大きく なり、手順
1 に戻ります。次のいずれかのメッセージを受信する場合もあり ます。
a. ICMP type 3, code 3 ("destination unreachable"、"port unreachable")
メッセージ。このメッセージはホストに到達したことを示し ます。
5. "host unreachable"、"net unreachable"、"maximum TTL exceeded" 、または
"timeout" メッセージ。プローブが再送されたことを示します。
異なるプローブを区別するために、Cisco ルータは、発信元ポートをラン ダムに設定
し、宛先ポートを増分して UDP プローブ パケットを送信します。 Cisco ルータは、
UDP/ICMP パケットの送信元ポートの発信元アドレスを付け て、"time to live
exceeded in transit" という ICMP メッセージを送信し ます。
Linux の traceroute コマンドは Cisco ルータの実装に類似していますが、このコマン
ドが使用する発信元ポートは決められています。 traceroute コマンドに -n オプショ
ンを指定すると、ネーム サーバに対する要求を回避することができます。
Microsoft Windows
MS Windows 95/Windows 2000 の tracert コマンドは、プローブ として UDP データグ
ラムではなく、ICMP エコー要求を使用します。ICMP エ コー要求 TTL を 1 つずつ増や
しながら、 上の説明と同じ操作が行われます。ICMP エコー要求ダイアグラムでは、
ICMP エコー要求を使用する利点は最終のホップが宛先ホストから送信された ICMP
"unreachable" メッセージ の応答に依存しない点です。この代わりに、ICMP エコー応
答メッセージに依存します。
このコマンドのシンタックスは次のとおりです。
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
次の表では、このコマンド パラメータについて説明します。
パラメータ
説明
-d
コンピュータ名をアドレスの参照で解決しないことを指定しま
す。
-h maximum_hops
宛先の検索に使用するホップの最大数を指定します。
-j computerlist
computer-list を使用して発信元のルートを指定します。
-w timeout
応答のタイムアウトを ms 単位で指定します。
target_name
宛先のコンピュータ名。
ICMP 到達不能パケット数の制限
Cisco ルータでは、サービス拒否攻撃 (DoS) から保護するために、ICMP 到達不能パケ
ット数が 500 ms あたり 1 パケットに制限されています。 Cisco IOS バージョン
12.1 では、この制限を変更できます。次のコマンド を実行すると、この値が変更でき
ます。
ip icmp rate-limit unreachable [DF] <1-4294967295 millisecond>
no ip icmp rate-limit unreachable [DF] (DF limits rate for code=4)
登録ユーザとして ログインしている場合、 詳細については、バグ情報 CSCdp28161 を
参照してください。
この制限は、すべての ICMP 到達不能パケット数を集約した割合に適用されます。 詳細
については、 RFC 792 を参照してください。
type = 3, code
0 = net unreachable;
1 = host unreachable;
2 = protocol unreachable;
3 = port unreachable;
4 = fragmentation needed and DF set;
5 = source route failed.
この制約は、ICMP エコー要求や ICMP "time exceeded" メッセージなど の他のパケッ
トには影響を及ぼしません。
例
ここでは、次のネットワーク トポロジを例に説明します。
ここで取りあげる 3 つの例では、それぞれ異なる Device A を使用して います。
Device A から、traceroute 150.1.4.2 コマンドを Device 7C に実行しています。
また、どの例でも、debug ip packet detail コマンドを Device 11A で実行していま
す。それぞれの例で、このコマンドの出力結果を示しま す。
注: Device 11A で TTL = 1 になると、デバッグ出力にパケット は表示されません。
Cisco ルータで Cisco IOS ソフトウェア 12.1(5) を使用している場合
次の例では、拡張 traceroute コマンドを使用しています 。この例では、Cisco ルータ
から traceroute コマンドを実行すると きに変更できるオプションについても説明しま
す。この例では、デフォルト の設定を変更していません。
rp-10c-2611#traceroute
Protocol [ip]:
Target IP address: 150.1.4.2
Source address: 150.1.1.1
Numeric display [n]:
Timeout in seconds [3]:
Probe count [3]:
Minimum Time to Live [1]:
Maximum Time to Live [30]:
Port Number [33434]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Type escape sequence to abort.
Tracing the route to 150.1.4.2
1 150.1.1.2 4 msec 0 msec 4 msec
2 150.1.2.2 4 msec 4 msec 0 msec
3 150.1.3.2 0 msec 0 msec 4 msec
4 150.1.4.2 4 msec * 0 msec
rp-11a-7204#
*Dec 29 13:13:57.060: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),
len 56, sending
*Dec 29 13:13:57.060: ICMP type=11, code=0
*Dec 29 13:13:57.064: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),
len 56, sending
*Dec 29 13:13:57.064: ICMP type=11, code=0
*Dec 29 13:13:57.064: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),
len 56, sending
*Dec 29 13:13:57.068: ICMP type=11, code=0
このデバッグ出力では、Device 11A がプローブの発信元 (150.1.1.1) に ICMP "time
exceeded" メッセージを送信しています。これらの ICMP メッセ ージは、TTL=1 の最初
のプローブへの返信です。Device 11A は TTL を 0 に設定し、"time exceeded" メッセ
ージを戻します。
注: この出力例では、次の 2 つの理由でデバッグ出力に UDP プローブが含まれていま
せん。
Device 11A が UDP プローブの宛先でない。
TTL が 0 になり、パケットが破棄されたため、debug でパケットが認識できない。
*Dec 29 13:13:57.068: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 28, forward
*Dec 29 13:13:57.068: UDP src=40309, dst=33437
*Dec 29 13:13:57.068: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 13:13:57.068: ICMP type=11, code=0
*Dec 29 13:13:57.072: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 28, forward
*Dec 29 13:13:57.072: UDP src=37277, dst=33438
*Dec 29 13:13:57.072: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 13:13:57.072: ICMP type=11, code=0
*Dec 29 13:13:57.076: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 28, forward
*Dec 29 13:13:57.076: UDP src=36884, dst=33439
*Dec 29 13:13:57.076: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 13:13:57.076: ICMP type=11, code=0
このデバッグ出力では、150.1.1.1 から 150.1.4.2 への UDP プローブが 含まれていま
す。
注: このプローブは TTL=2 です。これは、デバッグでは確認でき ません。Device 11A
は TTL を 1 に設定し、UDP パケットを Device 7A に 送信します。Device 7A は TTL
を 0 にして、ICMP "time exceeded" メッセ ージを戻します。
*Dec 29 13:13:57.080: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 28, forward
*Dec 29 13:13:57.080: UDP src=37479, dst=33440
*Dec 29 13:13:57.080: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 13:13:57.080: ICMP type=11, code=0
*Dec 29 13:13:57.084: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 28, forward
*Dec 29 13:13:57.084: UDP src=40631, dst=33441
*Dec 29 13:13:57.084: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 13:13:57.084: ICMP type=11, code=0
*Dec 29 13:13:57.084: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 28, forward
*Dec 29 13:13:57.088: UDP src=39881, dst=33442
*Dec 29 13:13:57.088: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 13:13:57.088: ICMP type=11, code=0
このデバッグ出力には、後続の 3 つの UDP プローブが含まれています。 これらのプロ
ーブの TTL は 3 です。Device 11A は TTL を 2 に設定し、 Device 7A に転送しま
す。Device 7A は TTL を 1 に設定し、パケットを Device 7B に転送します。Device
7B は TTL を 0 に設定し、 ICMP "time exceeded" メッセージを戻します。
*Dec 29 13:13:57.088: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 28, forward
*Dec 29 13:13:57.088: UDP src=39217, dst=33443
*Dec 29 13:13:57.092: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 13:13:57.092: ICMP type=3, code=3
*Dec 29 13:13:57.092: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 28, forward
*Dec 29 13:13:57.096: UDP src=34357, dst=33444
*Dec 29 13:14:00.092: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 28, forward
*Dec 29 13:14:00.092: UDP src=39587, dst=33445
*Dec 29 13:14:00.092: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 13:14:00.092: ICMP type=3, code=3
このデバッグ出力では、最後の 3 つの UDP プローブが含まれています。 これらのプロ
ーブの最初の TTL は 4 でした。Device 11A が TTL を 3 にし 、Device 7A が 2 に
し、Device 7B が 1 にして、Device 7C が 0 にしてい ます。Device 7C はプローブの
宛先のため、ICMP "port unreachable" メッセージを戻しています。
注: Device 7C は、到達不能パケット数の制限から、2 つの ICMP "port unreachable"
メッセージしか送信しません。
PC で Linux 6.2 を実行している場合
[root#linux-pc]#traceroute -n 150.1.4.2
traceroute to 150.1.4.2 (150.1.4.2), 30 hops max, 40 byte packets
1. 150.1.1.2 1.140 ms 0.793 ms 0.778 ms
2. 150.1.2.2 2.213 ms 2.105 ms 3.491 ms
1. 150.1.3.2 3.146 ms 2.314 ms 2.347 ms
1. 150.1.4.2 3.579 ms * 2.954 ms
rp-11a-7204#
*Jan 2 07:17:27.894: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),
len 56, sending
*Jan 2 07:17:27.894: ICMP type=11, code=0
*Jan 2 07:17:27.894: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),
len 56, sending
*Jan 2 07:17:27.894: ICMP type=11, code=0
*Jan 2 07:17:27.894: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),
len 56, sending
*Jan 2 07:17:27.894: ICMP type=11, code=0
このデバッグ出力では、Device 11A がプローブの発信元 (150.1.1.1) に ICMP "time
exceeded" メッセージを送信しています。これらの ICMP メッセ ージは、TTL=1 の最初
のプローブを検出したときに戻されます。Device 11A は TTL を 0 に設定し、"time
exceeded" メッセージを戻します。
注: この出力例では、次の 2 つの理由でデバッグ出力に UDP プ ローブが含まれていま
せん。
Device 11A が UDP プローブの宛先でない。
TTL が 0 になり、パケットが破棄されたため、debug でパケットが認識できな
い。
*Jan 2 07:17:27.894: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),
g=150.1.2.2, len 40, forward
*Jan 2 07:17:27.894: UDP src=33302, dst=33438
*Jan 2 07:17:27.898: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),
g=150.1.1.1, len 56, forward
*Jan 2 07:17:27.898: ICMP type=11, code=0
*Jan 2 07:17:27.898: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),
g=150.1.2.2, len 40, forward
*Jan 2 07:17:27.898: UDP src=33302, dst=33439
*Jan 2 07:17:27.898: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),
g=150.1.1.1, len 56, forward
*Jan 2 07:17:27.898: ICMP type=11, code=0
*Jan 2 07:17:27.898: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),
g=150.1.2.2, len 40, forward
*Jan 2 07:17:27.898: UDP src=33302, dst=33440
*Jan 2 07:17:27.902: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),
g=150.1.1.1, len 56, forward
*Jan 2 07:17:27.902: ICMP type=11, code=0
このデバッグ出力では、150.1.1.1 から 150.1.4.2 への UDP プローブが 含まれていま
す。
注: このプローブは TTL=2 です。これは、デバッグでは確認でき ません。Device 11A
は TTL を 1 に設定し、UDP パケットを Device 7A に 送信します。Device 7A は TTL
を 0 にして、ICMP "time exceeded" メッセージを戻します。
*Jan 2 07:17:27.902: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),
g=150.1.2.2, len 40, forward
*Jan 2 07:17:27.902: UDP src=33302, dst=33441
*Jan 2 07:17:27.906: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),
g=150.1.1.1, len 56, forward
*Jan 2 07:17:27.906: ICMP type=11, code=0
*Jan 2 07:17:27.906: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),
g=150.1.2.2, len 40, forward
*Jan 2 07:17:27.906: UDP src=33302, dst=33442
*Jan 2 07:17:27.910: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),
g=150.1.1.1, len 56, forward
*Jan 2 07:17:27.910: ICMP type=11, code=0
*Jan 2 07:17:27.910: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),
g=150.1.2.2, len 40, forward
*Jan 2 07:17:27.910: UDP src=33302, dst=33443
*Jan 2 07:17:27.910: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),
g=150.1.1.1, len 56, forward
*Jan 2 07:17:27.910: ICMP type=11, code=0
このデバッグ出力には、後続の 3 つの UDP プローブが含まれています。 これらのプロ
ーブの TTL は 3 です。Device 11A は TTL を 2 に設定し、 Device 7A に転送しま
す。Device 7A は TTL を 1 に設定し、パケットを Device 7B に転送します。Device
7B は TTL を 0 に設定し、 ICMP "time exceeded" メッセージを戻します。
*Jan 2 07:17:27.910: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),
g=150.1.2.2, len 40, forward
*Jan 2 07:17:27.910: UDP src=33302, dst=33444
*Jan 2 07:17:27.914: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),
g=150.1.1.1, len 56, forward
*Jan 2 07:17:27.914: ICMP type=3, code=3
*Jan 2 07:17:27.914: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),
g=150.1.2.2, len 40, forward
*Jan 2 07:17:27.914: UDP src=33302, dst=33445
*Jan 2 07:17:32.910: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2(FastEthernet0/0),
g=150.1.2.2, len 40, forward
*Jan 2 07:17:32.910: UDP src=33302, dst=33446
*Jan 2 07:17:32.914: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1(Ethernet4/0),
g=150.1.1.1, len 56, forward
*Jan 2 07:17:32.914: ICMP type=3, code=3
このデバッグ出力では、最後の 3 つの UDP プローブが含まれています。 これらのプロ
ーブの最初の TTL は 4 でした。Device 11A が TTL を 3 にし 、Device 7A が 2 に
し、Device 7B が 1 にして、Device 7C が 0 にしてい ます。Device 7C はプローブの
宛先のため、ICMP "port unreachable" メッ セージを戻しています。
注: Device 7C は、到達不能パケット数の制限から、2 つの ICMP "port unreachable"
メッセージしか送信しません。
PC で Windows NT を実行している場合
C:\>traceroute 150.1.4.2
1 <10 ms <10 ms <10 ms 10.1.1.2
1 <10 ms <10 ms <10 ms 10.1.2.2
1 <10 ms <10 ms <10 ms 10.1.3.2
1 <10 ms 10 ms 10 ms 10.1.4.2
Trace complete
rp-11a-7204#
*Dec 29 14:02:22.236: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 78, forward
*Dec 29 14:02:22.236: UDP src=137, dst=137
*Dec 29 14:02:22.240: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 14:02:22.240: ICMP type=3, code=3
*Dec 29 14:02:23.732: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 78, forward
*Dec 29 14:02:23.732: UDP src=137, dst=137
*Dec 29 14:02:23.736: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 14:02:23.736: ICMP type=3, code=3
*Dec 29 14:02:25.236: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 78, forward
*Dec 29 14:02:25.236: UDP src=137, dst=137
*Dec 29 14:02:25.236: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 14:02:25.240: ICMP type=3, code=3
*Dec 29 14:02:26.748: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),
len 56, sending
*Dec 29 14:02:26.748: ICMP type=11, code=0
*Dec 29 14:02:26.752: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),
len 56, sending
*Dec 29 14:02:26.752: ICMP type=11, code=0
*Dec 29 14:02:26.752: IP: s=150.1.1.2 (local), d=150.1.1.1 (Ethernet4/0),
len 56, sending
*Dec 29 14:02:26.752: ICMP type=11, code=0
このデバッグ出力では、Device 11A がプローブの発信元 (150.1.1.1) に ICMP "time
exceeded" メッセージを送信しています。これらの ICMP メッセ ージは、TTL=1 の
ICMP エコー要求の最初のプローブを検出したときに戻さ れます。Device 11A は TTL
を 0 に設定し、ICMP メッセージを戻します。
注: 出力の先頭に NETBIOS 名の要求があります。この要求は、発信元と宛先のポートが
ともに 137 に設定されている UDP パケットとして表 されています。説明を分かりやす
くするために、以降のデバッグ出力では、 NETBIOS パケットを省略しています。
traceroute コマンドで -d オプションを使用すると、NETBIOS の動作を無効にできま
す。
注: この出力例では、次の 2 つの理由でデバッグ出力に ICMP プ ローブが含まれてい
ません。
Device 11A が ICMP プローブの宛先でない。
TTL が 0 になり、パケットが破棄されたため、debug でパケットが認識できな
い。
*Dec 29 14:02:32.256: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 92, forward
*Dec 29 14:02:32.256: ICMP type=8, code=0
*Dec 29 14:02:32.260: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 14:02:32.260: ICMP type=11, code=0
*Dec 29 14:02:32.260: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 92, forward
*Dec 29 14:02:32.260: ICMP type=8, code=0
*Dec 29 14:02:32.260: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 14:02:32.260: ICMP type=11, code=0
*Dec 29 14:02:32.264: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 92, forward
*Dec 29 14:02:32.264: ICMP type=8, code=0
*Dec 29 14:02:32.264: IP: s=150.1.2.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 14:02:32.264: ICMP type=11, code=0
このデバッグ出力では、150.1.1.1 から 150.1.4.2 への ICMP プローブ が含まれてい
ます。
注: このプローブは TTL=2 です。これは、デバッグでは確認でき ません。Device 11A
は TTL を 1 に設定し、UDP パケットを Device 7A に 送信します。Device 7A は TTL
を 0 にして、ICMP "time exceeded" メッセ ージを戻します。
*Dec 29 14:02:37.776: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 92, forward
*Dec 29 14:02:37.776: ICMP type=8, code=0
*Dec 29 14:02:37.776: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 14:02:37.776: ICMP type=11, code=0
*Dec 29 14:02:37.780: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 92, forward
*Dec 29 14:02:37.780: ICMP type=8, code=0
*Dec 29 14:02:37.780: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 14:02:37.780: ICMP type=11, code=0
*Dec 29 14:02:37.780: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 92, forward
*Dec 29 14:02:37.780: ICMP type=8, code=0
*Dec 29 14:02:37.784: IP: s=150.1.3.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 56, forward
*Dec 29 14:02:37.784: ICMP type=11, code=0
このデバッグ出力には、後続の 3 つの ICMP プローブが含まれています。これ らのプ
ローブの TTL は 3 です。Device 11A は TTL を 2 に設定し、 Device 7A に転送しま
す。Device 7A は TTL を 1 に設定し、パケットを Device 7B に転送します。Device
7B は TTL を 0 に設定し、 ICMP "time exceeded" メッセージを戻します。
*Dec 29 14:02:43.292: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 92, forward
*Dec 29 14:02:43.292: ICMP type=8, code=0
*Dec 29 14:02:43.296: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 92, forward
*Dec 29 14:02:43.296: ICMP type=0, code=0
*Dec 29 14:02:43.296: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 92, forward
*Dec 29 14:02:43.296: ICMP type=8, code=0
*Dec 29 14:02:43.300: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 92, forward
*Dec 29 14:02:43.300: ICMP type=0, code=0
*Dec 29 14:02:43.300: IP: s=150.1.1.1 (Ethernet4/0), d=150.1.4.2 (FastEthernet0/0),
g=150.1.2.2, len 92, forward
*Dec 29 14:02:43.300: ICMP type=8, code=0
*Dec 29 14:02:43.304: IP: s=150.1.4.2 (FastEthernet0/0), d=150.1.1.1 (Ethernet4/0),
g=150.1.1.1, len 92, forward
*Dec 29 14:02:43.304: ICMP type=0, code=0
このデバッグ出力では、最後の 3 つの ICMP プローブが含まれています。 これらのプ
ローブの最初の TTL は 4 でした。Device 11A が TTL を 3 にし 、Device 7A が 2 に
し、Device 7B が 1 にして、Device 7C が 0 にしてい ます。Device 7C はプローブの
宛先のため、ICMP エコー応答メッセージ (type=0, code=0) を戻します。
注: ICMP エコー応答メッセージは、ICMP "port unreachable" メ ッセージのように、
制約を受けません。この場合、送信された 3 つの ICMP エコー応答メッセージがすべて
含まれています。
補足情報
Cisco ルータ での traceroute コマンドの応答コードは次の通りです。
! -- 成功
* -- タイムアウト
N -- ネットワークに到達不能
H -- ホストに到達不能
P -- プロトコルに到達不能
A -- Admin による拒否
Q -- Source Quench を受信(輻輳)
? -- 不明(他の ICMP メッセージ)
UNIX から traceroute コマンドを実行する場合には、次の点に注 意してください。
"traceroute: icmp socket: Permission denied" というメッセ ージを受信する可
能性がある。
traceroute プログラムは、ネットワーク内をスヌープするときに、 Network Interface
Tap (NIT) に依存する。このデバイスにアクセスでき るのは、root だけです。このプ
ログラムを root で実行するか、ユーザ ID に root 権限を設定する必要があります。
要約
この文書では、 traceroute コマンドを実行し、UDP および ICMP パケットを使用し て
特定の発信元から宛先までのパスを判別する方法について説明しました。 コマンドの出
力には、次のような ICMP メッセージが含まれます。
type=11, code=0(TTL が転送中に 0 になった場合)。パケットが宛 先に到達す
る前にプローブ パケットの TTL が 0 になると、パケットは転送 元のルータに戻
されます。
type=3, code=3(ポートに到達不能)。プローブ パケットが宛先に到 着したとき
に、UDP アプリケーションが定義されていないと、UDP プローブ パケットに応答
して、パケットが戻されます。このパケット数は、500 ms あ たり 1 パケットに
制限されています。このパケットには、宛先に到達できな かった理由が記述され
ています(Cisco ルータおよびLinux の出力例を参照)。Device 7C は ICMP メッ
セージを生成しません。また、 各デバイスの traceroute コマンド出力は 1 秒以
上経過してから生 成されます。MS Windows で traceroute コマンドを実行する
と、 UPD ポート 137 が Cisco ルータに存在しないため、ICMP メッセージが生成
されます。
type=8, code=0。エコー プローブ パケットが MS Windows PC から送 信されま
す。
type=0, code=0。宛先に到達したときに前のパケットが送信されます。 これは、
MS Windows の traceroute コマンドにだけ適用されます。
関連情報
テクニカルティップス : ルーティング プロトコル
IP ルーティング プロトコル サポートページ
pingとtracerouteコマンドの理解
1992 - 2010 Cisco Systems, Inc. All rights reserved.
Updated: December 01,2003
Document ID: 22826