連載
» 2003年05月03日 05時00分 UPDATE

Tech TIPS:Windowsのtracertでネットワークの経路を調査する

tracertを使うと、目的のホストまでの途中で通過したルータのIPアドレスや、そのルータまでのパケットの応答時間を調べることができる。この値を調べることにより、指定されたホストまでのネットワークの経路やルーティングの状態、混雑の具合などが分かる。ただしtracertに応答しないホストも多く、その場合は応答時間は表示されない。

[打越浩幸,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 9x/Windows Me/Windows 2000 Professional/Windows XP Professional/Windows XP Home Edition/Windows 2000 Server/Windows 2000 Advanced Server


解説

 TCP/IPネットワークにおける基本的なトラブルシューティング・ツールとして「pingコマンド」がある。このコマンドは、指定されたあて先ホストに対して、ICMPプロトコル(TCP/IPプロトコルにおける、基本的な制御用プロトコル)を送信し、その応答状態を表示させるコマンドである。pingコマンドの使い方については、「TIPS:pingでネットワーク・トラブルの原因を調査する」を参照していただきたい。

 このpingと同様の目的に使われるコマンドとして、Windowsにはtracertというコマンドが用意されている(UNIXやLinuxなどでは「traceroute」という名称になっている)。tracertコマンドも、pingと同じくICMPプロトコルのEcho要求を送信することにより、指定されたあて先への到達可能性を調査する点では同じであるが(UNIX版ではICMPプロトコル以外にUDPプロトコルも使用することができる)、ルーティングの途中で経由したホスト(ルータ)を逐一表示するという点が異なる。

 tracertでは、TCP/IPプロトコルにおけるTTL(Time To Live)を使って途中のルータのIPアドレスを求めている。TTLとは、IPヘッダ中に含まれる特別なフィールドであり、IPパケットが通過可能なルータの最大数を表している。ルータがIPパケットをルーティングする場合、ルータを1つ通過するたびにこのTTL値が減らされ、0になるとIPパケットは廃棄される(詳細は「基礎から学ぶWindowsネットワーク第10回― 2.IPフラグメンテーション」参照)。このTTLの値はデフォルトでは64とか128、255など、十分大きな値にセットされていることが多いが、tracertではわざと小さな値にしてルーティングの途中でTTLが0になるようにしている。0になるとIPパケットは廃棄されるが、同時に、そのルータから送信元のIPアドレスに対して、「あて先不達(Destination unreachable)」というICMPのエラー・パケットが送り返されてくる。tracertではこのICMPパケットを受信することにより、どこのルータでTTLが0になったか、つまりどこまでIPパケットが届いていたかを知ることができる。TTLの値を1から順番に1つずつ大きくしてIPパケットを送信することにより、目的のホストまでの経路中に存在するルータを調べることが可能になる。

 組織内のネットワークの場合、通過するルータの数もせいぜい数段くらいしかないので、tracertの出番はあまり多くない。だがインターネット上のホストと通信する場合は、経路の途中でトラブルが発生し、通信ができなくなることもしばしばである。そのような場合には、実際に経路が途中で途絶えているのか、それとも単にネットワークが混雑して通信が滞っているのかなどを見極めるためにtracertを活用することができる。

●tracertの使い方

 tracertコマンドの使い方は、以下のように、引数を付けずにコマンドを実行すると表示される。

C:\>tracert

Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name

Options:
    -d                 Do not resolve addresses to hostnames.
    -h maximum_hops    Maximum number of hops to search for target.
    -j host-list       Loose source route along host-list.
    -w timeout         Wait timeout milliseconds for each reply.



 pingコマンドと同様に、引数にはあて先となるホスト名(IPアドレスかFQDN名)を指定する。

 「-d」オプションは、IPアドレスから名前(FQDN名)を求めないようにするためのオプションである。デフォルトでは、通過したルータのIPアドレスから、DNSを使ってFQDN名を求めて表示するようになっているが、この名前解決のためにいくらか時間がかかるので、これを省略することができる。またFQDN名を割り当てられていないIPアドレス(ルータ)も数多く存在するので、このような場合にも-dを利用すると、結果を素早く表示させることができる。

 「-h <ホップ数>」オプションは、tracertで設定する最大TTL数を指定するために利用される。デフォルトでは「30」となっているので、最大では経路途中で通過できるルータ数は最大でも30台までに制約される。経路途中に30台以上ルータが存在する場合は(30ホップよりも遠くにある場合は)、tracertは処理を打ち切ってしまうので、必要ならばこのオプションを利用して、より大きな値を指定する必要がある。

 「-j <ホストリスト>」は、通過する経路(ルータ)を明示的に指定する場合に利用する。このオプションはpingでも利用可能であり、一般的には「ルーズ・ソース・ルーティング(緩やかなソース・ルーティング)」と呼ばれるルーティング処理で利用される。「ソース・ルーティング」とは、ルーティングの途中で使用するルータを強制的に指定するルーティング方法であり、あらかじめIPパケットの中に、通過すべきルータの一覧リスト(最大で9台まで指定可能)を埋め込んでおく手法である(通常はルータの持つルーティング・テーブルに従ってルーティング処理が行われる)。「ストリクト・ソース・ルーティング(厳密なソース・ルーティング)」は、指定されたルータ「だけ」を通過するようにルーティングする方法であり、「ルーズ・ソース・ルーティング」は、指定されたルータ「以外も」利用してルーティングすることができる。pingコマンドではこの両方のソース・ルーティングが利用できるが、tracertではルーズ・ソース・ルーティングだけが利用可能となっている。

 「-w <待ち時間>」オプションは、ルータからのICMPパケットを受信するまでの待ち時間を指定する。デフォルトでは「4000(=4秒。1/1000秒単位で指定する)」であり、この時間を超えてもパケットを受信できない場合は、応答時間の代わりに「*」が表示される。

●tracertの使用例

■ローカルのホストへのtracertの例
 まずは、LAN上のホスト(つまりネットワーク的に近くにあるホスト)へのtracertを実行してみよう。

C:\>tracert 10.10.22.32 ……10.10.22.32へ向けて実行する

Tracing route to 10.10.22.32 over a maximum of 30 hops

  1    <1 ms    <1 ms    <1 ms  server3 [192.168.0.13] ……通過したルータ
  2    <1 ms    <1 ms    <1 ms  10.10.22.32 ……目的のホスト

Trace complete.



 この場合は、目的のホスト(10.10.22.32)に到達するまでに、途中に1台のルータだけしか存在していない。「<1 ms」という値が表示されているが、これは、そのホストからの応答が「1msec(1ミリ秒)」以下であったということを表している。3つ表示されているのは、3回パケットを送って、3回とも応答が1ミリ秒以下であったということである。3回実行するのは、ネットワークの混雑などの影響を見るためであり、ばらつきが大きいようであればネットワークがより混雑していると判断できるであろう。

 1行目ではホスト名が表示されているが、2行目ではホスト名は表示されていない。これは、IPアドレスからFQDN名への逆引きができなかったからである。

■インターネット上のホストへのtracertの例
 今度はインターネット上のホストへtracertを実行してみよう。ここではインターネットへは、100Mbpsの光ファイバ回線を使って接続されている。

C:\>tracert -d www.microsoft.com

Tracing route to www.microsoft.akadns.net [207.46.249.222]
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  192.168.0.16 ……社内のデフォルト・ゲートウェイ
  2    <1 ms     1 ms    <1 ms  210.150.XXX.XXX ……インターネット・ルータ
  3     2 ms     1 ms     2 ms  210.153.XXX.XXX
  4     4 ms     2 ms     1 ms  210.153.XXX.XXX
  5     2 ms     2 ms     2 ms  210.153.XXX.XXX
  6     3 ms     3 ms     3 ms  202.239.XXX.XXX ……ここまではISP内部のネットワーク
  7     4 ms     3 ms     3 ms  203.138.XXX.XXX
  8     3 ms     4 ms     4 ms  61.213.XXX.XXX
  9     4 ms     5 ms     3 ms  61.120.XXX.XXX
 10     4 ms     4 ms     4 ms  61.213.XXX.XXX
 11   133 ms   132 ms   132 ms  129.250.XXX.XXX ……ここから急に遅くなっている
 12   134 ms   133 ms   133 ms  129.250.XXX.XXX
 13   134 ms   134 ms   134 ms  129.250.XXX.XXX
 14   134 ms   133 ms   133 ms  129.250.XXX.XXX
 15   194 ms   194 ms   195 ms  198.32.XXX.XXX
 16   195 ms   196 ms   193 ms  207.46.XXX.XXX
 17   203 ms   203 ms   204 ms  207.46.XXX.XXX
 18   218 ms   218 ms   218 ms  207.46.XXX.XXX
 19   218 ms   218 ms   217 ms  207.46.XXX.XXX
 20     *        *        *     Request timed out. ……ここから先は応答なし
 21     *        *        *     Request timed out.
 22     *        *        *     Request timed out.
 23     *        *        *     Request timed out.
 24     *        *        *     Request timed out.
 25     *        *        *     Request timed out.
 26     *        *        *     Request timed out.
 27     *        *        *     Request timed out.
 28     *        *        *     Request timed out.
 29     *        *        *     Request timed out.
 30     *        *        *     Request timed out.

Trace complete.

C:\>



 最初の10行ほどは、応答値が数msecであるが、これは国内のインターネット回線を経由しているからである。11行目から急に応答値が132msec以上になっているが、ここから先は海外(アメリカ)のルータからの応答なので、海底ケーブルを経由する分だけ遅くなっている。3つの応答はそれぞれ似たような値になっているので、ネットワークはあまり混雑していないように見受けられる。

 20行目から先は、すべて「* * * Request timed out.」しか表示されていない。これは、そのルータからの応答がなかったということを示している。ルータやファイアウォールによっては、このようにtracertに対して応答を返さないように設定されていることも多く、その場合はこのように表示される。

■ルーティングが失敗する場合のtracertの例
 途中でルーティングが行えなくなった場合は、次のようになる。

C:\>tracert -d 172.16.1.2 ……プライベートIPアドレスへのルーティング例

Tracing route to 172.16.1.2 over a maximum of 30 hops

  1    <1 ms    <1 ms    <1 ms  192.168.0.16
  2    <1 ms     1 ms    <1 ms  210.150.XXX.XXX
  3     2 ms     2 ms     2 ms  210.153.XXX.XXX
  4     3 ms     3 ms     2 ms  210.153.XXX.XXX
  5     2 ms     2 ms     5 ms  210.153.XXX.XXX
  6  202.239.XXX.XXX  reports: Destination host unreachable.

Trace complete.



 ここでは「172.16.1.2」というプライベートIPアドレスに対してtracertを実行してみた。プライベートIPアドレスなので、インターネットへ向けてtracertを実行しても、途中で必ずルーティングが失敗することになる。途中で有効な経路がなくなったような場合は、このように最後のルータから「202.239.XXX.XXX reports: Destination host unreachable.(あて先へ到達できなかった)」という応答が戻ってくることがある。これらの情報により、途中のルータのルーティング・テーブルの設定ミスや経路の途絶などが分かる。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。