🎯 この記事でわかること
-
traceroute
コマンドの動作原理 - TTL(Time To Live)って何か?
- ICMPとの関係や、なぜ「* * *」が表示されるのか
- traceroute の通信がファイアウォールでブロックされる理由
- TCPを使うtracerouteや、IPv6との違い
- 攻撃に使われるケースとその防御手段
traceroute ってなに?
ざっくり言うと:
traceroute は、ネットワークを通過するルーターを順番に可視化するツールです。
つまり、どの経路を通ってパケットが届いているのかを、TTLという仕組みを使って調べることができます。
使用されるプロトコル
traceroute は OS によって以下のプロトコルを使い分けます:
OS / コマンド | 使用プロトコル | 補足 |
---|---|---|
Windows (tracert ) |
ICMP Echo | pingと同じ仕組み |
Linux (traceroute ) |
UDP (デフォルト) | 任意ポートを送る |
Linux (traceroute -T ) |
TCP SYN | ファイアウォール通過向け(ポート80や443など) |
ICMP ってなに?
ping でもおなじみ、ICMPは制御専用のL3プロトコルです。
- ポート番号を持たない(=L4非依存)
- 軽量でシンプル
- データ通信ではなく通知用途(エラー・確認)
🎳 traceroute の仕組み:「球を投げまくる」
traceroute のコアは TTL(Time To Live)を1ずつ増やしながらパケットを送信することです。
🔁 実際の流れ
-
TTL=1 のパケットを送る
- 最初のルーターで TTL=0 → ICMP Time Exceeded が返ってくる
-
TTL=2 を送る
- 2番目のルーターで TTL=0 → また ICMP が返ってくる
-
…以下繰り返し
$ traceroute google.com
traceroute to google.com (2404:6800:4004:821::200e), 30 hops max
1 home.router (192.168.1.1) 1.2 ms
2 * * * ← 応答を返さないルーター(ICMP無視)
3 isp.gateway (203.0.113.1) 12.3 ms
...
13 google.com (2404:6800:...) 18.4 ms
応答が返ってこない理由 : 「* * *」の正体
ICMPは軽量・便利な一方で、攻撃にも悪用されやすいため、以下のような対策が取られていることがあります。
- 企業やISPが ICMP Time Exceeded を遮断
- ファイアウォールやルーターが ICMPへの応答を返さない
- ルーティング途中のノードが応答を省略
この場合、traceroute の出力に * * *
とだけ表示されます。
これは「応答が返ってこなかった(けど通ってる可能性はある)」というサインです。
攻撃に使われる ICMP の例(補足)
攻撃名 | 概要 |
---|---|
ICMP Flood | 大量のICMPリクエストでターゲットのCPU資源を枯渇させるDoS攻撃 |
Ping of Death | 異常に長いパケットを送りバッファオーバーフローを狙う攻撃 |
Smurf Attack | ブロードキャストアドレスと送信元詐称を組み合わせたDOS攻撃 |
こういった攻撃リスクがあるため、ICMPを抑制するネットワーク設計も多く見られます。
traceroute とレイヤーの関係
通信スタックで見ると、traceroute は以下のレイヤーをまたいで機能します:
- L3(ネットワーク層):TTL処理・ICMP生成(ここがtracerouteのコア)
- L4(トランスポート層):UDP or TCP を用いた送信(Linuxの挙動)
-
L7(アプリケーション層):
traceroute
コマンドとしての操作
💡 IPv6ではTTLの代わりに「Hop Limit」というフィールド名が使われます。機能は同一です。
オプション豆知識(Linux 版 traceroute)
オプション | 説明 |
---|---|
-n |
ホスト名の逆引きをスキップして高速表示 |
-T |
TCPベースのtracerouteに切り替え(ポート80など) |
-p <port> |
任意のポート番号を指定(UDP/TCP共通) |
-I |
ICMPモードを強制(要root権限) |
感想 : 「球を投げて返ってくる」しくみを知ろう
traceroute はただの経路表示ツールではなく、ネットワークの応答とルールを観察するための“実験装置”でもあります。
「TTLでホップを制御し、ICMP Time Exceeded を返してもらう」
たったこれだけのことで、見えないはずのルーティングの“中身”を可視化できるわけです。
トンネルの中を懐中電灯で照らして、次の壁まで何歩か?を測っているようなツール
それがtraceroute
です。
関連する調査コマンド(次回予告?)
-
ping
:単純な疎通確認(ICMP Echo) -
telnet
:TCPポートが空いているかを手動で確認 -
mtr
:pingとtracerouteの融合(リアルタイムで経路観察)
✅ まとめ
-
traceroute
は TTL と ICMP を使って ネットワーク経路を可視化するツール - 応答が返らないのは ファイアウォール・ポリシーやセキュリティ制限の可能性
- TTLとICMPの挙動を知ることで、ネットワークの内部構造を“見える化”できる
- 攻撃にも使われるため、ICMPに対する制限が存在する(→
* * *
)
ご意見・補足コメント、体験談など大歓迎です!