| ライター翻訳版 - December 1, 2003 |
| 機械翻訳版 - August 10, 2005 |
| 英語版 - August 10, 2005 |
| Document ID: 22826 |
目次
概要
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 で終了しています。
異なるプローブを区別するために、Cisco ルータは、発信元ポートをラン ダムに設定し、宛先ポートを増分して UDP プローブ パケットを送信します。 Cisco ルータは、UDP/ICMP パケットの送信元ポートの発信元アドレスを付け て、"time to live exceeded in transit" という ICMP メッセージを送信し ます。 Linux の traceroute コマンドは Cisco ルータの実装に類似していますが、このコマンドが使用する発信元ポートは決められています。 traceroute コマンドに -n オプションを指定すると、ネーム サーバに対する要求を回避することができます。 Microsoft WindowsMS 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 次の表では、このコマンド パラメータについて説明します。
|
||||||||||||
| 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 プローブが含まれていません。
このデバッグ出力では、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 プ ローブが含まれていません。
このデバッグ出力では、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 プ ローブが含まれていません。
このデバッグ出力では、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 コマンドを実行し、UDP および ICMP パケットを使用し て特定の発信元から宛先までのパスを判別する方法について説明しました。 コマンドの出力には、次のような ICMP メッセージが含まれます。
|
