tracertコマンドの使い方|Windows・Mac・Linuxのtraceroute

Advertisement
tracertコマンドとは?
tracert(trace route)は、通信が別のホストに届くまでの経路を表示するWindowsのコマンドです。途中にあるすべてのルーター(「ホップ」)と、それぞれが応答するまでにかかった時間がわかります。macOSとLinuxでは、同じツールはtracerouteという名前です。
Webサイトが遅い、あるいはつながらないときに、問題がどこにあるのか(自宅のネットワーク、インターネットプロバイダー、その途中、または宛先)を突き止めるためのツールです。「Pingツール」でわかるのはホストが応答するかどうかですが、tracertでは経路と、それがどこで途切れているかがわかります。
Windowsでtracertを実行する方法
Windows + R キーを押し、
cmdと入力してEnterキーを押します(または「コマンド プロンプト」を検索します)。tracertに続けてドメイン名またはIPアドレスを入力し(例:tracert example.com)、Enterキーを押します。完了するまで待ちます。tracertは最大30ホップまで各3回ずつプローブを送り、応答ごとに最大4秒待ちます。問題のない経路なら数秒で終わりますが、タイムアウトが多いと数分かかることもあります。途中で止めるには Ctrl + C を押します。後述の
-dと-wを使えば速くなります。
C:\> tracert example.com
Tracing route to example.com [203.0.113.10]
over a maximum of 30 hops:
1 1 ms <1 ms <1 ms 192.168.1.1
2 9 ms 8 ms 9 ms 10.20.0.1
3 12 ms 11 ms 12 ms 198.51.100.33
4 * * * Request timed out.
5 24 ms 23 ms 24 ms 203.0.113.1
6 25 ms 24 ms 24 ms 203.0.113.10
Trace complete.1行が1ホップです。3つの数値は3回の個別のプローブの結果で、右側のアドレスは応答したルーターです。ホップ1はほぼ必ず自宅のルーターで、最後の行が宛先です(上記のIPアドレスはドキュメント用に予約されたアドレスです)。日本語版のWindowsでは、メッセージは「example.com [203.0.113.10] へのルートをトレースしています」「経由するホップ数は最大 30 です:」「要求がタイムアウトしました。」「トレースを完了しました。」のように表示されます。
Advertisement
tracertコマンドのオプション
構文は tracert [options] target です。実際によく使うオプションは次のとおりです。
| オプション | 内容 | 例 |
|---|---|---|
| -d | IPアドレスをホスト名に解決しない(大幅に速くなる) | tracert -d example.com |
| -h max_hops | 最大ホップ数(デフォルトは30) | tracert -h 15 example.com |
| -w timeout | 各応答を待つ時間(ミリ秒、デフォルトは4000) | tracert -w 1000 example.com |
| -4 | IPv4を強制する | tracert -4 example.com |
| -6 | IPv6を強制する | tracert -6 example.com |
オプションは自由に組み合わせられます。tracert -d -w 1000 example.com が、実用的なトレースを最も速く得られる組み合わせです。ISPやホスティング会社のサポートに結果を送るときは、出力をファイルにリダイレクトして保存しましょう:tracert -d example.com > trace.txt。
Macでtracerouteを実行する方法
ターミナル(アプリケーション › ユーティリティ)を開き、traceroute example.com を実行します。macOSはデフォルトでUDPプローブを送信します。-I を付けるとWindowsと同じくICMPを使うため、UDPを無視するルーターからも応答が得られることがよくあります。便利なオプションは、-n(名前解決をしない)、-m 30(最大ホップ数。macOSのデフォルトは最大64)、-w 2(プローブごとの待ち時間、秒)、-q 1(ホップごとのプローブを3回ではなく1回にする)です。
traceroute -n -I example.comAdvertisement
Linuxでtracerouteを実行する方法
traceroute example.com を実行します。コマンドが見つからない場合は、インストールする(Debian/Ubuntuでは sudo apt install traceroute、Fedoraでは sudo dnf install traceroute)か、通常はプリインストールされている tracepath を使います。Linuxのtracerouteは、デフォルトでUDPプローブをホップごとに3回、最大30ホップまで送信します。
| オプション | 内容 |
|---|---|
| -n | IPアドレスのみを表示する(DNS検索をしない) |
| -I | ICMPエコープローブを使う(Windowsのtracertと同じ) |
| -T | TCP SYNプローブを使う(デフォルトはポート80)。UDP/ICMPをブロックするファイアウォールも通過できる。sudoが必要 |
| -p port | プローブ先のポート(例:-T -p 443) |
| -m max_ttl | 最大ホップ数(デフォルトは30) |
| -q n | ホップごとのプローブ数(デフォルトは3) |
| -w seconds | 各応答を待つ時間(秒) |
$ traceroute -n example.com
traceroute to example.com (203.0.113.10), 30 hops max, 60 byte packets
1 192.168.1.1 0.612 ms 0.571 ms 0.534 ms
2 10.20.0.1 8.911 ms 9.004 ms 8.872 ms
3 * * *
4 203.0.113.10 24.112 ms 23.980 ms 24.051 msブラウザーと同じ方法でWebサーバーへの経路をテストするには、TCPポート443でトレースします:sudo traceroute -T -p 443 example.com。
tracertの結果の読み方
途中の1ホップだけがタイムアウトし、その後のホップは応答している(
*または「要求がタイムアウトしました」):正常です。多くのルーターは、これらのプローブを無視したり、応答の頻度を制限したりするよう設定されています。経路自体に問題はありません。あるホップから最後までずっとタイムアウトする:最後に応答したホップ、またはその先で通信が破棄されています。宛先のファイアウォールやルーティングの問題であることが多いです。最後に応答したホップを控えておきましょう。そこが問い合わせるべきネットワークです。
遅延が急に増え、その後のすべてのホップでも高いまま(例:10 ms → 120 ms → 121 ms → 125 ms):遅延は実際に発生しており、そのホップが起点です。長距離回線や混雑したネットワークが原因であることが多いです。1つのホップだけで遅延が増え、次のホップで元に戻る場合は、そのルーターの応答が遅いだけなので無視してかまいません。
「宛先ホストに到達できません」または「宛先ネットワークに到達できません」(英語版では「Destination host unreachable」「Destination net unreachable」):ルーターが宛先への経路を持っていないと報告しています。アドレスを確認するか、そのホップでのファイアウォールやルーティングの問題を疑いましょう。
最初のホップにプライベートアドレス(192.168.x.x、10.x.x.x)が表示される:自宅のルーター(ホームゲートウェイ)とISPの内部ネットワークです。ここで応答時間が遅い場合は、自宅のWi-Fiやモデムに問題があります。
低い応答時間のまま宛先に到達している:ネットワーク経路は正常です。Webサイトが遅い原因はサーバーかDNSにある可能性が高いので、「DNS検索」と「DNS速度テスト」で確認しましょう。
Advertisement
tracertの仕組み
すべてのIPパケットにはTTL(Time to Live)というカウンターがあり、ルーターを通過するたびに1ずつ減ります。0になると、ルーターはパケットを破棄し、ICMPの「Time Exceeded(時間超過)」メッセージを送り返します。tracertはこの仕組みを利用して、TTLを1、2、3…と増やしながらプローブを送ります。こうして経路上のルーターが1台ずつ順番に姿を現し、最後に宛先が応答します。
OSによって使うプローブが異なります。WindowsのtracertはICMPエコー要求を送信します(pingと同じパケットです)。macOSとLinuxのtracerouteは、デフォルトでUDPパケットを送信します(宛先は大きい番号のポート)。ファイアウォールはこれらを異なる方法で扱うため、同じトレースでもWindowsとLinuxで結果が違って見えることがあります。-I や -T オプションが用意されているのはそのためです。
tracert・traceroute・pathping・MTRの違い
| ツール | プラットフォーム | 適した用途 |
|---|---|---|
| tracert | Windows | ICMPプローブによる手早い経路確認 |
| traceroute | macOS、Linux | UDP、ICMP(-I)、TCP(-T)プローブによる経路確認 |
| pathping | Windows | トレースを実行した後、各ホップのパケットロスを測定(1ホップあたり約25秒) |
| mtr | macOS、Linux(WindowsではWinMTR) | ホップごとのパケットロスと遅延をリアルタイムに更新し続けるトレース |
| tracepath | Linux | root権限なしで使えるtraceroute。経路MTUも検出できる |
断続的な問題には、1回のtracertよりも pathping や mtr のほうが適しています。ときどきしか発生しないパケットロスは、3回のプローブでは現れないからです。
Advertisement
Advertisement
tracertコマンドに関するよくある質問
Windowsではコマンド プロンプトを開き、tracertに続けてドメインまたはIPアドレスを入力します(例:tracert example.com)。macOSやLinuxではターミナルを開き、traceroute example.comと入力します。