tracerouteコマンド:インストールと使い方、-n・-I・-Tオプション

テスト環境RHEL系AlmaLinux 9.8rootアカウントDebian 12 · traceroute 2.1.2 一般ユーザー2026-10-29 確認

宛先までパケットが通過するルーターを1ホップずつ確認するときは、tracerouteコマンドを使います。AlmaLinux 9.8サーバーにはtracerouteがインストールされていなかったためdnfでインストールし、traceroute 2.1.2が入っているDebian 12サーバーからexample.comまでの経路を追跡したところ、7番目のホップで宛先に到達しました。

以下の出力はDebian 12サーバーの一般ユーザーで実行した結果で、インストールの章のrpmとdnfの出力だけAlmaLinux 9.8サーバー(rootアカウント)で取得しました。サーバーのホスト名はserver1に、経路に出たルーターと宛先のアドレスは例示用アドレス(192.0.2.x、198.51.100.x、203.0.113.x)に置き換えています。インストールパッケージのリリース番号(メジャーバージョン2.1はそのまま)とdnfのメタデータ時刻も例の値で、応答時間は実測のままです。

1️⃣ tracerouteのインストール

  • ↪️ RHEL系はdnf、Debian系はapt

tracerouteが標準でインストールされているかどうかはディストリビューションによって異なります。AlmaLinux 9.8サーバーで実行すると[traceroute: command not found]と表示され、rpmで照会してもインストール済みのパッケージはありませんでした。

rpm -q traceroute
package traceroute is not installed

RHEL系はdnfでインストールします。インストール前に[--assumeno]を付けて確認すると、対象はbaseosリポジトリのtracerouteパッケージ1つだけで、一緒にインストールされるパッケージはありませんでした。

dnf install --assumeno traceroute
Last metadata expiration check: 0:05:00 ago on Thu Oct 29 09:00:00 2026.
Dependencies resolved.
================================================================================
 Package            Architecture   Version                 Repository      Size
================================================================================
Installing:
 traceroute         x86_64         3:2.1.0-9.el9           baseos          56 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 56 k
Installed size: 107 k
Operation aborted.

ダウンロードサイズは56k、インストール後のサイズは107kでした。[--assumeno]はすべての質問にnoと答えるオプションなので、インストールせずに[Operation aborted.]で終わります(dnf公式ドキュメントによる)。

実際のインストールは[--assumeno]を外した[dnf install traceroute]で行いました。

dnf install traceroute
Last metadata expiration check: 0:20:00 ago on Thu Oct 29 09:00:00 2026.
Dependencies resolved.
================================================================================
 Package            Architecture   Version                 Repository      Size
================================================================================
Installing:
 traceroute         x86_64         3:2.1.0-9.el9           baseos          56 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 56 k
Installed size: 107 k
Downloading Packages:
traceroute-2.1.0-9.el9.x86_64.rpm               3.6 MB/s |  56 kB     00:00    
--------------------------------------------------------------------------------
Total                                            97 kB/s |  56 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1 
  Installing       : traceroute-3:2.1.0-9.el9.x86_64                        1/1 
  Running scriptlet: traceroute-3:2.1.0-9.el9.x86_64                        1/1 
  Verifying        : traceroute-3:2.1.0-9.el9.x86_64                        1/1 

Installed:
  traceroute-3:2.1.0-9.el9.x86_64                                               

Complete!

[Installed:]の下にはtracerouteパッケージ1つだけが表示され、依存パッケージなしで[Complete!]とインストールが完了しました。

インストール後は[traceroute --version]でバージョンを確認しました。

traceroute --version
Modern traceroute for Linux, version 2.1.0
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later

[command -v traceroute]で見つかった実行ファイルのパスは[/usr/bin/traceroute]でした。

Debian系はディストリビューションのリポジトリにあるtracerouteパッケージを[apt install traceroute]でインストールします(Debian公式パッケージ情報による)。インストールされたバージョンは--versionで確認します。

traceroute --version
Modern traceroute for Linux, version 2.1.2
Copyright (c) 2016  Dmitry Butskoy,   License: GPL v2 or any later

Debian 12サーバーにはtracerouteパッケージがすでにインストールされており、バージョンは[Modern traceroute for Linux] 2.1.2と表示されました。

2️⃣ tracerouteコマンドの使い方

  • ↪️ 基本の形と出力行の読み方

