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

ポイント

tracert(Windows)とtraceroute(macOSとLinux)は、自分のコンピューターから宛先までの間にあるすべてのルーターを、ホップごとに3回分の応答時間とともに表示します。コマンド プロンプトでtracert example.com、ターミナルでtraceroute example.comを実行しましょう。-d(Windows)または-n(Mac/Linux)を付けると名前解決を省略でき、結果が速く表示されます。途中のホップに出るアスタリスクや「要求がタイムアウトしました」は、多くの場合そのルーターがプローブに応答しないだけです。最後までタイムアウトが続く場合は、たいてい宛先がtracertのプローブを破棄しています。サイトが表示されるか確認し、TCP 443でもう一度トレースしましょう。重要なのは、宛先まで続く遅延やパケットロスです。

今すぐ確認

Windowsでのtracertコマンドの実行例(各ホップ、3回の応答時間、タイムアウトしたホップ)と、Mac・Linuxのtraceroute
Windowsでのtracertコマンドの実行例(各ホップ、3回の応答時間、タイムアウトしたホップ)と、Mac・Linuxのtraceroute
読み始める
  1. tracertコマンドとは?
  2. Windowsでtracertを実行する方法
  3. tracertコマンドのオプション
  4. Macでtracerouteを実行する方法
  5. Linuxでtracerouteを実行する方法
  6. tracertの結果の読み方
  7. tracertの仕組み
  8. tracert・traceroute・pathping・MTRの違い
  9. オンラインでtracerouteを実行する
  10. tracertコマンドに関するよくある質問

tracertコマンドとは?

tracert(trace route)は、通信が別のホストに届くまでの経路を表示するWindowsのコマンドです。途中にあるすべてのルーター(「ホップ」)と、それぞれが応答するまでにかかった時間がわかります。macOSとLinuxでは、同じツールはtracerouteという名前です。

Webサイトが遅い、あるいはつながらないときに、問題がどこにあるのか(自宅のネットワーク、インターネットプロバイダー、その途中、または宛先)を突き止めるためのツールです。「Pingツール」でわかるのはホストが応答するかどうかですが、tracertでは経路と、それがどこで途切れているかがわかります。

8都市から今すぐ経路をトレース

Windowsでtracertを実行する方法

  • Windows + R キーを押し、cmd と入力してEnterキーを押します(または「コマンド プロンプト」を検索します)。
  • tracert に続けてドメイン名またはIPアドレスを入力し(例:tracert example.com)、Enterキーを押します。
  • 完了するまで待ちます。tracertは最大30ホップまで各3回ずつプローブを送り、応答ごとに最大4秒待ちます。問題のない経路なら数秒で終わりますが、タイムアウトが多いと数分かかることもあります。途中で止めるには Ctrl + C を押します。後述の -d と -w を使えば速くなります。
text
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はほぼ必ず自宅のルーターで、最後の行が宛先です(上記のパブリックアドレスは、ドキュメント用に予約された範囲のものです)。日本語版のWindowsでは、メッセージは「example.com [203.0.113.10] へのルートをトレースしています」「経由するホップ数は最大 30 です:」「要求がタイムアウトしました。」「トレースを完了しました。」のように表示されます。

tracertコマンドのオプション

構文は tracert [options] target(Microsoft) です。実際によく使うオプションは次のとおりです。

オプション内容例
-dIPアドレスをホスト名に解決しない(大幅に速くなる)tracert -d example.com
-h max_hops最大ホップ数(デフォルトは30)tracert -h 15 example.com
-w timeout各応答を待つ時間(ミリ秒、デフォルトは4000)tracert -w 1000 example.com
-4IPv4を強制するtracert -4 example.com
-6IPv6を強制するtracert -6 example.com

オプションは自由に組み合わせられます。tracert -d -w 1000 example.com が、実用的なトレースを最も速く得られる組み合わせです。ISPやホスティング会社のサポートに結果を送るときは、出力をファイルにリダイレクトして保存しましょう:tracert -d example.com > trace.txt。

Windowsのtracertにはポートを指定するオプションがなく、常にICMPエコー要求を送ります。HTTPS接続の始まり方と同じように、TCPポート443でトレースするには、LinuxまたはWSLでは sudo traceroute -T -p 443、Macでは sudo traceroute -e -P TCP -p 443 を使うか、TCP 443に対応したオンライントレースルートを使いましょう。

Macでtracerouteを実行する方法

