2026年7月7日

2026年7月7日

mtrでネットワーク経路を診断する方法(結果の読み方と誤判定しやすい点)

mtrは traceroute と ping を組み合わせたツールで、宛先までの各中継ルーター(ホップ)ごとのパケットロス率と遅延を継続的に測れます。「サイトが遅い」「ときどきつながらない」という相談で、問題が自分のサーバーなのか途中の経路なのかを切り分けるのに向いています。この記事では、インストールからレポートの取り方、結果の正しい読み方、ICMPが絞られている環境でのTCPモードの使い方までを説明します。

mtrが向いている場面

pingは宛先との往復だけ、tracerouteは経路を1回なぞるだけですが、mtrは同じ経路に何十回もパケットを送り、ホップごとの統計を取ります。そのため、次のような「たまに起きる」問題の調査で役に立ちます。

  • 特定の地域や回線からだけWordPressサイトの表示が遅い
  • 外部API(決済・メール配信・CDNなど)への接続がときどきタイムアウトする
  • サーバー移転後、以前より応答が遅くなった気がする

一方、mtrが示すのはネットワークの経路と遅延だけです。PHPの処理が遅い、データベースが詰まっている、といったサーバー内部の問題は見えません。mtrで経路に問題が無ければ、アプリケーション側の調査に進む、という判断材料として使います。

インストール

主要なLinuxディストリビューションではパッケージで入ります。

# Debian / Ubuntu(GUIなし版。サーバーならこちらで十分)
sudo apt install mtr-tiny

# RHEL / Rocky Linux / AlmaLinux
sudo dnf install mtr

# macOS(Homebrew)
brew install mtr

macOSのHomebrew版は、実行時に sudo が必要になることがあります。WindowsにはmtrのWindows向け移植版(WinMTRなど)があるほか、標準コマンドの pathping でもホップごとのロス率を調べられます。

基本の使い方とレポートの取り方

mtr example.com と打つと画面が更新され続ける対話モードになります(q で終了)。調査結果を共有したり記録したりするなら、一定回数送って結果をまとめて出すレポートモードが便利です。

# 100回送信してレポート表示。ホスト名を省略せず、IPアドレスとAS番号も表示
mtr -r -w -b -z -c 100 example.com

# IPv4 / IPv6 を明示して比べる
mtr -4 -rwc 100 example.com
mtr -6 -rwc 100 example.com

主なオプションは次のとおりです。

  • -r(--report):レポートモード
  • -c 回数:送信回数。10回程度では偶然のロスに振り回されるため、100回前後を目安にします
  • -w:ホスト名を省略せずに表示
  • -n:名前の逆引きをしない。逆引きが遅い環境で結果が早く出ます
  • -b:ホスト名とIPアドレスを両方表示
  • -z:AS番号(どの事業者のネットワークか)を表示

結果の各列の意味

レポートは次のような形で出力されます(アドレスは説明用の値です)。

HOST: client                      Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.168.1.1                0.0%   100    0.9   1.0   0.6   3.2   0.3
  2.|-- 198.51.100.1               0.0%   100    4.8   5.1   4.2   9.8   0.8
  3.|-- 198.51.100.65             42.0%   100    6.1   6.3   5.5  12.4   1.1
  4.|-- ???                       100.0   100    0.0   0.0   0.0   0.0   0.0
  5.|-- 203.0.113.9                0.0%   100   12.2  12.5  11.8  18.0   0.9
  6.|-- 203.0.113.10               0.0%   100   12.6  12.8  12.0  16.3   0.7
  • Loss%:そのホップで応答が返らなかった割合
  • Snt:送信した回数
  • Last / Avg / Best / Wrst:直近・平均・最小・最大の往復時間(ミリ秒)
  • StDev:ばらつき。大きいほど遅延が不安定です

結果の読み方(誤判定しやすいポイント)

mtrの結果で最も多い誤解は、「途中のホップにロスがある=そこで障害が起きている」という読み方です。

途中だけのロスは、多くの場合問題ではない

上の例では3番目のホップに42%のロスがありますが、その先の5番・6番(最終の宛先)は0%です。ルーターは自分宛ての診断パケットへの応答を後回しにしたり、回数を制限したりする設定になっていることが多く、転送そのものは正常でも応答だけ返さないことがあります。後続のホップにロスが続いていなければ、通信には影響していないと判断してよいケースがほとんどです。4番目の ??? も同様で、応答を返さない設定のルーターです。

ロスが最後まで続くなら実際の問題

あるホップから先、最終ホップまでロス率が継続して出ている場合は、そのあたりで実際にパケットが落ちている可能性が高くなります。判断の基準は最終ホップのロス率です。

遅延の跳ね上がりも「続くかどうか」で判断する

あるホップで遅延が増え、その後のホップも同じ水準のまま続くなら、その区間が距離か混雑で遅いということです。日本と北米の間のように物理的な距離がある区間では、一気に100ミリ秒以上増えるのは自然な挙動です。逆に、途中の1ホップだけ遅延が大きく、次のホップで元に戻るなら、そのルーターの応答が遅いだけで通信には影響していません。

経路は往きと帰りで違うことがある

mtrが測るのは送信元から宛先への往路だけです。インターネットでは往路と復路が別経路になることが珍しくありません。サーバー側からも利用者側(または近くの拠点)に向けてmtrを実行し、両方向の結果をそろえて比べると、原因の区間を絞り込みやすくなります。

ICMPが絞られている環境ではTCPモードを使う

mtrは既定でICMPを使いますが、宛先のファイアウォールやクラウドのセキュリティ設定でICMPが拒否されていると、最終ホップのロス率が常に最大値になり、届いていないように見えてしまいます。Webサーバーまでの経路を調べるなら、実際の通信と同じTCP 443番で測るほうが実態に近い結果になります。

# TCPのSYNで443番ポートを使って測定
mtr -T -P 443 -rwc 100 example.com

# UDPで測定する場合
mtr -u -rwc 100 example.com

TCPモードはファイアウォールの許可状況によって結果が変わるため、ICMPとTCPの両方で取って比較すると判断を誤りにくくなります。なお、送信間隔を1秒未満にする -i の指定は、通常は管理者権限が必要です。

調査を依頼するときに添える情報

レンタルサーバーやVPS事業者、回線事業者に調査を依頼する場合は、次の情報をそろえると話が早く進みます。

  1. mtr -rwbz -c 100 のレポート(ICMPとTCPの両方)
  2. 実行した日時と、問題が起きている時間帯
  3. 送信元の回線・地域と、宛先のホスト名
  4. 可能であれば、サーバー側から送信元方向へのレポート

問題が時間帯で変わるなら、cronで定期的にレポートを保存しておくと比較材料になります。ただし、大量の連続測定は相手側の負荷や監視の対象になりうるため、回数と間隔は常識的な範囲にとどめてください。オプションの細部はバージョンによって異なることがあるので、手元の mtr --help や man mtr で確認してから使うと安全です(2026年10月現在)。

まとめ

  • mtrはホップごとのロス率と遅延を統計で示すツールで、経路の問題か、サーバー内部の問題かを切り分けるのに使います。
  • 共有・記録には mtr -rwbz -c 100 宛先 のレポートモードが便利です。
  • 途中のホップだけのロスは、多くの場合ルーターが応答を絞っているだけです。最終ホップまでロスや遅延が続くかで判断します。
  • ICMPが拒否されている宛先には -T -P 443 のTCPモードで測ります。
  • 往路と復路は別経路のことがあるため、可能なら双方向で測定します。

お気軽にご相談ください

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