株式会社エスロジカル
株式会社エスロジカル
セキュリティ、Web開発、Unix開発、Go言語

■ UNIX のコマンド:tracerouteコマンド

技術ドキュメント目次 -> UNIX のコマンド -> tracerouteコマンド

本技術ドキュメントは、ここしばらくメンテナンスをしておりません。
内容が古くなっている可能性などございますこと、ご理解を頂けますようお願いいたします。


サイフにやさしいSSL証明書
【低価格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 のコマンド についての他のドキュメント


■ 他のグループのドキュメント

Apache  /  Linux  /  FreeBSD  /  OpenSSL  /  Perl  /  HTTPプロトコル  /  Jakarta Tomcat  /  Java  /  NetBSD  /  Oracle  /  PostgreSQL  /  UNIX の C言語  /  UNIX のコマンド  /  Windows  /  bind  /  システム運用TIPS

アンケートにご協力をお願いいたします。

1. このドキュメントへの評価をご選択ください。
         

2. ご感想をお書きください。