ターミナル(アプリケーション › ユーティリティ)を開き、traceroute example.com を実行します。macOSはデフォルトでUDPプローブを送信します。-I を付けるとWindowsと同じくICMPを使うため、UDPを無視するルーターからも応答が得られることがよくあります。便利なオプションは、-n(名前解決をしない)、-m 30(最大ホップ数。macOSのデフォルトは最大64)、-w 2(プローブごとの待ち時間、秒)、-q 1(ホップごとのプローブを3回ではなく1回にする)です。

bash
traceroute -n -I example.com

Linuxでtracerouteを実行する方法

traceroute example.com を実行します。コマンドが見つからない場合は、インストールする(Debian/Ubuntuでは sudo apt install traceroute、Fedoraでは sudo dnf install traceroute)か、通常はプリインストールされている tracepath を使います。Linuxのtracerouteは、デフォルトでUDPプローブをホップごとに3回、最大30ホップまで送信します。

オプション内容
-nIPアドレスのみを表示する(DNS検索をしない)
-IICMPエコープローブを使う(Windowsのtracertと同じ)
-TTCP SYNプローブを使う(デフォルトはポート80)。UDP/ICMPをブロックするファイアウォールも通過できる。sudoが必要
-p portプローブ先のポート(例:-T -p 443)
-m max_ttl最大ホップ数(デフォルトは30)
-q nホップごとのプローブ数(デフォルトは3)
-w seconds各応答を待つ時間(秒)
text
$ 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

HTTPS接続の始まり方と同じ方法でWebサーバーへの経路をテストするには、TCPポート443でトレースします:sudo traceroute -T -p 443 example.com。

tracertの結果の読み方

  • 途中の1ホップだけがタイムアウトし、その後のホップは応答している(* または「要求がタイムアウトしました」):正常です。多くのルーターは、これらのプローブを無視したり、応答の頻度を制限したりするよう設定されています。経路自体に問題はありません。
  • あるホップから最後までずっとタイムアウトする:最後に応答したホップより先では、プローブに何も応答しません。それでもサイトが表示されるなら、宛先かその手前のファイアウォールがプローブを破棄しているだけです。経路のせいにする前に、TCP 443でもう一度トレースしましょう。サイトも表示されない場合は、最後に応答したホップを控えておきましょう。そこが問い合わせるべきネットワークです。ブラウザーでは、たいてい ERR_CONNECTION_TIMED_OUT として表れます。
  • 遅延が急に増え、その後のすべてのホップでも高いまま(例:10 ms → 120 ms → 121 ms → 125 ms):遅延は実際に発生しており、そのホップが起点です。長距離回線や混雑したネットワークが原因であることが多いです。1つのホップだけで遅延が増え、次のホップで元に戻る場合は、そのルーターの応答が遅いだけなので無視してかまいません。
  • 「宛先ホストに到達できません」または「宛先ネットワークに到達できません」(英語版では「Destination host unreachable」「Destination net unreachable」。MacとLinuxでは !H、!N、意図的にブロックされている場合は !X):ルーターが、パケットを届けられないと応答しています。「ネットワーク」は、そのネットワークへの経路がないことを、「ホスト」は、たいてい最後のルーターがホスト自体に到達できないことを意味します。アドレスを確認し、正しければ、問題はそれを報告したルーター、またはその先にあります。
  • 最初のホップにプライベートアドレス(192.168.x.x、10.x.x.x、172.16~31.x.x)や共有アドレス(100.64~127.x.x)が表示される:自宅のルーター、続いてISPの内部ネットワークです。ホップ1が遅いなら自宅のWi-Fiやルーター、次のホップで遅延が増えるならISPまでの回線が原因です。そこでトレースが途切れる場合は、まず「Wi-Fiにつながるのにインターネットに接続できない時の対処法」を確認しましょう。
  • 低い応答時間のまま宛先に到達している:ネットワーク経路は正常です。Webサイトが遅い原因はサーバーかDNSにある可能性が高いので、「DNS検索」と「DNS速度テスト」で確認しましょう。

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の違い

ツールプラットフォーム適した用途
tracertWindowsICMPプローブによる手早い経路確認
traceroutemacOS、LinuxUDP、ICMP(-I)、TCPプローブによる経路確認(TCPはLinuxでは -T、Macでは -e -P TCP)
pathpingWindowsトレースを実行した後、各ホップのパケットロスを測定(1ホップあたり約25秒)
mtrmacOS、Linux(WindowsではWinMTR)ホップごとのパケットロスと遅延をリアルタイムに更新し続けるトレース
tracepathLinuxroot権限なしで使えるtraceroute。経路MTUも検出できる

断続的な問題には、1回のtracertよりも pathping(Microsoft) や mtr のほうが適しています。ときどきしか発生しないパケットロスは、3回のプローブでは現れないからです。

オンラインでtracerouteを実行する

自分のコンピューターからのトレースでわかるのは、自分のネットワークからの経路だけです。サイトに他の場所からアクセスできるかを確認したいときや、ターミナルを使わずにテストしたいときは、当サイトの「トレースルート」ツールを使いましょう。8都市から同時にICMP、TCP 443、UDPでトレースを実行し、各ホップをパケットロス、所在地、ネットワークとともに表示します。遅延とパケットロスを測定する「Pingツール」や、ホップのIPアドレスの所有者を調べる「IP検索」と組み合わせるのもおすすめです。

ターミナル不要で経路をトレース

任意のドメインやIPアドレスへのtracerouteを8都市から同時に、ICMP、TCP 443、UDPで実行し、各ホップのパケットロス、遅延、ネットワーク、所在地を確認できます。

出典

  1. tracert, Microsoft
  2. pathping, Microsoft
  3. traceroute(8), Linux man-pages

tracertコマンドに関するよくある質問

tracertはどうやって実行しますか?

Windowsではコマンド プロンプトを開き、tracertに続けてドメインまたはIPアドレスを入力します(例:tracert example.com)。macOSやLinuxではターミナルを開き、traceroute example.comと入力します。

tracertの「要求がタイムアウトしました」とはどういう意味ですか?

そのホップがタイムアウト内にプローブへ応答しなかったということです。それ以降のホップが応答しているなら、そのルーターがtracertのプローブを無視しているか応答を制限しているだけで、問題はありません。それ以降のホップがすべてタイムアウトしてもサイトが表示されるなら、宛先かその手前のファイアウォールが破棄しているのはプローブであって、あなたの通信ではありません。サイトも表示されない場合は、その地点で接続が失敗しています。

tracertとtracerouteの違いは何ですか?

どちらも同じ役割です。tracertはWindowsのコマンドで、ICMPエコープローブを送ります。tracerouteはmacOSとLinuxのコマンドで、デフォルトではUDPプローブを送り、ICMP(-I)やTCP(Linuxでは -T、Macでは -P TCP)に切り替えるオプションがあります。

Windowsのtracertはどんなプローブを使いますか?

ICMPエコー要求(Echo Request)メッセージで、pingと同じパケットです。ホップごとにTTLを1ずつ増やして送ります。Windowsのtracertは、UDPやTCPのプローブを送ることも、ポートを選ぶこともできません。macOSとLinuxのtracerouteはデフォルトでUDPを送り、ICMPやTCPに切り替えられます。

tracertを速くするにはどうすればいいですか?

tracert -dでホスト名の検索を省略し、-wでタイムアウトを短くします(例:tracert -d -w 1000 example.com)。MacやLinuxではtraceroute -nを使います。

tracerouteでアスタリスク(* * *)が表示されるのはなぜですか?

アスタリスク1つが、応答のなかったプローブ1回を表します。ファイアウォールやルーターはtracerouteのプローブを無視することが多いため、1つのホップだけにアスタリスクが表示されても、たいていは問題ありません。

tracertは何ホップまで調べますか?

デフォルトでは最大30ホップです。上限はWindowsでは-h(tracert -h 15 example.com)、MacやLinuxでは-mで変更できます。

tracertでインターネットが遅い場所はわかりますか?

はい。遅延が急に増え、その後のすべてのホップでも高いままになる最初のホップを探します。ホップ1で増えているなら自宅のWi-Fiやルーター、次のホップならモデムとISPの間の回線、それより先ならISPのネットワークやインターネット全体が原因です。

オンラインでtracertを実行できますか?

はい。DNS Robotのオンライントレースルートは、8都市から同時にICMP、TCP 443、UDPでトレースを実行するため、ターミナルなしで、自分のネットワーク以外の場所からも経路を確認できます。

著者について

Shaik Vahid

DNS Robot 創設者. Vahid は長年 Web ホスティングのサポートで、お客様のドメイン、DNS レコード、SSL 証明書、メール配信の問題を解決してきました。DNS Robot のツールを開発し、実際によく起きるエラーをもとにこれらのガイドを書いています。

トレースルート

任意のサイトやIPまでの経路を8都市からホップごとに追跡し、各ネットワーク名を表示