UNIX のコマンド:tracerouteコマンド
技術ドキュメント目次 -> UNIX のコマンド -> tracerouteコマンド本技術ドキュメントは、2002~2004年頃に作成したものが多いです。
内容が古くなっていることもあるかと思いますが、ご了承ください。
【低価格SSL証明書】弊社運営の低価格SSL証明書販売サイト、翌月末払いなど請求書払いも可能。
◆ tracerouteコマンドとは
tracerouteコマンドを使用することで、tracerouteを実行したマシンから指定したマシンに対しての通信が、
どのような経路をたどって行われているかを調査することが可能になります。
◆ tracerouteコマンド実行例
例えば、www.ok24.jp のマシンから、www.yahoo.com のに対して traceroute を実行した際の結果は次のようになります。
複数のルーター(ゲートウェイ)を経由して www.yahoo.com まで到達することが確認できます。
$ traceroute www.yahoo.com traceroute to www.yahoo.akadns.net (66.94.230.49), 64 hops max, 44 byte packets 1 gw (211.13.206.129) 1.117 ms 0.203 ms 0.729 ms 2 210.155.133.161 (210.155.133.161) 2.951 ms 0.903 ms 0.617 ms 3 IKB-CORE1-CBB-GE-4-2.mex.ad.jp (210.155.130.165) 4.437 ms 3.866 ms 1.997 ms 4 IKB-EDGE-BB-GR5-GE-0-0.mex.ad.jp (210.155.139.114) 1.335 ms 1.050 ms 1.315 ms 5 202.239.171.141 (202.239.171.141) 1.296 ms 0.818 ms 1.020 ms 6 otecbb104.kddnet.ad.jp (203.181.96.120) 1.018 ms 0.863 ms 1.056 ms 7 gsr-la2.kddnet.ad.jp (203.181.100.6) 122.704 ms 122.148 ms 123.364 ms 8 tr-ny3.kddnet.ad.jp (203.181.106.162) 190.514 ms 183.549 ms 192.927 ms 9 ix-dc1.kddnet.ad.jp (203.181.106.170) 196.989 ms 197.234 ms 196.644 ms 10 exchange-cust1.ash.equinix.net (206.223.115.16) 185.548 ms 186.033 ms 184.405 ms 11 UNKNOWN-216-115-101-128.yahoo.com (216.115.101.128) 275.213 ms 276.607 ms 274.829 ms 12 ge-1-0-3.msr2.scd.yahoo.com (66.218.82.201) 289.998 ms ge-1-0-3.msr1.scd.yahoo.com (66.218.82.197) 275.954 ms ge-1-0-2.msr1.scd.yahoo.com (66.218.82.193) 280.244 ms 13 UNKNOWN-66-218-82-219.yahoo.com (66.218.82.219) 290.292 ms UNKNOWN-66-218-82-217.yahoo.com (66.218.82.217) 290.666 ms UNKNOWN-66-218-82-219.yahoo.com (66.218.82.219) 290.851 ms 14 p18.www.scd.yahoo.com (66.94.230.49) 273.433 ms 273.850 ms 274.042 ms $ |
また、-n オプションを付加して実行すると、
次のようにホスト名表示が行われなくなります。
ホスト名の解決のできないIPが途中にある場合などに、
早く情報が表示されるので便利です。
$ traceroute -n www.yahoo.com traceroute to www.yahoo.akadns.net (66.94.230.44), 64 hops max, 44 byte packets 1 211.13.206.129 0.258 ms 6.913 ms 0.303 ms 2 210.155.133.161 0.697 ms 0.483 ms 0.564 ms 3 210.155.130.165 2.183 ms 2.791 ms 1.987 ms 4 210.155.139.146 1.306 ms 1.245 ms 0.979 ms 5 202.239.171.141 1.190 ms 0.848 ms 0.791 ms 6 203.181.96.119 3.364 ms 0.829 ms 0.890 ms 7 203.181.100.46 122.311 ms 122.637 ms 122.225 ms 8 203.181.106.130 187.867 ms 212.743 ms 187.073 ms 9 203.181.106.170 202.712 ms 202.880 ms 203.425 ms 10 206.223.115.16 190.719 ms 189.492 ms 189.402 ms 11 216.115.101.128 281.279 ms 280.975 ms 280.310 ms 12 66.218.82.201 293.871 ms 66.218.82.197 281.194 ms 66.218.82.193 285.935 ms 13 66.218.82.219 295.540 ms 66.218.82.217 296.726 ms 66.218.82.219 301.681 ms 14 66.94.230.44 278.054 ms 280.046 ms 278.671 ms $ |
◆ tracerouteコマンドの内部処理
tracerouteコマンドは次のような内部処理を行っています。1. パケットのTTLを1にして、指定のホストにUDPパケットを投げる。
2. パケットのTTLを2にして、指定のホストにUDPパケットを投げる。
3. パケットのTTLを3にして、指定のホストにUDPパケットを投げる。
..... (指定のホストに到達するまで繰り返す)
パケットのTTLとは Time To Live の略で、
「いくつ先のホストまでパケットを投げるか=経由可能なルーターの上限数」
を制御するパケットヘッダの制御値になります。
TTLは通常、ルーターのルーティング制御のあやまりにより、
目的のホストまで永遠にたどり着かないパケットの流れをどこかで消滅させる
ために使用されるものなのですが(多くの実装でデフォルト値は256のはず)、
tracerouteコマンドはそれを利用して経路情報を調査しています。
投げたパケットがTTLの上限に達してしまうと、
そのことを検知したルーターからICMPエラーでその旨が通知されますので、
そのICMPエラーがどのIPから返ってくるかを調べることで、
traceroute は経路情報を確認しています。
ですので、
UDPやICMPのパケットに対してフィルタリングのかかっている環境では、
tracerouteが思うように動かないことも時々あります。
◆ Windowsマシンでtracerouteと同等のことを行うには
DOSのプロンプトから、tracert というコマンドを実行すると、
UNIXの traceroute とほぼ同じようなことを実現できます。
■ UNIX のコマンド についての他のドキュメント
- cdコマンド
- cutコマンド
- dirnameコマンド
- ftpコマンドのバッチ処理
- loggerコマンド
- netstatコマンド
- nkfコマンド
- sortコマンド
- topコマンド
- tracerouteコマンド
- unameコマンド
- wcコマンド
- wget コマンドでミラーを取る
- whoisコマンド
- writeコマンド
- xargsコマンド(複数ファイルの一括検索で超便利)
■ 他のグループのドキュメント
Apache / Linux / FreeBSD / OpenSSL / Perl / HTTPプロトコル / Jakarta Tomcat / Java / NetBSD / Oracle / PostgreSQL / UNIX の C言語 / UNIX のコマンド / Windows / bind / システム運用TIPS