tracerouteは宛先の名前またはIPアドレスを1つ受け取り、TTLを1から1つずつ増やしたパケットを送ります。TTLが1のパケットは最初のルーターで、2のパケットは2番目のルーターで寿命が尽きます。そのルーターが返す[time exceeded]応答から、tracerouteはホップごとのアドレスと往復時間を出力します(公式マニュアルによる)。

宛先に到達すると宛先が[port unreachable]で応答してそのホップで終わり、到達しなければ最大ホップ数まで続きます。公式マニュアルによると1ホップにパケットを3回送るので1行に時間が3つ表示され、確認するホップは標準で30個までです。

example.comには-nでアドレスだけを出力し、-m 10で10番目のホップまでだけ確認しました。

traceroute -n -m 10 example.com
traceroute to example.com (203.0.113.154), 10 hops max, 60 byte packets
 1  192.0.2.1  0.110 ms  0.083 ms  0.067 ms
 2  192.0.2.2  0.348 ms  0.273 ms  0.263 ms
 3  198.51.100.77  0.426 ms  0.337 ms 198.51.100.13  1.251 ms
 4  198.51.100.49  0.968 ms  1.264 ms 198.51.100.53  1.148 ms
 5  * * *
 6  203.0.113.19  1.631 ms 203.0.113.25  2.549 ms 203.0.113.14  1.543 ms
 7  203.0.113.154  1.544 ms  1.656 ms  1.607 ms

1行目には宛先の名前と実際に送ったアドレス、最大ホップ数、パケットサイズ60バイトが表示されました。7番目のホップで宛先アドレスが応答したので10番目のホップまで進まずに終わり、実行開始から終了まで1秒かかりませんでした。

出力意味
traceroute to example.com (203.0.113.154)宛先の名前と、名前を解決して実際に送ったアドレス
10 hops max確認する最大ホップ数 — -mで指定し、標準値は30
60 byte packets送るパケットのサイズ — IPv4は標準60バイト、IPv6は標準80バイト(公式マニュアルによる)
1ホップ番号 — そのパケットに付けたTTLの値
192.0.2.1そのホップで応答したルーターのアドレス
0.110 ms 0.083 ms 0.067 ms1ホップに送ったパケット3つの往復時間
198.51.100.77 … 198.51.100.13同じホップでパケットごとに別のルーターが応答し、アドレスが2つ表示された行
* * *3つのパケットすべてで制限時間内に応答なし — アスタリスク1つがパケット1つ
!H · !N · !P · !X時間の後に付く到達不能の記号 — ホスト、ネットワーク、プロトコルの到達不能、管理上の禁止(公式マニュアルによる)

3番目と4番目のホップは1行にアドレスが2つ、6番目のホップは3つ表示されました。1ホップに送った3つのパケットに別々のルーターが応答すると、tracerouteは公式マニュアルのとおり応答したアドレスをすべて続けて出力します。

-nなしで実行すると、応答したアドレスをホスト名に変換して出力します。

traceroute localhost
traceroute to localhost (127.0.0.1), 30 hops max, 60 byte packets
 1  server1 (127.0.0.1)  0.068 ms  0.048 ms  0.028 ms

localhostに対して実行すると、ホップの欄にDebian 12サーバーのホスト名が表示され、括弧内にアドレス127.0.0.1が付きました。

3️⃣ tracerouteのオプション

  • ↪️ -n、-q、-mと送信方式の-I、-T

traceroute 2.1.2の--helpには34個のオプションが表示されます。そのうち出力を変える-n、-q、-mと、送るパケットを変える-I、-TをDebian 12サーバーの一般ユーザーで実行してみました。

[traceroute -n]はアドレスをホスト名に変換せずIPアドレスだけを出力します。同じlocalhostに-nを付けると、ホップの欄には127.0.0.1だけが残りました。

