特定のホストへのルートを確認するコマンドといえば、tracerouteコマンドだ。
今回は、そんなtracerouteコマンドで覚えておきたい使い方についてまとめてみる事にした。
1.基本的な使い方
tracerouteコマンドは、基本的には以下のように実行し、そのホストに至るまでの経路(どこのルーターを通っているか等)を確認出来る。
デフォルトでは、UDPプロトコルを利用して通信確認を行う。
traceroute 対象ホスト(ホスト名・IPアドレス)
tracerouteコマンドでは、対象のホストに向けてTTLを1づつ足して通信確認を行っている。
そのため、通信の途中で傷害が発生していたとしても、どこの経路で発生しているのかがわかるようになっている。
動作のより詳しい解説については、こちらのサイトが記述してくれている。
2.使用するプロトコル・ポートを変更する
デフォルトではUDPプロトコルが利用されるのだが、オプションを付与することでTCP、ICMPのプロトコルを利用することも出来る。
ポートを指定して回答しないようにしているルーターもある(その場合、「* * *」とだけ表示される)ため、それを回避するために使用したり、ファイアーウォールの設定確認にも利用出来る。
UDPを利用する場合(ポート指定しない場合は53番)
traceroute -U -p ポート番号 対象ホスト(ホスト名・IPアドレス)
TCPを利用する場合(ポート指定しない場合は80番)
traceroute -T -p ポート番号 対象ホスト(ホスト名・IPアドレス)
ICMPを利用する場合
traceroute -I 対象ホスト(ホスト名・IPアドレス)
実際に、デフォルトの状態とTCPを利用した状態で比べたのが以下。
デフォルトだと回答の無かったルーターも、TCPだと(一部以外)表示されるようになっている。
3.ゲートウェイを指定する
「-g」オプションを付与することで、経由するルーターを8個まで指定する事も出来る。
traceroute -g ゲートウェイアドレス1,ゲートウェイアドレス2 ... 対象ホスト(ホスト名・IPアドレス)
なお、この機能はソースルーティング方式となるため、pingの同様の機能と同じく環境によってはFWで弾かれたり、アラートが上がってしまうので注意が必要である。
4.ローカルで使用するインターフェイスを指定する
「-i」オプションを使用することで、tracerouteを行うインターフェイスを指定する事が出来る。
traceroute -i インターフェイス名 対象ホスト(ホスト名・IPアドレス)
5.pop数(TTL値)を指定する
「-m」オプションを指定することで、最大TTL値(デフォルトは30)を指定して実行することも出来る。
これで、30個以上ルーターを経由するホスト(そうそういないと思うけど)に対しても確認を行うことが出来る。
traceroute -m TTL値(最大) 対象ホスト(ホスト名・IPアドレス)
6.tracerouteをルート途中から開始する
「-f」オプションを指定することで、開始するTTLの値を指定することが出来る。
最初に記述したように、tracerouteはTTL値を1個づつ足していき、経路の確認を行っている。つまりこのオプションを指定することで、経路の途中から確認を開始することが出来る。
traceroute -m TTL値(開始) 対象ホスト(ホスト名・IPアドレス)
7.パケットの応答時間を指定する
「-w」オプションでパケットの応答待機時間を指定して、時間の短縮を行う事も出来る。
traceroute -w 応答待機時間(秒) 対象ホスト(ホスト名・IPアドレス)
8.名前解決させない
「-n」オプションを指定することで、DNSでの名前解決を行わせないようにすることが出来る。
名前解決に要する時間が無いため出力が早くなるので、ドメイン名等が不要であれば付与することを勧める。
traceroute -n 対象ホスト(ホスト名・IPアドレス)