当記事ではLinux、Windows環境でのtracerouteの使用方法について記載いたします。
目次
tracerouteとは
tracerouteは、コンピュータからIPネットワーク上の対象機器までの経路を調べ、パケットがそこに至るまでの中継機器のアドレス等を一覧で表示する便利な機能です。
例えばPingで通信相手からの正常な応答がなかった場合、tracerouteを使用することで経由するルータの中でどれが原因となっているかを突き止めることができます。
また目的地までに通過する各ルータからのレスポンス時間の統計値を表示したり、想定した経路を通っているかの確認にも使うことが出来ます。
traceroute環境設定
実際にtracerouteを使用するための設定を行います。
なお、今回使用する環境は以下の通りです。
Linux : AlmaLinux8.7
Windows : Windows10
Linuxでの設定について
- 初めにtracerouteを使用するために必要なパッケージがインストールされているかを、dnfコマンドで確認します。
# dnf list installed traceroute
- tracerouteパッケージをインストールします。
# dnf install traceroute
- パッケージがインストールされていることを確認します。
# dnf list installed traceroute
Windowsでの設定について
Windowsキー + Rでダイアログを開き、「cmd」を入力してenterキーを押します。
Windows版ではtracerouteコマンドではなく、tracertコマンドとなります。
コマンドプロンプトでtracertと入力し、コマンドが使えることを確認します。
>tracert
tracerouteコマンドを使ってみる
では実際にtracerouteコマンドを使用して目的地までの経路を表示してみましょう。今回はGoogleの公開DNSサーバ(8.8.8.8)までの経路を確認します。
書式
# traceroute [オプション] ホスト名
Linuxの場合
# traceroute 8.8.8.8
経路がすべてアスタリスク(*)になっており表示されていません。
LinuxのtracerouteはUDPによる通信経路の確認を行っている為、途中経路でファイアウォールが存在している場合、通信が弾かれてしまいます。
今回の場合、通信がファイアウォールによって弾かれたことが原因で、経路情報が取得できませんでした。
※Pingはちゃんと通る↓
2行目以降の情報を表示させるには、-Iオプションを追記します。
# traceroute -I 8.8.8.8
目的地までの経路がすべて表示されました。(※社内の環境はマスキングしています)
この後のオプション説明でも記載しますが、-Iをつける事でプロトコルをUDPからICMPに変更して経路を取得することが出来ます。
Windowsの場合
Windowsでtracerouteを使用する場合はtracertコマンドを使用します。
>tracert 8.8.8.8
目的地までの経路が表示されました。
Windows版では通信プロトコルがデフォルトでICMPに設定されているため、オプションを付けなくてもデータを取得することが出来ます。
Linuxで途中経路が表示されない場合
-Iオプションを付けても表示されないものに関しては、ルータがtracerouteに応答しないように設定されている可能性が高いです。
実行結果の表示内容
今回の実行結果を元に表示内容の見方について記載します。
Linux
① ルータの経由順(数字が小さいほど自分のコンピュータに近い)
② ルータのドメイン名(IPアドレス)
③ 送信したパケットの応答時間(1回目,2回目,3回目)
Windows
① ルータ経由順(数字が小さいほど自分のコンピュータに近い)
② 送信したパケットの応答時間(1回目,2回目,3回目)
③ ルータのドメイン名(IPアドレス)
オプションコマンド
各オプションの説明と、表示内容について記載します。
Linux版で使用できるオプション
-n | ドメイン名を非表示にします |
-A | IPアドレスの隣にAS番号を表示します。 |
-f | 例: -f 5 で 5番目からのルータ情報を表示 (数字は任意) |
-m | 例: -m 5 でホップ数5までの範囲のルータ情報を表示 |
-q | 例: -q 1で パケットの送信数を1回に(デフォルトは3回) |
-r | ルーティングテーブルを無視して、宛先に直接接続する。 |
-I | ICMPで接続する |
-T | TCPで接続する |
-p | 宛先ポート番号を指定する |
-w | 例: -w 2で応答待ち時間を2秒までに設定する(デフォルトは5秒) |
-z | 例: -z 1 でパケット応答時間が表示される間隔が1秒おきになる |
--back | 逆方向の場合のホップ数をIPアドレスの隣に表示([‘]で囲まれている値) |
Windows版で使用できるオプション
-d | DNSの逆引きを行わずに実行 |
-h | 例: -h 5 でホップ数5までの範囲のルータ情報を表示 |
-j | 緩やかなルートソースを指定し、宛先までの経路を表示する |
-w | 例: -w 3000で応答待ち時間を3000ミリ秒までに設定する(デフォルトは4000ミリ秒) |
-4 | IPv4を使用する |
-6 | IPv6を使用する |
まとめ
今回はLinux/Windowsでのtracerouteコマンドの使用方法について記載致しました。
使ってみた所感ですが、Linux版に関しましては、UDPでの通信がうまくいかなかった為、-IオプションによるICMPでの通信を推奨いたします。
Windows版に関しましては、実行結果が表示されるまで時間がかかってしまう点が少々使いづらいと感じたので、目的がなければ-dオプションでDNSの逆引きを非アクティブ化していただくとスムーズかなと存じます。(それでもLinux版よりは圧倒的に遅いですが)
以上、最後まで読んでいただきありがとうございました。
参考サイト
- 図解tracertの見方 ~WindowsとLinuxの違い(icmp/udp),経路途中のIPが表示されない理由~(https://milestone-of-se.nesuke.com/nw-basic/ip/traceroute/)
- tracerouteコマンドの興味深いオプション(https://tech.synapse.jp/entry/2022/04/29/143000)
記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。
当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。