2026年5月24日

2026年5月24日

traceroute / tracert で経路を調査する方法|「* * *」や遅延の正しい読み方

traceroute(Windows では tracert)は、目的のホストまでにパケットがどのルーターを経由しているかを1段ずつ表示するコマンドです。「どこで通信が止まっているか」「どこから遅くなっているか」を調べるのに使えますが、出力には誤解しやすい点がいくつもあります。この記事では、OS ごとの使い方、仕組み、* * * や途中の遅延の読み方、ICMP が止められた環境で TCP を使って調べる方法までを説明します。

traceroute の仕組み

IP パケットには TTL(IPv6 では Hop Limit)という値があり、ルーターを1台通るたびに1ずつ減ります。0 になったパケットは捨てられ、捨てたルーターは送信元に ICMP の「Time Exceeded」を返します。

traceroute はこの性質を利用して、TTL=1、2、3…と増やしながらパケットを送ります。TTL=1 なら最初のルーター、TTL=2 なら2台目のルーターがエラーを返すので、返ってきたエラーの送信元を並べると経路の一覧になります。目的のホストに着いた段階で、相手からの応答(ICMP Echo Reply、Port Unreachable、TCP の応答など)が戻って終了します。

送るパケットの種類は実装によって異なります。

  • Linux / macOS の traceroute:既定は UDP(高い番号のポート宛て)。-I で ICMP、Linux 版では -T で TCP に切り替えられます。
  • Windows の tracert:ICMP Echo Request を使います。
  • Linux の tracepath:UDP を使い、root 権限なしで動きます。経路上の MTU も表示します。

この違いは重要です。経路上のファイアウォールが UDP を止めていれば Linux の traceroute は途中で途切れ、ICMP を止めていれば tracert が途切れます。片方の結果だけで判断しないことが、正しく読むための第一歩です。

基本の使い方

Linux ではディストリビューションによって traceroute が入っていないことがあります。Debian / Ubuntu 系なら traceroute パッケージ、RHEL 系でも同名のパッケージで導入できます(パッケージ名は2026年10月現在のもので、ディストリビューションにより異なる場合があります)。

# Debian / Ubuntu
sudo apt install traceroute

# RHEL / AlmaLinux / Rocky Linux
sudo dnf install traceroute

# 基本形(名前解決をしない -n を付けると速く、見やすい)
traceroute -n example.com

# ICMP で調べる(Windows の tracert と同じ方式)
sudo traceroute -I -n example.com

# 最大ホップ数と1ホップあたりの試行回数を指定
traceroute -n -m 20 -q 3 example.com

# root 不要で MTU も分かる
tracepath -n example.com

Windows ではコマンドプロンプトや PowerShell で tracert を使います。

rem 名前解決をしない(-d)と結果が早く出る
tracert -d example.com

rem 最大ホップ数 20、各応答の待ち時間 1000 ミリ秒
tracert -d -h 20 -w 1000 example.com

既定の最大ホップ数はどちらも 30 です。国内のサーバーなら通常は 10〜20 ホップ程度で到達します。

出力の読み方

Linux の traceroute の出力例です(アドレスは説明用)。

 1  192.168.1.1  0.512 ms  0.433 ms  0.401 ms
 2  * * *
 3  198.51.100.1  6.812 ms  6.705 ms  6.950 ms
 4  198.51.100.33  7.320 ms  45.110 ms  7.204 ms
 5  203.0.113.5  12.044 ms  11.982 ms  12.101 ms
 6  192.0.2.10  12.330 ms  12.210 ms  12.287 ms

各行が1ホップで、左から順番、ルーターのアドレス、3回分の往復時間です。1行目は通常、自分のネットワークのデフォルトゲートウェイです。

「* * *」は故障とは限らない

* は「時間内に返事がなかった」という意味です。上の例の2行目は返事がありませんが、3行目以降は応答しています。これは、そのルーターが Time Exceeded を返さない設定になっている、あるいは ICMP の送信数を制限しているだけで、パケット自体は先へ転送されていることを示します。

