システム構築しているときなどに、ネットワークの経路情報を調査しないといけないシーンが出てくると思います。
- 正しく通信経路が設定されているか?
- 障害時の機器ダウンの切り分け
など。
これら2つはITの世界では日常茶飯事に発生するインシデントと思います。
今回はWindowsでのコマンドとなりますが、上記2つを調査するための「Tracert(トレースルート)」の使い方をご紹介致します。
Tracert(トレースルート)とは
Tracertは「Trace route」の略です。いわゆる「経路を辿る」とでも言いましょうか。
通信機器(サーバー含む)への通信(ネットワーク)経路を確認するコマンドとなります。
Windowsのコマンドプロンプトではtracert と打てば実現出来ます。
Linux系OSやMac系OSの場合は「traceroute」となることに注意です。(後日記事にしたらご紹介します。)
tracert構文
tracertの構文は以下となっています。
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name
上記パラメータの内容は下記の通りです。
確認したい内容に応じてパラメーターを付加します。
パラメーター | 意味(内容) |
-d | アドレスをホスト名に解決しない |
-h | ターゲットを検索するときの最大ホップ数です |
-j [host-list] | host-list で指定された緩やかなソースルートを使用します。(IPv4のみ) |
-w [timeout] | timeout(数字)ミリ秒、応答を待ちます |
-R | 往復のパスをトレースします |
-S [srcaddr] | 使用するソースアドレスです(IPv6のみ) |
-4 | IPv4の使用を強制します。 |
-6 | IPv6の使用を強制します。 |
target_name | 通信(ネットワーク)経路を確認したいノードをIPアドレスやマシン名で指定します。 |
tracert使用例
例として、自分の端末(IP:192.168.0.1)から、あるサーバー(IP:10.49.1.10)への通信経路を確認するシーン。
以下条件付きで。
- 端末(192.168.0.1)⇔ルータA(IP:192.168.0.254)⇔ルータB(IP:10.1.1.250)⇔ルータC(IP:10.49.1.250)⇔サーバー(10.49.1.10)という経路情報が設定されていると仮定します。
- ルータA~C、対象サーバー(IP:10.49.1.10)にはすべてICMPが許可されている。
- アドレスをホスト名に解決しない
コマンドプロンプト内で、tracert -d 10.49.1.10 と入力しEnterを押しましょう。
tracert -d 10.49.1.10 10.49.1.10 へのルートをトレースしています。経由するホップ数は最大 30 です 1 2 ms 2 ms 2 ms 192.168.0.254 2 2 ms 2 ms 2 ms 10.1.1.250 3 3 ms 2 ms 3 ms 10.49.1.250 4 3 ms 8 ms 4 ms 10.49.1.10 トレースを完了しました。
このように結果が返って来ます。
結果内の○○msは応答タイム(ミリ秒)を示し、3回分試行したタイムが表示されています。
一方、ICMPが許可されていない機器については
tracert -d 10.49.1.10 10.49.1.10 へのルートをトレースしています。経由するホップ数は最大 30 です 1 2 ms 2 ms 2 ms 192.168.0.254 2 * * * 要求がタイムアウトしました。 3 3 ms 2 ms 3 ms 10.49.1.250 4 3 ms 8 ms 4 ms 10.49.1.10 トレースを完了しました。
のように、要求がタイムアウトしました、と返ってきます。
tracertでネットワーク経路を把握する
今まで説明したきた通り、Tracertは通信経路を確認するコマンドとなるので、自分たちが意図した通信経路を通ってきてるのか?がはっきりわかりますので、障害時に通信経路を調べたり、タイムアウトしてる=通信機器がダウンしている可能性 などを確認することが可能です。
Pingコマンドの代わりになるのか?
tracert はICMPのコマンドであり、同類のPingコマンドと同じようなことを調べることができます。
tracertで機器の生き死にを確認することは可能。(ただし対象機器がICMP許可されていることが前提。)
しかし、Ping代わりに使う場合は余分な情報(経由する経路情報)が返ってきてPingコマンドの生死を確認するより時間がかかるデメリットがありますから、機器生存の確認はPingコマンドで行うべきでしょう。
通信経路を調べつつ、生存チェックを行う場合にTracertコマンドを使うのが一般的かと思います。
Tracertコマンド意外と使えますよ!
さて、Tracertコマンドご理解いただけたでしょうか。
意外と使うシーンはありますので覚えておいて損はありません。
経路の切り分けや一部の機器生存チェックなど万能なコマンドなので使いこなして障害対応など円滑に行なっていきましょう!