traceroute コマンド

目的

IP パケットのネットワーク・ホストへの経路を出力します。

構文

traceroute [ -m Max_ttl ] [ -n ] [ -p Port ] [ -q Nqueries ] [ -r ] [ -s SRC_Addr ] [  -t TypeOfService ] [ -v ] [  -w WaitTime ] Host [ PacketSize ]

説明

重要: traceroute コマンドは、ネットワークの検査、計測、管理に使用するためのものです。 主に手作業で障害を分離するために使用してください。traceroute コマンドはネットワークに負荷をかけるため、通常の操作時や自動化スクリプトからは実行しないでください。

traceroute コマンドは、IP パケットがインターネット・ホストに向かう経路をトレースします。コマンドは、最大存続時間 (Max_ttl 変数) が小さい UDP プローブ・パケットを送信し、経路のゲートウェイからの ICMP TIME_EXCEEDED 応答を listen します。プローブは Max_ttl 値 1 ホップで始動され、ICMP PORT_UNREACHABLE メッセージが戻されるまで、その後一度に 1 ホップずつ増加されます。ICMP PORT_UNREACHABLE メッセージは、ホストを見付けたという内容か、または、コマンドがトレースに与えられた最大ホップ数に到達したという内容のいずれかです。

traceroute コマンドは、Max_ttl の設定ごとに 3 つのプローブを送信し、以下について記録します。

送信するプローブの数は、-q フラグを使用して増やすことができます。プローブの返答が異なったゲートウェイから入ってきた場合、コマンドはそれぞれの応答システムのアドレスを表示します。 3 秒のタイムアウト時間内にプローブからの応答がない場合、そのプローブについて * (アスタリスク) が出力されます。

traceroute コマンドは、Max_ttl の値が 1 ホップ以下の場合に、往復時間の後に ! (感嘆符) を表示します。 1 ホップ以下の最大存続時間の値は通常、ICMP の応答方法における何らかの非互換性についての問題が、異なったネットワークのソフトウェアで処理されたことを表します。この非互換性の問題は、普通は最後に使用した Max_ttl 値を倍にして再試行することにより解決できます。

往復表示の後に付けられるその他のコメントは以下のとおりです。

!H ホスト到着不可能
!N ネットワーク到着不可能
!P プロトコル到着不可能
!S 送信元経路指定障害
!F フラグメント化必要

プローブの過半数がエラーで終った場合は、traceroute コマンドは終了します。

traceroute コマンドに必要不可欠な唯一のパラメーターは、宛先ホスト名か IP 番号だけです。 traceroute コマンドは、発信インターフェースの最大伝送単位 (MTU) に基づいてプローブ・パケットの長さを判別します。 UDP のプローブ・パケットは、宛先ホストによって処理されるのを防ぐため、通常ではあり得ない値に設定されています。

フラグ

-m Max_ttl 出力プローブ・パケットに使用する最大存続時間 (ホップの最大数) を設定します。デフォルトは、(TCP 接続に使用されるデフォルトと同じ) 30 ホップです。
-n ホップ・アドレスを、記号と数値ではなく、数値で表示します。このフラグは、パス上で見付けた各ゲートウェイのネームサーバーのアドレス対名前の参照を保存します。
-p Port プローブに使用する基本 UDP ポート番号を設定します。デフォルトでは 33434 です。traceroute コマンドは、宛先ホストでの base から base + nhops - 1 のオープン UDP ポート範囲に依存します。UDP ポートが使用できない場合、このオプションを使って未使用ポート範囲を選び出すことができます。
-q Nqueries Max_ttl の設定ごとに traceroute コマンドが送信するプローブ数を指定します。デフォルトは 3 プローブです。
-r 通常の経路指定テーブルをバイパスし、プローブ・パケットを接続ネットワーク上のホストへ直接送信します。指定したホストが直接接続したネットワーク上にない場合、エラーが戻されます。このオプションを使い、routed デーモンの経路指定テーブルに登録されていないインターフェースを介して、ping コマンドをローカル・ホストに対して発行することができます。
-s SRC_Addr 数値形式で示された次の IP アドレスを出力プローブ・パケットの送信元アドレスとして使用します。複数の IP アドレスのあるホストでは、-s フラグを使って送信元アドレスを強制的にプローブ・パケットが送信されるインターフェースの IP アドレス以外にすることができます。次の IP アドレスがコンピューターのインターフェース・アドレスの 1 つでない場合は、エラーが戻され、何も送信されません。
-t TypeOfService プローブ・パケットの TypeOfService 変数を 0 から 255 の範囲の 10 進整数値に設定します。デフォルトは 0 です。このフラグを使って、サービス・タイプが異なると、異なるパスになるかどうか調査することができます。便利な値は、-t 16 (低遅延) と -t 8 (高スループット) です。
-v TIME_EXCEEDED および PORT_UNREACHABLE (詳細出力) 以外のパケットを受け取ります。
-w WaitTime プローブに対する応答待ち時間 (秒) を設定します。デフォルトは 3 秒です。

パラメーター

Host 宛先ホストをホスト名または IP 番号で指定します。このパラメーターは必須です。
PacketSize プローブのデータグラム長を指定します。デフォルト・パケット・サイズは、発信インターフェースの MTU に基づいて traceroute により判別されます。

  1. 使用例と出力例を以下に示します。

    [yak 71]% traceroute nis.nsf.net.
    traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 56 byte packet
     1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
     2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
     3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
     4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms
     5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms
     6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms
     7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms
     8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms
     9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms
    10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms
    11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms

    行番号 2 と 3 は同じですが、これは存続時間ゼロのパケットを送信する 2 番目のホップ・システム (lbl-csam.arpa) 上のカーネルにバグがあることに起因しています。行番号 6 から 10 にはホスト名が表示されていませんが、これは National Science Foundation Network (NSFNet, 129.140) がこのノードのためのアドレス - 名前の変換を提供していないことによります。

  2. 別の出力例を以下に示します。

    [yak 72]% traceroute rip.Berkeley.EDU (128.32.131.22)
    traceroute to rip.Berkeley.EDU (128.32.131.22), 30 hops max
     1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
     2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms
     3 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 39 ms 19 ms
     4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 19 ms
     5 ccn-nerif35.Berkeley.EDU (128.32.168.35) 39 ms 39 ms 39 ms
     6 csgw/Berkeley.EDU (128.32.133.254) 39 ms 59 ms 39 ms
     7 * * *
     8 * * *
     9 * * *
    10 * * *
    11 * * *
    12 * * *
    13 rip.Berkeley.EDU (128.32.131.22) 59 ms! 39 ms! 39 ms!

    この例では、12 のゲートウェイ・ホップ (13 番目は最終宛先) のちょうど半分がありません。しかし、実際はこれらのホップはゲートウェイではありません。宛先ホストである Sun OS3.5 を実行している Sun-3 ワークステーションが、到着データグラムの ttl をその ICMP 応答の ttl として使用したため、戻りパス上で応答がタイムアウトになりました。 ICMP は ICMP に対しては送信されないので、何の通知も受け取りません。それぞれの往復時間の後の ! (感嘆符) は、ソフトウェアになんらかの互換性上の問題があることを示します。 (原因は、traceroute コマンドがパス長の 2 倍の長さのプローブを出した後に診断されます。宛先ホストは実際には単に 7 ホップ先でした。)

関連情報

netstat コマンド、ping コマンド