traceroute - パケットの旅路を地図にする
ping が「相手に届くか」を確認するツールなら、traceroute は「どの道を通って届くか」を可視化するツールです。あなたがIP 確認さんにアクセスしたとき、パケットは自宅のルーターから ISP、IX (Internet Exchange Point)、海底ケーブル、データセンターと、何十ものネットワーク機器を経由しています。traceroute は、その経路上の各ホップ (中継点) の IP アドレスと遅延を一覧表示します。
TTL トリック - 巧妙な仕組み
traceroute の動作原理は、IP パケットの TTL (Time To Live) フィールドを巧みに利用したものです。
TTL は、パケットがルーターを通過するたびに 1 ずつ減算されるカウンターです。TTL が 0 になると、そのルーターはパケットを破棄し、送信元に ICMP Time Exceeded メッセージを返します。この仕組みは、パケットがネットワーク上で永遠にループすることを防ぐために設計されました。
traceroute は、この仕組みを逆手に取ります。
- TTL=1 のパケットを送信 → 最初のルーターで TTL が 0 になり、そのルーターが ICMP Time Exceeded を返す → 1 番目のホップの IP アドレスと遅延が判明
- TTL=2 のパケットを送信 → 2 番目のルーターで TTL が 0 になる → 2 番目のホップが判明
- TTL=3, 4, 5... と順に増やしていき、最終的に宛先に到達するまで繰り返す
この「TTL を 1 ずつ増やす」というシンプルなアイデアが、ネットワーク経路の可視化を可能にしています。
traceroute と tracert - Unix と Windows の違い
Unix/Linux/macOS では traceroute、Windows では tracert というコマンド名です。名前だけでなく、デフォルトの動作も異なります。
- Unix の traceroute: デフォルトで UDP パケットを使用する。宛先ポートを 33434 から順に増やしながら送信し、宛先に到達すると ICMP Port Unreachable が返る
- Windows の tracert: デフォルトで ICMP Echo Request を使用する。ping と同じプロトコルを使うため、ICMP をブロックするファイアウォールの影響を受けやすい
Unix の traceroute は -I オプションで ICMP モード、-T オプションで TCP モードに切り替えられます。ファイアウォールが UDP や ICMP をブロックしている環境では、TCP モード (ポート 80 や 443) が有効です。
traceroute の出力を読み解く
典型的な traceroute の出力は以下のようになります。
1 192.168.1.1 1.2 ms 0.9 ms 1.1 ms2 10.0.0.1 5.3 ms 4.8 ms 5.1 ms3 203.0.113.1 12.4 ms 11.9 ms 12.2 ms4 * * *5 198.51.100.1 85.3 ms 84.7 ms 85.1 ms6 93.184.216.34 90.2 ms 89.8 ms 90.5 ms
- ホップ 1: 自宅のルーター。遅延は約 1 ms で、ローカルネットワーク内の通信
- ホップ 2-3: ISP のネットワーク内のルーター。遅延が徐々に増加
- ホップ 4 の「* * *」: このルーターが ICMP Time Exceeded を返さない設定になっている。パケットは通過しているが、応答がないだけ。障害ではない
- ホップ 5: 遅延が急増 (12 ms → 85 ms)。ここで海底ケーブルを横断している可能性が高い
- ホップ 6: 宛先サーバー
各ホップで 3 回の測定が行われるのは、ネットワークの遅延は変動するため、複数回の測定で信頼性を高めるためです。
traceroute で見える「インターネットの地理」
traceroute の結果から、パケットの物理的な経路を推測できます。
- 遅延の急増: 大陸間の海底ケーブルを横断するホップでは、遅延が数十 ms 単位で急増する。東京→ロサンゼルスで約 50-60 ms、東京→ロンドンで約 100-120 ms の増加が典型的
- ホスト名の地名: 多くの ISP やキャリアは、ルーターのホスト名に都市名を含めている。
tky(東京)、lax(ロサンゼルス)、ams(アムステルダム) などの略称から、パケットの地理的な経路を読み取れる - AS 番号:
traceroute -a(Linux) で各ホップの AS (Autonomous System) 番号を表示できる。AS 番号から、パケットがどの組織のネットワークを通過しているかが分かる
traceroute の限界と注意点
- 非対称経路: 行きと帰りのパケットが異なる経路を通ることがある。traceroute は行きの経路しか表示しない
- MPLS トンネル: ISP が MPLS (Multi-Protocol Label Switching) を使用している場合、トンネル内のホップが見えないことがある
- ロードバランサー: 同じ宛先への traceroute を複数回実行すると、異なる経路が表示されることがある。ロードバランサーがパケットを異なるパスに振り分けるため
- レート制限: ルーターが ICMP Time Exceeded の送信をレート制限している場合、遅延が実際より大きく表示される
まとめ
traceroute は、TTL という単純な仕組みを利用して、パケットの経路を可視化する優れたツールです。IP 確認さんで確認した IP アドレスへの経路を traceroute で辿ってみると、自分のパケットがどの ISP、どの都市、どの海底ケーブルを経由しているかが見えてきます。インターネットの「地図」を自分の目で確認する体験は、ネットワークへの理解を一段深めてくれるはずです。
ネットワーク診断ツールの使い方を学びたい方には、ネットワーク管理の入門書が参考になります。