本当に問題なのは、**ある段から先がすべて * になり、目的地まで一度も応答がない**場合です。その場合、最後に応答したルーターの先で、パケットが捨てられているか、経路が途切れているか、ファイアウォールが調査用のパケットを止めている可能性があります。

途中の遅延は最終地点と合わせて判断する

上の例の4行目には 45 ms という突出した値がありますが、5行目と6行目は 12 ms 前後に戻っています。ルーターにとって、自分宛ての ICMP エラーを作る処理は優先度が低く、転送処理とは別に扱われることが多いため、途中のホップだけが遅く見えることはよくあります。

遅延が本物かどうかは、そのホップ以降のすべてで値が高いまま続くかで判断します。ある段から先がそろって遅くなっていれば、その付近の回線が混雑している可能性があります。

末尾の記号

Linux の traceroute では、時間の代わりに !H(ホスト到達不能)、!N(ネットワーク到達不能)、!X(管理上の理由で通信禁止)などが表示されることがあります。!X はファイアウォールが明示的に拒否しているサインで、経路の故障ではなく設定の問題です。

ICMP や UDP が止められている環境では TCP で調べる

クラウドのセキュリティグループや企業のファイアウォールでは、UDP の高い番号のポートや ICMP が止められていることがあります。その場合、実際に使うポートに TCP で調査パケットを送ると、Web サーバーまでの経路が見えることがあります。

# 443番ポート宛ての TCP SYN で経路を調べる(root 権限が必要)
sudo traceroute -T -p 443 -n example.com

Windows の tracert には TCP モードがありません。PowerShell の Test-NetConnection に -TraceRoute を付けると経路を表示できますが、方式は ICMP です。TCP で経路を見たい場合は、Linux のサーバーやWSL から調べるほうが手早いです。

経路調査を役立てるコツ

反対方向からも調べる

インターネットの経路は行きと帰りで異なることがよくあります(非対称経路)。自分 → サーバーの traceroute がきれいでも、サーバー → 自分の帰り道で問題が起きていることがあります。サーバーにログインできるなら、サーバー側からも自分の回線のグローバル IP に向けて traceroute を実行してください。

正常なときの結果を残しておく

経路は日常的に変わります。障害時の結果だけを見ても、どのホップが普段と違うのか判断できません。自分が管理するサーバーへの経路は、正常時の traceroute 結果をテキストで保存しておくと比較に使えます。

継続的に見るなら mtr

traceroute は一瞬の様子しか分かりません。各ホップの損失率と遅延を継続的に集計したい場合は、traceroute と ping を組み合わせた mtr が便利です。

# 100回分を集計してレポート表示
mtr -n -r -c 100 example.com

mtr でも、途中ホップだけの損失は ICMP の制限によることが多く、読み方の考え方は traceroute と同じです。

問い合わせるときに添える

プロバイダーやホスティング会社に問い合わせる場合は、実行日時、送信元と宛先、使ったコマンドとオプション、正常時と障害時の結果を添えると話が早く進みます。

注意点

  • 途中のルーターのアドレスは、その事業者の内部情報です。公開の場に貼る場合は、自分の回線のグローバル IP なども含めて必要に応じて伏せてください。
  • 他人のネットワークに対して高頻度で調査を繰り返すのは避けてください。
  • オプションの文字や既定値は実装・バージョンで異なります。man traceroute や tracert /? で手元の環境を確認してから使ってください。

まとめ

  • traceroute は TTL を1ずつ増やして、各ルーターが返すエラーから経路を割り出す
  • Linux / macOS は既定で UDP、Windows の tracert は ICMP を使うため、止められているプロトコルによって結果が変わる
  • 途中の * * * や一時的な遅延は、その先が応答していれば問題ではないことが多い
  • 問題を疑うのは、ある段から先がすべて応答しない、またはすべて遅くなる場合
  • ICMP や UDP が止められている環境では traceroute -T -p 443 のように TCP で調べ、反対方向からの調査や mtr も組み合わせる

お気軽にご相談ください

お見積りへ お問い合わせへ
▲