Linuxのtracerouteコマンドで覚えておきたい使い方8個

特定のホストへのルートを確認するコマンドといえば、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アドレス)