Linux / コマンド / traceroute - 目的地までのルーター経路追跡
tracerouteは、IPv4のTTL(Time To Live)またはIPv6のホップ制限を段階的に増やして、宛先への経路上で応答するルーターなどを調べます。TTLは途中のルーターを通るたびに減る値で、その期限切れへの応答を手掛かりにします。ホップごとの応答や遅延の現れ方を比較できます。
各ホップの応答は診断パケットに対する結果であり、アプリが実際に使う経路を確定するものではありません。ここで扱うTraceroute for Linuxは、既定でUDP(User Datagram Protocol)を使います。-IはICMP(Internet Control Message Protocol)のEcho、-TはTCP(Transmission Control Protocol)の接続開始要求(SYN)を使う探索です。方式や権限の条件は、利用する実装の説明書で確認してください。
基本的な文法
traceroute [オプション] 宛先
インストールされている実装とオプションは、配布版によって異なる場合があります。man tracerouteで現在のシステムの説明を確認してください。
使用例
基本経路追跡
example.comは説明用ドメインなので、調査してよい実際のホストに置き換えます。経路上で応答した機器と、それぞれへの往復時間を表示します。
traceroute example.com
数字アドレスで表示
出力アドレスをホスト名へ逆引きする処理を省きます。ただし、宛先をホスト名で指定した場合は、その名前をIPアドレスに解決する処理が必要です。
traceroute -n example.com
ICMPプローブ選択
基本のUDP方式で応答が制限される場合、他の方式で比較します。
traceroute -I example.com
ホップごとの応答の読み方
tracerouteはTTLを変えた検出パケットで目的地までのホップを調査します。次は数字のIPで出力してホスト名への逆引きによる遅延を減らす例です。
traceroute -n example.com
出力構造の例(実際の経路・時間は毎回異なります):
1 192.0.2.1 1.0 ms 0.9 ms 1.1 ms
2 * * *
1行は1ホップの探索を表し、既定では3回の探索それぞれの往復時間が並びます。この値は送信元からそのホップまでの往復であり、前のホップから次のホップへの区間時間ではありません。*は、その探索への応答を待ち時間内に得られなかったことを示します。後続ホップが表示されるなら、その機器だけが診断応答を制限している可能性もあります。往路と復路が異なる場合もあるため、この結果だけで障害機器を断定しないでください。
主なオプションと形式
| オプション・形式 | 説明 |
|---|---|
-n |
アドレスは数字で表示します。 |
-I |
ICMP Echoプローブを使用します。 |
-T |
TCPプローブを使用します。 |
-m ホップ |
最大ホップ数を制限します。 |
-q 回数 |
ホップごとに送信するプローブ数を指定します。 |
-w 時間 |
応答待ち時間を調整します。 |
使用する際の注意点
あるホップで * が表示されても、次のホップが引き続き表示される場合、そのルーターの診断応答のみが制限されている可能性があります。ある区間で往復時間(RTT:Round Trip Time)が増えただけでボトルネックと断定せず、最終目的地の応答と繰り返し測定を比較してください。一部のプローブ方式では追加の権限が必要です。経路MTUも調べる場合は、tracepathによる経路とMTUの確認を併用できます。
よくある質問
中間ホップが * と表示される場合、パケットはそこで途切れたのでしょうか?
いいえ。そのルーターが TTL 期限切れ応答を送信していないか、制限している可能性があります。その後のホップや目的地の応答を合わせて確認してください。
公式ドキュメント
オプションの正確な動作と実装による差は、traceroute 関連公式ドキュメントで確認できます。




