ネットワークの疎通確認や経路調査を行っている際、「特定のリモートサーバーまで到達するのに時間がかかる」「時々パケットが消失して通信が不安定になる」といった問題に直面したことはないでしょうか。pingコマンドでパケットロスを検知できても経路のどこで問題が起きているか分からず、tracerouteコマンドで経路を追っても瞬間的な遅延やパケットのロスまでは把握しきれずにお困りの方も多いはずです。
この記事では、pingとtracerouteの機能を統合し、ネットワーク経路上の遅延やパケットロスをリアルタイムで継続的に診断できる「mtr(My Traceroute)コマンド」の使い方を解説します。この記事を読むことで、ネットワーク障害が発生した際に遅延やパケットロスが発生している区間を推定し、原因を効率的に切り分けられるようになります。
確認した環境
本記事で解説するコマンドおよび手順は、以下の環境で動作を確認しています。
- OSOS [オーエス]Operating System。基本ソフトウェア: UbuntuUbuntu [ウブントゥ]人気のLinuxディストリビューション 24.04 LTS / AlmaLinux 9.4
- ツール: mtr (My traceroute) 0.95 (Ubuntu 24.04) / 0.94 (AlmaLinux 9.4)
mtrコマンドとは?ネットワーク診断における特徴とメリット
インフラエンジニアが日常の運用や障害切り分けで利用するネットワーク診断ツールとして、ping や traceroute は非常に馴染み深いものです。しかし、これらの単体ツールでは補えない診断上の弱点を解消してくれるのが mtr コマンドです。
pingやtracerouteとの違い
ping コマンドは、宛先ホストまでの往復遅延時間(RTT)やパケットロス率を測定できますが、途中のネットワーク機器(ルーターなど)のどこで遅延やロスが発生しているかまではわかりません。
一方で、traceroute コマンドは、宛先までのパケットが通過する経路(ホップ)を一覧表示できます。しかし、各ホップに対して送信するパケット数が通常は少数(デフォルト3回など)に限られるため、その瞬間の統計データしか得られません。ネットワーク上の負荷変動による一時的な遅延や間歇的なパケットロスを見逃してしまうという課題があります。
mtr は、これら2つのツールの長所を組み合わせたコマンドです。パケットを継続的に送信し続け、各ホップにおける応答時間、最小・最大・平均の遅延、そしてパケットロス率をリアルタイムに画面上で更新し続けます。
mtrコマンドでわかること(パケットロス・遅延)
mtrを実行すると、次のような情報が一覧表示されます。
- ホップ数とルーターのIPIP [アイピー]Internet Protocol。インターネット通信の基本プロトコル/ホスト名: 宛先までに経由するネットワーク機器の順序
- Loss%(応答損失率): 各ホップに送信したプローブに対して、応答が得られなかった割合。実際の通信パケットの損失率とは必ずしも一致しない
- Snt(送信プローブ数): 各ホップに対して送信したプローブの累計数
- Last(直近の遅延): 最新のプローブの往復遅延時間(ミリ秒)
- Avg(平均遅延): 測定開始からの平均往復遅延時間
- Best / Wrst(最小 / 最大遅延): 観測された最良値と最悪値
- StDev(標準偏差): RTT(往復遅延時間)のばらつきを示す指標。値が大きいほど応答時間が不安定であることを示す
これにより、「どのホップ付近から遅延や応答損失が増加しているか」といったネットワーク経路上の傾向を視覚的かつ定量的に把握できます。
Linux環境へのmtrコマンドのインストール方法
多くのLinuxLinux [リナックス / ライナックス]オープンソースのOSカーネルディストリビューションにおいて、mtrは標準のリポジトリから簡単にインストールできます。利用するサーバーのOSに合わせて以下のコマンドを実行してください。
Ubuntu / Debian系でのインストール
Ubuntu Server 24.04などの環境では、インストールイメージや構成によってCUI専用版の mtr-tiny がすでに導入されている場合もあります。あらかじめ以下のコマンドでインストール状況を確認できます。
mtr --version未導入の場合は、aptパッケージマネージャーを使用してインストールします。
sudo apt updatesudo apt install -y mtrなお、Ubuntu/DebianDebian [デビアン]コミュニティ主導で開発される安定性の高いLinuxディストリビューション系ではGUIGUI [ジーユーアイ / グーイ]Graphical User Interface。グラフィカルな操作画面サポートを含む mtr と、CUI専用で軽量な mtr-tiny の2種類のパッケージが提供されています。サーバー用途でGUI関連の依存パッケージを含めずにCUI版を使いたい場合は、mtr-tiny を選択できます。
sudo apt install -y mtr-tinyAlmaLinux / RHEL系でのインストール
AlmaLinuxやRocky LinuxなどのRHEL系ディストリビューションでは、標準リポジトリ(AppStream)にパッケージが含まれているため、dnfパッケージマネージャーを使用してそのままインストールできます。
sudo dnf install -y mtrインストールが完了したら、バージョンを確認して正しく導入されていることを確かめます。
mtr --versionmtrコマンドの基本的な使い方と実践的なオプション
mtrの基本的な使い方と、実務の現場で役立つ代表的なオプションについて解説します。
基本的な実行方法と画面の見方
オプションを指定せずに宛先のホスト名またはIPアドレスを指定して実行すると、対話型のCUI画面が起動し、継続的な測定が始まります。
mtr 8.8.8.8実行中は、画面がリアルタイムで更新され続けます。対話型画面を終了するには、キーボードの q キーを押します。
※GUI対応版の mtr パッケージを導入したデスクトップ環境(X11/Wayland)では、別ウィンドウでGUI画面が起動する場合があります。ターミナル上のCUI画面を強制したい場合は -t(または --curses)オプションを指定してください。また、環境やセキュリティ設定によっては実行時に Failure to start mtr-packet: Permission denied などの権限エラーが出る場合があるため、その際は sudo を付けて実行してください。
レポートモード(非対話形式)で結果を出力する(-r, -wオプション)
スクリプトに組み込んだり、障害発生時のログとしてファイルに保存したりする場合は、非対話型のレポートモードを利用します。-r(または --report)オプションを指定すると、一定回数(デフォルトは10回)のパケットを送信した後に自動的に統計結果を出力して終了します。
mtr -r 8.8.8.8なお、通常のレポートモード(-r)では長いホスト名が途中で省略されることがあるため、ホスト名を省略せずに出力したい場合は、-r の代わりにワイド表示のレポートモードを有効にする -w(または --report-wide、明示的に組み合わせた -rw)を指定(例: mtr -w 8.8.8.8 または mtr -rw 8.8.8.8)すると便利です。
測定サイクル数を指定して終了する(-cオプション)
レポートモードと併せてよく利用されるのが、-c(または --report-cycles)オプションです。これにより、測定サイクル数を指定できます。mtrは通常1秒間隔で測定を繰り返し、各ホップの応答時間や応答損失を集計します。指定した測定サイクル数に達すると、統計結果を出力して終了します。
mtr -r -c 20 8.8.8.8上記のコマンドでは、デフォルトの10サイクルを20サイクルに変更してレポートを取得できます。
また、実務で障害発生時の記録や時間を空けた測定結果との比較を行う際は、ワイドレポート形式(-w)と組み合わせて結果をファイルに保存する方法も便利です。
mtr -rw -c 20 8.8.8.8 > mtr-report.txtDNS逆引き(名前解決)を無効化する(-nオプション)
デフォルトのmtrは、通過するルーターのIPアドレスに対して逆引きDNSDNS [ディーエヌエス]Domain Name System。インターネット上のドメイン名とIPアドレスを紐付けて管理・変換するシステム解決を試みます。しかし、DNSの応答が遅い環境や、逆引きレコードが登録されていないルーターが存在する場合、測定結果の表示や更新に待ち時間が発生することがあります。
-n(または --no-dns)オプションを指定すると、IPアドレスのDNS逆引き(名前解決)を行わずに数値のまま表示します。DNS逆引きによる名前解決の待ち時間を回避できるため、ホスト名の解決に時間がかかる環境でも、IPアドレスを使ってスムーズに診断結果を確認できます。
mtr -n 8.8.8.8TCPモードやIPv6で測定する(-T, -P, -6オプション)
mtrはデフォルトでICMPICMP [アイシーエムピー]Internet Control Message Protocol。IP通信のエラー報告や制御メッセージを転送するプロトコルパケットを使用しますが、TCPTCP [ティーシーピー]Transmission Control Protocol。信頼性の高い通信プロトコルを利用した診断やIPv6IPv6 [アイピーブイシックス]インターネットプロトコル第6版。128ビットでIPアドレスを表現し枯渇問題を解決する環境での測定にも対応しています。
TCPモード(-T)ではTCP SYNパケットを使用して経路を調査します。ICMP通信が制限されている環境で、TCP通信が許可されているポート(-P)を指定することで、ICMPモードとは異なる観点から経路を確認できます。
mtr -T -P 443 example.com-T(または--tcp): TCP SYNパケットを使用して測定-P 443(または--port 443): 宛先ポート番号として443番を指定
※example.com の部分は、実際にTCP 443番ポート(HTTPSHTTPS [エイチティーティーピーエス]HTTP Secure。暗号化されたHTTPなど)が利用可能な診断対象のホスト名またはIPアドレスに変更してください(権限エラーが発生する場合は sudo を付けて実行します)。ただし、途中のルーターやファイアウォールの設定によっては、すべてのホップから応答が得られるとは限りません。
また、IPv6環境でのネットワーク経路を診断したい場合は、-6 オプションを指定します。
mtr -6 google.comネットワークのトラブルシューティング活用シーン
ここからは、実務のインフラ運用においてmtrがどのように活用できるか、具体的なシナリオに沿って解説します。
特定ホストまでの経路でパケットロスが発生している区間の切り分け
ある外部APIAPI [エーピーアイ]Application Programming Interface。異なるソフトウェア間の接続口サーバーやリモート拠点への通信が不安定になった際、mtrを用いて経路上のどの区間で問題が起きているかを切り分けます。
例えば、mtr -rw -c 20 を実行して以下のようなレポート出力結果が得られたと仮定します。
Start: 2026-11-06T12:00:00+0900HOST: my-server Loss% Snt Last Avg Best Wrst StDev 1.|-- gateway 0.0% 20 0.4 0.4 0.3 0.6 0.1 2.|-- 10.0.128.1 0.0% 20 1.2 1.5 1.1 3.2 0.5 3.|-- 203.0.113.50 45.0% 20 12.4 13.1 11.8 22.0 2.3 4.|-- 198.51.100.99 0.0% 20 14.0 14.2 13.5 18.1 1.0 5.|-- target-server.example.com 0.0% 20 14.1 14.3 13.8 17.5 0.9この出力結果を見ると、ホップ3(203.0.113.50)において「Loss%」が45.0%と高い数値を示しています。しかし、その次のホップ4や宛先のホップ5ではLoss%が0.0%に戻っています。
このようなケースでは、ホップ3のルーターがコントロールプレーンの負荷やICMP応答のレート制限などにより、TTL超過を通知するICMP応答(ICMP Time Exceeded)を一部返していない可能性があります。後続のホップや最終宛先ではパケットロスが発生していないため、実際の通信パケットは正常に転送されている可能性が高いと考えられます。ただし、通信全体の正常性を判断するには、最終宛先への疎通状況やアプリケーションレベルの通信もあわせて確認する必要があります。
ルーティングの遅延(レイテンシ)悪化の原因切り分け
Webアプリケーションのレスポンスが低下した際、ネットワーク経路上のどこで遅延が発生しているかを切り分ける場合にもmtrが役立ちます。
原因切り分けの補助として、現在の経路選択結果を確認する ip route get コマンドをあわせて活用すると効果的です。
ip route get 8.8.8.8実行結果の例:
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100 uid 10008.8.8.8: 宛先IPアドレスvia 192.168.1.1: 経由するゲートウェイdev eth0: 使用するネットワークインターフェースsrc 192.168.1.100: 送信元IPアドレスuid 1000: 実行ユーザーのUID
なお、ip route get はOS上の経路選択結果を確認するコマンドであり、実際の通信速度や遅延を測定するものではありません。どのインターフェースとゲートウェイからパケットが送出されるかを確認した上で、mtrによる測定を行います。
mtrの測定結果を見る際は、各ホップに表示されるRTT(Avgなど)が「隣接するルーター間だけの遅延」ではなく「測定元からそのホップまでの往復時間」である点に注意が必要です。例えば、ホップ3のRTTだけが急増していても、ホップ4以降でRTTが元に戻っているなら、ホップ3自身のICMP応答処理が遅れている可能性があります。
もし特定のホップ以降でRTTが継続的に増加している場合は、そのホップ付近から後続のネットワーク区間で遅延が発生している可能性があります。ただし、各ホップのRTTにはルーター自身のICMP応答処理時間も含まれるため、単一の測定結果だけで遅延の発生箇所を断定することはできません。複数回の測定結果を比較し、必要に応じてネットワーク事業者やクラウドプロバイダへの問い合わせに活用しましょう。
まとめ:mtrコマンドを活用して効率的にネットワーク障害を切り分けよう
今回は、Linuxの mtr コマンドについて、基本的な使い方から実務でのトラブルシューティング活用シーンまで解説しました。
記事のポイントをまとめます。
mtrはpingとtracerouteの機能を組み合わせ、ネットワーク経路上の遅延や応答損失をリアルタイムで継続測定できるツールである。- 対話型画面だけでなく、
-r(レポートモード)や-w(ワイド表示)、-c(測定サイクル数指定)を組み合わせることで、スクリプトやログファイルへの保存にも活用できる。 -nオプションでDNS逆引きを無効化すると名前解決の待ち時間を回避でき、ICMPが制限された環境では-T(TCPモード)なども選択できる。- 途中のホップで
Loss%が高くても、後続ホップと最終宛先で損失がなければICMP応答のレート制限による可能性が高い。また、RTTは測定元から各ホップまでの往復時間であるため、単一のホップの値だけで断定せず後続ホップの傾向とあわせて切り分けることが重要である。
ネットワークの遅延や接続不良に直面した際は、mtrコマンドの測定仕様を正しく理解した上で障害発生区間を推定し、効率的な原因切り分けにつなげてください。
以上で本記事の解説を終わります。
よいITライフを!
人気記事
- 1
- 2
- 3
- 4
- 5
Rocky Linux対応。実際にWebサーバーを公開するまでのプロセスを体験できる、最も確実で実践的なガイドブックです。