Top > Master of Network > traceroute - ネットワークの経路を調査する
 

traceroute(tracert)
〜ネットワークの経路を調査する


加地眞也
2001/8/30

 目的と用途

 traceroute(Windowsでは「tracert」)コマンドは、あるホストから別のホストまでのネットワーク経路をリスト表示するコマンドだ。ここでいう経路とは、ホスト間を接続するルータ(ゲートウェイ)という意味で、経路上にどのようなルータが位置しているかを表示する。

 おもな用途としては、pingでの動作が正常でなかった場合など、表示される経路情報からホスト自身や経路上のルータのルーティング設定が正しいかどうかを確認するために用いられる。また、目的のホストまでのルータのリストから、設置場所が不明なホストのおおまかな場所を推測する、といった用途にも使えるだろう。そのほか、各ルータとのレスポンス時間などの統計値も表示されるので、経路上のボトルネックを探るなどの簡易なネットワーク性能評価にも役立つ。

 書式

●Windowsの場合
tracert[ -d][ -h 最大ホップ数][ -j ゲートウェイ・リスト][ -w タイムアウト時間] 対象ホスト(ホスト名またはIPアドレス)

-d
結果に表示するIPアドレスからDNSホスト名への名前解決を行わない
-h
使用する最大TTL。つまりここで指定した数のルータしかホップしない
-j
経由すべきゲートウェイ(ルータ)のアドレスを最大9個まで指定できる。ただし指定されていないゲートウェイも経由できる(loose source routed)
-w
タイムアウト時間を指定する。単位はミリ秒


●Linuxの場合

traceroute[ -dFInrvx][ -g ゲートウェイ・リスト][ -i インターフェイス][ -f 初期TTL値][ -m 最大TTL値][ -p ポート番号][ -q 試行回数][ -s 送信元アドレス][ -t TOS][ -w タイムアウト時間] 対象ホスト(ホスト名ま たはIPアドレス)[ パケットサイズ]

-d
デバックモードで動作する
-F
IPパケットの分割(フラグメント)を禁止する
-I
UDPパケットではなく、ICMP Echo Requestを用いる
-n
出力をIPアドレスのみに抑制する(DNS逆引きを行わない)
-r
ルーティングテーブルを無視して直接パケットを指定したホストに転送するように指示する。すなわち、同一の物理ネットワーク上に目的のホストがない場合はエラーになる
-v
詳細モード
-x
ICMPのCheckSumの評価を行う
-g
経由すべきゲートウェイ(ルータ)のアドレスを最大8個まで指定できる。ただし指定されていないゲートウェイも経由できる(loose source routed)
-i
指定されたインターフェイス(ネットワークカード名)を用いて実行する
-f
使用するTTLの初期値を指定する。つまりこの初期値のホップ数のゲートウェイからの表示となる
-m
使用するTTLの最大値を指定する。つまりこの最大値のホップ数のゲートウェイまでの表示となる
-p
使用するUDPパケットのポート番号を指定する(DPパケットを使用する場合のみ)
-q
1つのゲートウェイに対する試行回数を指定する。デフォルトは3
-s
指定されたIPアドレスから実行する(Source Addressを指定する)
-t
パケットのTOS(Type Of Service:サービスタイプ)を指定された値に設定する
-w
タイムアウト時間を指定する。単位は秒。デフォルトは5秒


 使用方法

 最も簡単な使用方法は、引数として経路を調査したいホストを指定する。ホスト名かIPアドレスが指定できる。

●Windowsでの使用例
C:\>tracert www.example.net

Tracing route to VENERA.ISI.EDU [128.9.176.32]    <---(1)
over a maximum of 30 hops:                        <---(2)

  1    40 ms    40 ms    70 ms  gate.isp.xx.jp [203.xxx.xxx.xxx]                    <---+
  2    40 ms    40 ms    40 ms  tokyo-gate.isp.xx.jp [203.xxx.xxx.xxx]                  |
  3    40 ms    40 ms    40 ms  xxx.isp.xx.jp [203.xxx.xxx.xxx]                         |
  4    40 ms    40 ms    30 ms  xxx.xxx.isp.xx.jp [203.xxx.xxx.xxx]                     |
  5    40 ms    40 ms    40 ms  tky.xxx.xxx.isp.xx.jp [203.xxx.xxx.xxx]                 |
  6    40 ms    40 ms    40 ms  so-0-3-0.a01.tokyjp01.jp.ra.verio.net [61.120.15.113]   |
  7    80 ms    40 ms    40 ms  ge-1-0-0.r00.tokyjp01.jp.bb.verio.net [61.120.14.93]    |
  8   170 ms   161 ms   150 ms  p4-1-2-0.r03.snjsca03.us.bb.verio.net [129.250.2.1]     +-(3)
  9   150 ms   161 ms   210 ms  p4-7-2-0.r04.snjsca03.us.bb.verio.net [129.250.2.157]   |
 10   190 ms   171 ms   170 ms  p16-3-0-0.r01.snjsca03.us.bb.verio.net [129.250.2.63]   |
 11   201 ms   180 ms   190 ms  p4-2-0-0.r00.lsanca01.us.bb.verio.net [129.250.2.26]    |
 12   180 ms   230 ms   190 ms  ge-2-0-0.a02.lsanca02.us.ra.verio.net [129.250.9.116]   |
 13   160 ms   200 ms   211 ms  ge-2-3-0.a02.lsanca02.us.ce.verio.net [198.172.17.163]  |
 14   200 ms   190 ms   180 ms  dmz-isi.isi.edu [198.32.16.49]                          |
 15   161 ms   170 ms   230 ms  128.9.32.7                                              |
 16   230 ms   191 ms   200 ms  venera.isi.edu [128.9.176.32]                       <---+