traceroute -n localhost
traceroute to localhost (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.073 ms  0.075 ms  0.025 ms

-qは1ホップに送るパケット数を指定するオプションで、標準値は3です。-q 1に減らすと時間は1つだけ、-q 5に増やすと5つ表示されました。

traceroute -q 1 -n 127.0.0.1
traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.096 ms
traceroute -q 5 -n 127.0.0.1
traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
 1  127.0.0.1  0.083 ms  0.028 ms  0.024 ms  0.022 ms  0.022 ms

-mは確認する最大ホップ数を変えるオプションです。256を指定すると[max hops cannot be more than 255]で拒否されました。

traceroute -m 256 -n 127.0.0.1
max hops cannot be more than 255

送るパケットの標準はUDPです。-IはICMP ECHOで、-TはTCP SYN(標準は80番ポート)で送ります。この2つのオプションは、UDPが遮断される経路を別のパケットで確認し直すときに使います。一般ユーザーで2つのオプションを実行すると、権限不足のメッセージを残して終了コード1で終わりました。

traceroute -I -n 127.0.0.1
You do not have enough privileges to use this traceroute method.
socket: Operation not permitted
traceroute -T -n 127.0.0.1
You do not have enough privileges to use this traceroute method.
socket: Operation not permitted

公式マニュアルは、標準の方式と-U(宛先ポート53固定)を一般ユーザーに許可された方式として挙げています。-Iは、カーネル設定ping_group_rangeがそのユーザーのグループを許可している場合にだけ一般ユーザーで実行できます。

cat /proc/sys/net/ipv4/ping_group_range
1	0

Debian 12サーバーの値は、Linuxカーネルのドキュメントによるとどのグループも許可しない[1 0]でした。-Tはこの設定に関係なく一般ユーザーに許可された方式に含まれないため、2つのオプションはroot権限のあるアカウントで実行します。

📌 主なオプション: この記事で実行した結果

オプション作業この記事で確認した結果
-nアドレスをホスト名に変換せずIPアドレスだけを出力localhostに付けるとホップの欄に127.0.0.1だけが残る
-q1ホップに送るパケット数を指定(標準3)-q 1は時間1つ、-q 5は時間5つ
-m確認する最大ホップ数を指定(標準30)-m 10でexample.comは7番目のホップで終了、-m 256は[max hops cannot be more than 255]で拒否
-IパケットをICMP ECHOで送る一般ユーザーでは権限不足のメッセージと終了コード1
-TパケットをTCP SYN(標準は80番ポート)で送る一般ユーザーでは権限不足のメッセージと終了コード1
-U宛先ポートを53に固定してUDPで送るexample.comは7番目から10番目のホップまで* * *で、宛先アドレスは表示されない

📎 その他のオプション: 公式マニュアルより

オプション作業
-w応答を待つ最大時間を指定(標準5秒)
-pポートを指定(UDPは開始ポート、TCPは固定の宛先ポート、ICMPは開始シーケンス番号)
-f開始するTTLを指定(標準1)
-N同時に送るパケット数を指定(標準16、応答速度を制限するルーターでは減らす)
-s送信元アドレスをサーバーの別のインターフェースアドレスに変更
-iパケットを送り出すネットワークインターフェースを指定(標準はルーティングテーブルどおり)
-4IPv4だけで送る(名前がIPv4とIPv6の両方のアドレスを返す場合、標準はIPv4)
-6IPv6だけで送る

🔲 tracerouteコマンドシミュレーター

下のシミュレーターでは、example.comの経路を-mで短くしたり、127.0.0.1とlocalhostに-n、-q、-f(開始ホップ)と権限が必要な-I、-Tを直接入力したりできます。

tracerouteコマンドシミュレーターtraceroute 2.1.2
[root@server work]#
ブラウザー内でのみ動作し、実際のパケットは送りません。↑↓で前に入力したコマンドを呼び出せます。

4️⃣ tracerouteで応答のないホップ

  • ↪️ * * *の行とファイアウォール

送信方式を変えられても、応答しないホップは[* * *]のまま残ります。公式マニュアルによると、アスタリスク1つは制限時間内に応答が来なかったパケット1つで、待ち時間は最大5秒です。

途中のホップの* * *を見ると、そこで経路が切れていると判断しがちです。標準の方式で送ったexample.comの経路では5番目のホップだけが* * *でしたが、パケットはそのホップを通過し、6番目のホップを経て7番目のホップの宛先まで到達しました。

-Uは宛先ポートを53に固定して送る方式です。同じexample.comに-Uでパケットを送ると、6番目のホップで宛先の手前のルーターが応答した後、7番目から10番目のホップまで* * *が続き、宛先アドレスは表示されませんでした。

traceroute -U -n -m 10 example.com
traceroute to example.com (203.0.113.154), 10 hops max, 60 byte packets
 1  192.0.2.1  0.176 ms  0.096 ms  0.661 ms
 2  * * *
 3  198.51.100.13  0.622 ms  0.586 ms  0.562 ms
 4  198.51.100.49  0.898 ms  1.314 ms 198.51.100.53  1.159 ms
 5  * * *
 6  203.0.113.9  3.773 ms 203.0.113.27  3.275 ms 203.0.113.14  8.973 ms
 7  * * *
 8  * * *
 9  * * *
10  * * *

公式マニュアルは、-Uで送ると宛先側のプログラムは通常応答しないため最後のホップが見えないと説明しています。ファイアウォールがtracerouteのUDPポートやICMP ECHOを遮断する経路でも、そのファイアウォールの先からは応答が来ず、* * *だけが続きます。

* * *が出た場所読み方再確認
途中のホップ1つそのホップから応答がない — 後のホップが応答すれば、パケットはそのホップを通過しているそのままにして後のホップを読む
宛先の手前から-mまで宛先またはその手前のファイアウォールが、そのパケットやポートを遮断している(公式マニュアルによる)標準の方式・-T(root)・[-T -p ポート]
実行するたびに変わるホップルーターがICMPの応答速度を制限すると、応答の一部が抜けることがある(公式マニュアルによる)[-N 1] · [-w 5]

宛先の手前で止まった場合は、送信方式を変えて確認し直します。公式マニュアルは-Tをファイアウォールを通過するように作られた方式として紹介しています。メールサーバーのように開いているポートが明らかな宛先は、[-T -p 25]のようにそのポートを指定すると、-Iで到達できないときでも到達できる場合があると説明しています。

途中のホップの*は、送信方式や実行によって変わることもあります。2番目のホップは標準の方式で実行したときは応答しましたが、-Uで実行したときは* * *と表示されました。公式マニュアルは、ルーターがICMPの応答速度を制限すると応答の一部が抜けることがあるとして、[-N 1]で同時に送るパケット数を減らすよう案内しています。tracerouteは先に受け取った応答時間をもとに待ち時間を短く見積もるため、そのせいで*が早く表示されるときは、[-w 5]のように待ち時間を1つだけ指定するとその計算を無効にできます(公式マニュアルによる)。

5️⃣ tracerouteの代わりにtracepath

  • ↪️ インストールが難しいサーバーでは

パッケージをインストールできないサーバーでは、tracepathコマンドで同じ経路を確認します。AlmaLinux 9.8サーバーにはtracerouteはありませんでしたが、tracepathはiputils 20210202として入っていました。逆にDebian 12サーバーにはtracepathがありませんでした。tracepathの公式マニュアルによると、tracepathはroot権限なしで実行できる代わりにオプションが少なく、送るパケットもUDPだけです。そのため、-Iや-Tで送信方式を変えたり、-qでホップごとに複数回送って比較したりする必要があるときは、tracerouteをインストールして使います。

🔢 FAQ & おすすめコンテンツ

終了コードではわかりません。標準の方式でexample.comの7番目のホップで到達したときも、-Uで10番目のホップまで到達できなかったときも、終了コードは0でした。不正なオプション、範囲外の-mの値、名前解決の失敗は2で、一般ユーザーの-Iと-Tは1で終わりました。終了コードは実行エラーだけを区別するので、宛先に到達したかどうかは最後の行に宛先アドレスが表示されたかどうかで確認します。

Microsoftのドキュメントによると、WindowsのtracertはTTLを増やしながらICMP Echo Requestを送り、Linuxのtracerouteは標準でUDPパケットを送ります(公式マニュアルによる)。Linuxでtracertと同じICMP方式で確認するときは-Iを付けます。

-fで最初に送るTTLを指定すると、そのホップから出力します。公式マニュアルによると標準値は1で、127.0.0.1に-f 2を付けるとホップ番号が2から表示されました。-m 0のように最大ホップが開始ホップより小さいと、[first hop out of range]で拒否されました。

ℹ️ 提携について
当サイトのコンテンツにはアフィリエイトリンクが含まれています。訪問者がこのリンクを通じて商品やサービスを購入すると、当サイトは販売元から手数料を受け取ります。この過程において、購入者が支払う金額(イベント割引適用で金額が下がります↓)は上昇しません。掲載されている価格・割引・在庫情報は作成時点のものであり、実際とは異なる場合がありますので、ご購入前に販売元にて最終確認をお願いいたします。商品の選定および評価は独自の基準に基づいて行われており、手数料の支払いの有無は紹介順や評価内容に影響を与えません。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

人間であることを証明してください: 5   +   2   =