1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

tracerouteの仕組みを "TTLの球投げ" から理解する(初心者向け)

Posted at

🎯 この記事でわかること

  • 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ずつ増やしながらパケットを送信することです。

🔁 実際の流れ

  1. TTL=1 のパケットを送る

    • 最初のルーターで TTL=0 → ICMP Time Exceeded が返ってくる
  2. TTL=2 を送る

    • 2番目のルーターで TTL=0 → また ICMP が返ってくる
  3. …以下繰り返し

$ 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に対する制限が存在する(→ * * *

ご意見・補足コメント、体験談など大歓迎です!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?