Top > Master of Network > traceroute - ネットワークの経路を調査する |
traceroute(Windowsでは「tracert」)コマンドは、あるホストから別のホストまでのネットワーク経路をリスト表示するコマンドだ。ここでいう経路とは、ホスト間を接続するルータ(ゲートウェイ)という意味で、経路上にどのようなルータが位置しているかを表示する。 おもな用途としては、pingでの動作が正常でなかった場合など、表示される経路情報からホスト自身や経路上のルータのルーティング設定が正しいかどうかを確認するために用いられる。また、目的のホストまでのルータのリストから、設置場所が不明なホストのおおまかな場所を推測する、といった用途にも使えるだろう。そのほか、各ルータとのレスポンス時間などの統計値も表示されるので、経路上のボトルネックを探るなどの簡易なネットワーク性能評価にも役立つ。
●Windowsの場合
最も簡単な使用方法は、引数として経路を調査したいホストを指定する。ホスト名かIPアドレスが指定できる。
例では、「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とTTLtraceroute(tracert)コマンドでは、こうした経路上に存在する各ルータを割り出すために、IPパケットにおけるTTL(Time To Live)の仕組みをうまく利用している。TTLとは、IPパケットヘッダに指定可能な「生存時間」という意味だ。ただし、実際には時間ではなく、「ホップ数」を意味している。つまり、そのパケットが「生存」できるホップ数を指定するのがTTLなのである。 元々、インターネットに代表されるIPネットワークはさまざまなネットワークの集合体であるため、接続環境やルーティング設定についても、完全なものである保証はまったくない。もしルーティング設定が間違っていると、一度発生したパケットが延々ループに陥って、いつまでもインターネット上をさまよい続けるという事態も考えられないではない。そこで、IPパケットの送出時には必ずTTLを設定することになっている。TTLは最大255が設定可能で、ルータをホップするごとに必ずTTLから1減らされる。そして、0に達したパケットはルータが破棄することになっている。
では、どの程度のTTLなら十分かという問題は、目的ホストまでどれだけのルータやゲートウェイを越える可能性があるかということだ。つまりこれは、インターネットの「広さ」と密接に関連している。通常は30程度までとされているが、一般的なアプリケーションでは255や128など十分な大きさを指定する場合が多いようだ。
パケットが単に破棄されたままでは、送信元ホストは正しく相手のホストにパケットが届いたかどうかは分からない。そこで、ルータの設定にもよるのだが、破棄したルータは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の結果を得ることができるというわけだ。
|
|
これは、このルータがICMP Time Exceededに対応していないためだ。前述のように、tracerouteはICMP Time Exceededエラーの結果を受け取らないと結果を表示できない。この例では、おそらく3番目のルータからエラーが返らず、tracerouteコマンドがタイムアウトしたため、このような表示になっていると考えられる。
また、単に対応していないというだけでなく、ルータによってはセキュリティ上の要件からICMPパケットをフィルタしている場合もある。おもにISPの管理するルータでは、そうしたことが多いようだ。
関連記事 | |
ネットワークの疎通を確認するには? エラー報告プロトコル「ICMP」の動作原理を理解する | |
ルーティングの設定は正しいか? ルーティングの仕組みを理解して設定を見直す | |
関連ネットワーク・コマンド/ツール | |
ping 〜ネットワークの疎通を確認する | |
![]() |
traceroute(tracert) 〜ネットワークの経路を調査する |
route 〜ルーティングテーブルの設定/表示 | |
![]() |
「連載 ネットワーク・コマンドでトラブル解決」 |
![]() |
![]() 一歩進んだ 企業ネットワークを ★OCN VPN Solution★ ![]() □□フォーラム開催□□ 様々な導入事例をご紹介 □無料事前登録受付中□ |
![]() |
![]() |
![]() プレゼント◆MCA対応 書籍+受験チケット ![]() 実録キャリア相談: 損保系プロマネ31歳 | ||||
◆OracleWorldのすべて 見せます、教えます! ◆高速PDF生成ツール 「biz-Stream」紹介 ◆数値化不可能なデータ を検索可能にするSPSS ◆シスコシステムズ: 緊急インタビュー! ◆必見!オラクル主催 技術者向け1Dayセミナー ◆ANA導入担当者が語る PDF活用/成功のカギ! ◆NTTコミュニケーション ズ:緊急インタビュー! ◆MCP資格をスキルの 土台作りに生かす方法
|
|
|
|
||||||||
@IT
新着記事![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||||||||||
Copyright(c) 2000-2002 atmarkIT 著作権はアットマーク・アイティまたはその記事の筆者に属します @ITに掲載されている記事や画像などの無断転載を禁止します 弊社へのご連絡は「@ITへのお問い合わせ」をご覧ください |