ストーリー
traceroute とは
一言で言うと
パケットが相手に届くまでの経路(通過するルーター)を表示するコマンド
[あなたのPC] → [ルーター1] → [ルーター2] → [ルーター3] → [相手のサーバー]
各ルーターを「ホップ」と呼び、何ホップで到達したかが分かります。
基本的な使い方
Linux / Mac
traceroute 対象
Windows
tracert 対象
実行例
traceroute 8.8.8.8
出力例:
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 gateway (192.168.1.1) 1.234 ms 1.112 ms 1.089 ms
2 10.0.0.1 5.432 ms 5.321 ms 5.234 ms
3 isp-router.example.net 8.765 ms 8.654 ms 8.543 ms
4 72.14.232.136 12.345 ms 12.234 ms 12.123 ms
5 dns.google (8.8.8.8) 3.456 ms 3.345 ms 3.234 ms
出力の読み方
各行の意味
graph LR
A["3\nホップ番号"] --- B["isp-router.example.net\nルーターのホスト名"] --- C["203.0.113.1\nルーターのIP"] --- D["8.765 / 8.654 / 8.543 ms\n3回の応答時間"]
style A fill:#dbeafe,stroke:#2563eb,color:#1e40af
style B fill:#d1fae5,stroke:#059669,color:#065f46
style C fill:#fef3c7,stroke:#d97706,color:#92400e
style D fill:#fee2e2,stroke:#dc2626,color:#991b1b
- ホップ番号: 何番目のルーターか
- ホスト名 / IP: そのルーターの情報
- 応答時間: 3回パケットを送り、各回の応答時間を表示
特殊な表示
4 * * *
* * * は応答がなかったことを意味します。
原因:
- ルーターがICMPに応答しない設定
- ファイアウォールでブロックされている
- パケットが到達しなかった
traceroute の仕組み
traceroute は TTL(Time To Live) を利用して経路を調べます。
仕組み
Step 1: TTL=1 のパケットを送信
→ 1番目のルーターが「TTL切れ」エラーを返す
→ 1番目のルーターが判明
Step 2: TTL=2 のパケットを送信
→ 2番目のルーターが「TTL切れ」エラーを返す
→ 2番目のルーターが判明
Step 3: TTL=3 のパケットを送信
→ 目的地に到達
→ 経路の調査完了
TTLを1ずつ増やしながら送ることで、通過するルーターを1つずつ特定していきます。
traceroute の活用場面
遅延の原因箇所を特定
1 gateway (192.168.1.1) 1 ms
2 isp-router 5 ms
3 backbone-router 50 ms ← ここで急に遅くなっている!
4 remote-router 200 ms
5 target-server 205 ms
3番目のルーターで応答時間が急増しているので、そこに問題がありそうだと分かります。
接続できない場所を特定
1 gateway (192.168.1.1) 1 ms
2 isp-router 5 ms
3 * * * ← ここから先に進めない
4 * * *
5 * * *
3番目以降で応答がないので、ISPのルーターとその先の間に問題がありそうだと推測できます。
netstat / ss コマンド(補足)
自分のコンピュータのネットワーク接続状況やポートの使用状況を確認するコマンドです。
ss コマンド(Linux / 推奨)
# 現在の接続一覧
ss -tuln
出力例:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:443 0.0.0.0:*
- ポート22(SSH)、80(HTTP)、443(HTTPS)で待ち受けていることが分かる
オプションの意味
| オプション | 意味 |
|---|---|
| -t | TCPの接続を表示 |
| -u | UDPの接続を表示 |
| -l | LISTEN状態(待ち受け中)を表示 |
| -n | ポート番号を数字で表示 |
トラブルシューティングの流れ
「Webサイトにアクセスできない」と言われたときの調査手順:
Step 1: ping localhost
→ 自分のネットワークスタックは正常?
Step 2: ping ルーター(192.168.1.1 など)
→ LAN内の接続は正常?
Step 3: ping 8.8.8.8
→ インターネットには接続できる?
Step 4: nslookup 対象ドメイン
→ DNS の名前解決はできる?
Step 5: traceroute 対象
→ 経路のどこに問題がある?
Step 6: curl 対象URL
→ HTTPレベルで問題がある?
このステップを順番に試すことで、問題の箇所を絞り込めます。
まとめ
| ポイント | 内容 |
|---|---|
| traceroute | パケットの経路を追跡するコマンド |
| ホップ | パケットが通過するルーターの数 |
| * * * | 応答がない(ブロックされているか到達できない) |
| トラブルシュート | ping → nslookup → traceroute → curl の順 |
チェックリスト
- traceroute の基本的な使い方が分かる
- 出力結果の読み方(ホップ、応答時間)を理解した
- - - - の意味を知っている
- トラブルシューティングの手順を理解した
次のステップへ
traceroute と診断の流れが分かりましたね。
次は演習です。ネットワーク診断コマンドを使って、実際の問題を調査してみましょう。
推定読了時間: 25分