Trace complete.

 例では、「www.example.net」への経路を表示している(経路情報は一部マスクしている)。

 (1)の部分は、以下の結果がこのホスト名とIPアドレスへの経路であることを示している。この例では、「引数で指定したホスト名」と「実際に表示されるホスト名」が異なっていることにも注意しよう。これは、DNS上では「www.example.net」が「VENERA.ISI.EDU」の別名(CNAMEレコード)として登録されているため、このように表示されている。もちろん別名でない場合には、そのままのホスト名が表示される。

 (2)は最大で30個の経路情報を表示することを示している。ルータにより、あるサブネットから別のサブネットへパケットがルーティングされることを「ホップ(Hop)」と呼び、この「ルータを1つ越える」単位を1ホップとして数えることがある。「30hops」とは、最大30台までのルータをリストアップすることを意味する。また、このホップはTTL(後述)の最大値とも一致することになる。

 (3)が経路情報の一覧となる。各行は順に、「順序番号」「各ルータへのレスポンス時間(試行3回分のそれぞれの結果で単位はミリ秒)」「(DNSに登録されている場合)ホスト名」「IPアドレス」を意味している。16番目の結果は指定したホスト自身であるので、経路上には15台のルータが配置されていることが分かる。

 各ルータへのレスポンス時間は、(この例では)それぞれ3回の試行結果が表示されている。この情報を元に、極端に時間がかかっているルータ間がボトルネックであると理解できる。この例では、どうやらルータ名から推測するに、日本〜アメリカ間の接続網が最も全体のレスポンスに影響を与えていると推測できる。また、この試行回数はオプションで変更することもできる。

tracerouteとTTL

 traceroute(tracert)コマンドでは、こうした経路上に存在する各ルータを割り出すために、IPパケットにおけるTTL(Time To Live)の仕組みをうまく利用している。TTLとは、IPパケットヘッダに指定可能な「生存時間」という意味だ。ただし、実際には時間ではなく、「ホップ数」を意味している。つまり、そのパケットが「生存」できるホップ数を指定するのがTTLなのである。

 元々、インターネットに代表されるIPネットワークはさまざまなネットワークの集合体であるため、接続環境やルーティング設定についても、完全なものである保証はまったくない。もしルーティング設定が間違っていると、一度発生したパケットが延々ループに陥って、いつまでもインターネット上をさまよい続けるという事態も考えられないではない。そこで、IPパケットの送出時には必ずTTLを設定することになっている。TTLは最大255が設定可能で、ルータをホップするごとに必ずTTLから1減らされる。そして、0に達したパケットはルータが破棄することになっている。

図1 TTLとICMP Time Exceeded

 では、どの程度のTTLなら十分かという問題は、目的ホストまでどれだけのルータやゲートウェイを越える可能性があるかということだ。つまりこれは、インターネットの「広さ」と密接に関連している。通常は30程度までとされているが、一般的なアプリケーションでは255や128など十分な大きさを指定する場合が多いようだ。

Tracing route to host2.isp.com [203.XXX.XXX.XXX]
over a maximum of 30 hops:

  1    40 ms    40 ms    40 ms  rt1.isp.xx.jp [203.xxx.xxx.xxx]
  2    50 ms    50 ms    50 ms  rt2.isp.xx.jp [203.xxx.xxx.xxx]
  3    70 ms    70 ms    80 ms  gw.isp.com [203.xxx.xxx.xxx]
  4    70 ms    70 ms    70 ms  host2.isp.com [203.xxx.xxx.xxx]

Trace complete.
図2 tracerouteの動作

 パケットが単に破棄されたままでは、送信元ホストは正しく相手のホストにパケットが届いたかどうかは分からない。そこで、ルータの設定にもよるのだが、破棄したルータはICMPのTime Exceededエラー(Type=11)を送信元ホストへ報告することになっている。この通知を受け取ることで、送信元ホストはルーティングなどに何らかの問題が発生していることを知ることができるわけだ。

 tracerouteコマンドでは、このTTLを1から順に増やして試行を重ねて結果を得ている。例えば、まず最初にTTLを1としてIPパケットを対象ホストへ送出*1すると、1番目のルータ(1ホップ目)が受け取った時点でTTLを減算した結果、0となってしまうので、ルータはICMP Time Exceededエラーを返答する。これが1台目のルータの結果となる。次にTTLを2にして送出すれば、2台目のルーターの結果が得られる。

 このように、目的のホストに到達するまでTTLを増加しつつ次々にパケットを送出することで、tracerouteの結果を得ることができるというわけだ。

*1LinuxではUDPパケットを、WindowsではICMP Echo Requestパケットをデフォルトで用いる。Linuxでは-IオプションでICMPに変更することもできる


対応していないルータも存在する

 調査するホストによっては、次のような結果が得られることもある。

        :
  2    40 ms    40 ms    40 ms  tokyo-gate.isp.xx.jp [203.xxx.xxx.xxx]
  3    * * *
  4    40 ms    40 ms    30 ms  xxx.xxx.isp.xx.jp [203.xxx.xxx.xxx]
        :

 これは、このルータがICMP Time Exceededに対応していないためだ。前述のように、tracerouteはICMP Time Exceededエラーの結果を受け取らないと結果を表示できない。この例では、おそらく3番目のルータからエラーが返らず、tracerouteコマンドがタイムアウトしたため、このような表示になっていると考えられる。

 また、単に対応していないというだけでなく、ルータによってはセキュリティ上の要件からICMPパケットをフィルタしている場合もある。おもにISPの管理するルータでは、そうしたことが多いようだ。

 

関連記事
  ネットワークの疎通を確認するには?
エラー報告プロトコル「ICMP」の動作原理を理解する
  ルーティングの設定は正しいか?
ルーティングの仕組みを理解して設定を見直す
 

関連ネットワーク・コマンド/ツール
  ping
〜ネットワークの疎通を確認する
traceroute(tracert)
〜ネットワークの経路を調査する
  route
〜ルーティングテーブルの設定/表示
 

 

「連載 ネットワーク・コマンドでトラブル解決」

 



 



一歩進んだ
企業ネットワークを
★OCN VPN Solution★


□□フォーラム開催□□
様々な導入事例をご紹介
□無料事前登録受付中□



Click Here!

URL送信この記事のURL送信
印刷用この記事の印刷表示
</COMMENT></TD></TR> <TR bgColor=#dddddd> <TD><FONT size=2><A href="javascript:KeepIt();"><IMG height=18 alt="kee<p>oint保存" src="traceroute - ネットワークの経路を調査する.files/ico_kpt.gif" width=24 align=absMiddle border=0>kee&lt;p&gt;ointで保存</A></FONT></TD></TR> <TR bgColor=#dddddd> <TD><COMMENT>
検索IT用語・記事検索



マーキュリー、新戦略で製品を統合へ

わずか半年でメジャーバージョンアップする「Borland JBuilder 8」

[OracleWorld 2002開催] グリッド・コンピューティングは、「われわれのコアバリュー」

「IP電話へアクセル踏む」、NTTコムなど3社が無料通話提供

シスコ社長黒澤氏、10分間の「基調講演」で語る日本再生の道

日銀システム担当者が語るIT苦労話

ヤフーBBテレビを発表するソフトバンクの真意


ニュース一覧へ →



プレゼント◆MCA対応
書籍+受験チケット


実録キャリア相談:
損保系プロマネ31歳


-PR-

OracleWorldのすべて
見せます、教えます!


高速PDF生成ツール
「biz-Stream」紹介


数値化不可能なデータ
を検索可能にするSPSS


シスコシステムズ:
緊急インタビュー!


必見!オラクル主催
技術者向け1Dayセミナー


ANA導入担当者が語る
PDF活用/成功のカギ!


NTTコミュニケーション
ズ:緊急インタビュー!


MCP資格をスキルの
土台作りに生かす方法

@IT FYIへ →





 
  @IT 新着記事
WS-Security詳細解説(前編)
PKIとPMIを融合させる次世代言語XACML
要注目! 中国ネットビジネスの経営者たち
XMLの格納方法を2種類備えるDB2
ASP.NETのデータ連結 Part2 DataListコントロール
Linux Tips
Business & IT DataLinks(IT業界データ集)
Tablet PCの企業クライアントとしての実用性
確実なスキルアップができる仕事を選ぶ
「相乗りICカード」に求められるポリシー
第3回 Active Directory関連用語集(前)
第13章 処理を委譲するC#のデリゲート

 
   
 

Master of IP Networkフォーラムのトップへ
記事へのご意見、ご感想はIP Network会議室
@ITクラブへの入会はこちら

IP Networkフォーラムスポンサー

Copyright(c) 2000-2002 atmarkIT
著作権はアットマーク・アイティまたはその記事の筆者に属します
@ITに掲載されている記事や画像などの無断転載を禁止します
弊社へのご連絡は「@ITへのお問い合わせ」をご覧ください