Linuxのtracerouteコマンド使い方|経路調査とオプション一覧

コマンドリファレンス

traceroute は、Linuxで指定したホストまでの通信経路(経由するルーターやゲートウェイ)を1ホップずつ表示するコマンドです。まずはこれだけ覚えれば使えます。

traceroute example.com

ping で「繋がらない」ことは分かっても「どこで途切れているか」までは分かりません。traceroute を使うと、自宅のルーター・プロバイダ・中継サーバーのどこで通信が止まっているかを切り分けられます。

インストール方法

ディストリビューションによっては traceroute コマンドが標準では入っていません。「command not found」と表示された場合は、以下でインストールします。

ディストリビューションインストールコマンド
Ubuntu / Debiansudo apt install traceroute
CentOS / RHELsudo yum install traceroute
Fedorasudo dnf install traceroute
Arch Linuxsudo pacman -S traceroute

構文(Syntax)

traceroute [オプション] ホスト名またはIPアドレス

traceroute の仕組み(TTLとICMP)

traceroute は、パケットの TTL(Time To Live) を1から順に増やしながら送信することで、経路上のルーターを1台ずつ検出します。

  • TTL=1のパケットを送ると、最初のルーターがTTLを0にして破棄し、送信元へ「Time Exceeded」というICMPエラーを返す
  • このエラーを返したルーターのIPアドレスと応答時間を1行目として記録する
  • TTL=2、TTL=3…と1つずつ増やして同じ処理を繰り返し、宛先ホストに到達するまでホップを積み上げていく

デフォルトではUDPパケットを使用しますが、環境やオプションによりICMP(-I)やTCP(-T)を使う方式に切り替えられます。ファイアウォールでUDPが遮断されている環境では、この切り替えが有効です。

主なオプション一覧

オプション説明使用例
-nホスト名を解決せずにIPアドレスのみ表示(応答が速くなる)traceroute -n example.com
-w 秒数応答のタイムアウト秒数を指定traceroute -w 2 example.com
-q 回数各ホップに送信するパケット数(デフォルト3)traceroute -q 1 example.com
-m TTL最大ホップ数(デフォルト30)traceroute -m 20 example.com
-f TTL調査を開始する最初のTTL(デフォルト1)traceroute -f 5 example.com
-IICMP Echo Requestを使用(pingと同様の方式)sudo traceroute -I example.com
-TTCP SYNパケットを使用(UDP/ICMPが遮断された環境向け)sudo traceroute -T -p 443 example.com
-p PORTTCP/UDPの宛先ポートを指定traceroute -T -p 80 example.com
-4IPv4を強制的に使用traceroute -4 example.com
-6IPv6を強制的に使用traceroute -6 example.com

実行例

基本的な経路調査

traceroute example.com

出力例:

traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  0.456 ms  0.412 ms  0.398 ms
 2  203.0.113.1 (203.0.113.1)  5.321 ms  5.287 ms  5.240 ms
 3  198.51.100.2 (198.51.100.2)  12.123 ms  12.099 ms  12.088 ms
 4  93.184.216.34 (93.184.216.34)  20.456 ms  20.432 ms  20.401 ms

ホスト名解決を省略して高速化

traceroute -n example.com

出力例:

1  192.168.1.1  0.456 ms  0.412 ms  0.398 ms
2  203.0.113.1  5.321 ms  5.287 ms  5.240 ms
3  198.51.100.2  12.123 ms  12.099 ms  12.088 ms
4  93.184.216.34  20.456 ms  20.432 ms  20.401 ms

IPv4 / IPv6 を指定して調査

traceroute -4 example.com
traceroute -6 example.com

ICMPモードでの経路調査

sudo traceroute -I example.com

TCP SYNパケットを使用(ファイアウォール回避用)

sudo traceroute -T -p 443 example.com

UDPやICMPがファイアウォールで遮断されている環境でも、443番ポート宛のTCP SYNなら通ることが多いため、経路調査ができる可能性が高くなります。

最大ホップ数を制限して調査

traceroute -m 10 example.com

エラー例(DNS解決できない場合)

traceroute unknown.host

出力例:

traceroute: unknown.host: Name or service not known

出力の読み方

各行は「ホップ番号」「IPアドレス(またはホスト名)」「3回分の応答時間(RTT)」の順に表示されます。

  • 応答時間が急に大きくなるホップ:そのルーター区間で遅延が発生している可能性が高い
  • 特定のホップだけ * * *(アスタリスク)が並ぶ:そのルーターがICMP応答を返さない設定(多くは意図的なブロック)で、必ずしも通信断とは限らない
  • 最後のホップまで * * * が続く:宛先または途中の経路で応答がすべて拒否されている、あるいは実際に到達できていない

うまく動かないときの対処法

command not found と表示される

traceroute パッケージが未インストールです。「インストール方法」の章のコマンドを実行してください。パッケージを入れずにすぐ使いたい場合は、標準搭載されていることが多い tracepath example.com(root権限不要)や mtr example.com でも代用できます。

Operation not permitted / 権限エラーが出る

-I(ICMP)や -T(TCP)オプションはRAWソケットを使うため、root権限が必要な場合があります。sudo を付けて実行してください。デフォルトのUDPモードであれば、root権限なしで動作する環境がほとんどです。

すべてのホップが * * * になる

途中経路やクラウド事業者のファイアウォールでUDP/ICMPが遮断されているケースが多いです。-I(ICMPモード)や -T -p 443(TCP SYNモード)に切り替えると経路が見えることがあります。

traceroute / ping / mtr の違い

コマンド用途特徴
ping宛先ホストへの疎通確認「繋がるか・繋がらないか」だけを確認。経路は分からない
traceroute宛先までの経路(ホップ)を1つずつ確認どのルーターで遅延・断絶しているかを切り分けられる
mtrpingとtracerouteをリアルタイムに統合各ホップの応答時間・パケットロス率を継続的に監視できる

よくある質問

Windowsの tracert との違いは?

Windowsの tracert はデフォルトでICMPを使用しますが、Linuxの traceroute はデフォルトでUDPを使用します。表示される情報の見方はほぼ同じです。

Macでも同じコマンドが使える?

macOSにも traceroute が標準搭載されており、基本的なオプション(-n-m など)はLinuxと共通です。一部のオプション(-T など)は環境によって非対応の場合があります。

sudo(root権限)は必須?

デフォルトのUDPモードでは不要です。-I(ICMP)や -T(TCP)オプションを使う場合はRAWソケットが必要になるため、sudo を付けて実行してください。

nslookup や dig との違いは?

nslookupdig はDNSの名前解決結果を調べるコマンドで、経路は表示しません。「ドメインが正しいIPに解決されているか」を調べたいときはnslookup・digを、「そのIPまでの通信経路や遅延箇所」を調べたいときはtracerouteを使います。

関連コマンド

  • ping : 指定ホストとの疎通を確認する
  • mtr : pingtraceroute を組み合わせたリアルタイム経路調査ツール
  • tracepath : root権限不要で使える簡易版traceroute
  • nmap : ネットワーク探索とポートスキャン
  • ss / netstat : ローカルのソケット状態を確認する

ネットワーク障害の切り分け手順をまとめて確認したい場合は、接続不良の原因を特定!ネットワークトラブルシュートの基本コマンド一覧もあわせて参照してください。

備考

  • 一般的に traceroute は UDP パケットを利用しますが、環境やオプションにより ICMP や TCP を使用できます。
  • Linux では traceroute パッケージが必要(インストールされていない場合は traceroute コマンドが使えない)。
  • traceroute 実行には root 権限が必要な場合があります(特に ICMP/TCP オプション使用時)。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント