トレースルートとは

Pingコマンドと並んでICMPを利用したエンドツーエンド通信の確認のためによく利用するコマンドがトレースルートです。トレースルートは、指定したIPアドレスまでどんなルータを経由するかという通信経路の確認を行うためのコマンドです。

図 トレースルートの概要
トレースルートは通信「経路」の確認と解説されることが多いです。IPでのデータ転送における「経路」とは具体的には、経由するルータです。

トレースルートの仕組み(Cisco)

トレースルートの仕組みは、ICMP時間超過メッセージを利用して、通信経路上のルータのIPアドレスを調べます。

宛先IPアドレスを指定して、トレースルートを実行するとまずTTL=1としてIPパケットを送信します。すると、最初のルータでTTL=0となりIPパケットは破棄されます。破棄したルータはICMP時間超過メッセージを送信します。これにより、宛先までの経路上の最初のルータのIPアドレスがわかります。次にTTL=2で宛先にIPパケットを送信すると、経路上の2番目のルータからICMP時間超過メッセージが送られてきます。こうして、TTLの値を増やして、宛先IPアドレスへIPパケットを送信することで経路上のルータのIPアドレスがわかるようになります。

Ciscoの実装では、トレースルートにUDPデータグラムを利用します。宛先ポート番号を33434としてIPヘッダのTTLを徐々に増やしながら目的のIPアドレスまでの経路を確認することができます。途中の経路上のルータは、TTLが0になりパケットを破棄するとトレースルートを実行したデバイスにICMP時間超過メッセージを送信します。最終的なトレースルートの宛先では、UDPポート33434を使っていないためパケットを破棄します。そして、ICMP到達不能メッセージのPort Unreachableを送信元のデバイスに送信します。

UDPデータグラムには必ずIPヘッダが付き、IPパケットとなります。関連記事 「階層ごとのデータの呼び方」
図 トレースルート その1
図 トレースルート その2
図 トレースルート その3
図 トレースルート その4
Windowsでは、トレースルートのためにUDPデータグラムではなくICMPエコー要求メッセージを送信します。トレースルートの最終的な宛先からはICMPエコー応答メッセージが返ってきます。

トレースルートのコマンド(Windows)

Windows OSではコマンドプロンプトで以下のコマンドを入力すると、トレースルートを実行できます。

C:\tracert <IPアドレス または ホスト名>

以下は、GoogleのWebサーバまでのトレースルートを実行した結果の例です。

図 トレースルートの例 (Windows)
トレースルートはデフォルトで3つずつパケットを送信します。

この例では、トレースルート(tracertコマンド)によって、コマンドを実行したPCからGoogleのWebサーバ(216.58.197.131)まで13台のルータを経由していることがわかります。なお、「要求がタイムアウトしました」と表示されているのは、トレースルートに応答しないように設定されているルータです。

トレースルートのコマンド(Cisco)

Cisco機器のトレースルートは次のコマンドを利用します。

#traceroute <ip-address|hostname>

Ciscoのtracerouteコマンドのサンプルは以下です。

R6#traceroute 181.1.0.1

Type escape sequence to abort.
Tracing the route to 181.1.0.1

  1 160.1.26.2 32 msec 36 msec 32 msec
  2 160.1.12.1 36 msec 32 msec *

tracerouteコマンドの表示結果と意味は次の表のようになります。

表示結果 意味
nn msec 経路上の各ホストに対してのmsec単位のランドトリップ時間
* プローブタイムアウト
A アクセスリストなどで管理上禁止されている
Q 送信先がビジーなため送信元抑制メッセージを受信した
U ポートに到達できない
H ホストに到達できない
N ネットワークに到達できない
P プロトコルに到達できない
? 不明なエラー

拡張tracerouteコマンドで、tracerouteを行うときのパケットのパラメータを柔軟に指定することができます。IPアドレスやホスト名を指定せずにtracerouteコマンドを実行することで拡張tracerouteとなります。

以下は、拡張tracerouteコマンドの実行例です。

R2#traceroute
Protocol [ip]:
Target IP address: 10.3.3.3
Source address:
Numeric display [n]:
Timeout in seconds [3]:
Probe count [3]:
Minimum Time to Live [1]:
Maximum Time to Live [30]:
Port Number [33434]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Type escape sequence to abort.
Tracing the route to 10.3.3.3

  1 192.168.23.3 20 msec *  16 msec

拡張tracerouteコマンドで指定するパラメータの概要をまとめると、次の表のようになります。

パラメータ 概要
Protocol [ip] レイヤ3プロトコル
Target IP address 宛先IPアドレス
Source address 送信元IPアドレスまたはインタフェース
Numeric display [n] IPアドレスのみの表示
Timeout in seconds [3] タイムアウトの秒数
Probe count [3] Tracerouteで送信するプローブ(探索)パケット数
Minimum Time to Live [1] TTLの最小値
Maximum Time to Live [30] TTLの最大値
Port Number [33434] UDPプローブパケットのポート番号
Loose,Strict, Record, Timestamp, Verbose [none] IPヘッダのオプションの指定
[]内はデフォルトの値

この表にあるように拡張tracerouteコマンドでは、送信元IPアドレスやインタフェース、TTLの値などを指定できます。