ネットワークはブラックボックス化していて日常生活ではどのような経路を通って通信しているのか、どういう仕組みになっているのかを意識することなくインターネットやLINEなどのSNS、メールなどを使うことができます。しかし、通信に障害が起きた時、ネットワークのどこで障害が発生しているのか情報が欲しくなる時があるかもしれません。そんな時に役立つのがtracerouteコマンドになります。
目次
1.各通信間のルーターのIPアドレスを調べる
Windowsの場合は以下のようにコマンドを打ちます
tracert ホスト名(またはIPアドレス)
例えば、ホスト名が”kikumuracloudtec.com”のホスト名に対してWindowsからtracerouteコマンドを打つ場合は下記に示すような応答が返ってきます。
C:\Users\Administrator>tracert kikumuracloudtec.com
Tracing route to kikumuracloudtec.com [52.192.85.43]
over a maximum of 30 hops:
1 3 ms 8 ms 7 ms ec2-54-150-128-7.ap-northeast-1.compute.amazonaws.com [54.150.128.7]
2 * * * Request timed out.
3 * * * Request timed out.
4 * * * Request timed out.
5 * * * Request timed out.
6 * * * Request timed out.
LinuxやMacの場合は以下のようにコマンドを打ちます
traceroute ホスト名(またはIPアドレス)
traceroute ホスト名(またはIPアドレス)
例えば、IPアドレス”43.207.64.79″に対してLinuxまたはMacからtracerouteコマンドを打つ場合は下記に示すような応答が返ってきます。
izumi@MacBook-Pro .ssh % traceroute 43.207.64.79
traceroute to 43.207.64.79 (43.207.64.79), 64 hops max, 52 byte packets
1 172.20.10.1 (172.20.10.1) 5.049 ms 4.061 ms 3.799 ms
2 * * *
3 * * *
4 172.28.2.252 (172.28.2.252) 84.329 ms 30.256 ms 41.112 ms
5 103.124.3.185 (103.124.3.185) 38.864 ms
103.124.3.187 (103.124.3.187) 34.698 ms
103.124.3.203 (103.124.3.203) 33.044 ms
6 103.124.3.194 (103.124.3.194) 38.594 ms
103.124.3.200 (103.124.3.200) 28.779 ms
103.124.3.194 (103.124.3.194) 29.235 ms
7 103.124.3.66 (103.124.3.66) 42.287 ms 32.242 ms 37.891 ms
8 99.82.182.238 (99.82.182.238) 28.810 ms
103.124.3.66 (103.124.3.66) 30.978 ms
99.82.182.238 (99.82.182.238) 28.475 ms
9 52.93.150.105 (52.93.150.105) 39.015 ms
52.93.150.117 (52.93.150.117) 35.340 ms
52.93.150.123 (52.93.150.123) 37.187 ms
10 54.239.53.59 (54.239.53.59) 40.642 ms
54.239.53.67 (54.239.53.67) 28.452 ms
150.222.91.63 (150.222.91.63) 43.356 ms
5.049 msや40.642 msの数字は、tracerouteコマンドにより送ったパケットが相手のルーターから返ってくるまでにかかった往復時間を示しています。色々なホスト名やIPアドレスに対してtracerouteコマンドを打っていくと小さい数字や大きい数字と数字にも大小があることに気づいてきます。慣れてくると「東京 – 大阪」間なのか、「日本 – アメリカ」間なのか予想を立てながらイメージするようになってきます。
2.tracerouteコマンドの主なオプションについて
先ほどまでの説明は基本的な「traceroute 接続先」を指定することで指定したホスト又はIPアドレスにパケットが到達するまでの通信経路を表示することを命令するコマンドでした。
これ以外にもtracerouteコマンドには様々なオプションが存在します。
2-1.ICMPを使用するオプション
オプションに-I
を付けることでICMPエコーリクエストパケット(ピンポンパケット)を使用してトレースを実行することができます。
traceroute -I "ドメイン名 or IPアドレス"
I実行例
izumi@MacBook-Pro .ssh % traceroute -I kikumuracloudtec.com
traceroute to kikumuracloudtec.com (52.192.85.43), 64 hops max, 72 byte packets
1 172.20.10.1 (172.20.10.1) 7.144 ms 5.334 ms 3.836 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
上記のICMPオプションによってパケットフィルタリングやセキュリティの制限によってブロックされることなく、より正確な結果が得られる場合がありますが、今回の通信先がAWSだからか返ってくる情報があまり正確な情報かどうかは定かではない気が・・・w
2-2.トレースルートの最大ホップ数を指定するオプション
オプションに-m <任意の数>を
指定することで、トレースルートの最大ホップ数を指定できます。通常、トレースルートは目的地に到達するまでに多くのホップを経由することがありますが、このオプションを使用することで指定されたホップ数までしかトレースしないように制限することができます。
traceroute -m <任意の数> "ドメイン名 or IPアドレス"
実行例
izumi@MacBook-Pro .ssh % traceroute -m 10 kikumuracloudtec.com
traceroute to kikumuracloudtec.com (52.192.85.43), 10 hops max, 52 byte packets
1 172.20.10.1 (172.20.10.1) 10.187 ms 21.574 ms 49.991 ms
2 * * *
3 * * *
4 172.28.2.252 (172.28.2.252) 38.187 ms 56.510 ms 39.720 ms
5 103.124.3.187 (103.124.3.187) 41.278 ms
103.124.3.211 (103.124.3.211) 55.432 ms
103.124.3.193 (103.124.3.193) 40.023 ms
6 103.124.3.202 (103.124.3.202) 75.034 ms
103.124.3.186 (103.124.3.186) 35.559 ms
103.124.3.200 (103.124.3.200) 29.015 ms
7 103.124.3.66 (103.124.3.66) 34.075 ms
103.124.3.69 (103.124.3.69) 45.948 ms 26.027 ms
8 103.124.3.237 (103.124.3.237) 51.933 ms 41.116 ms 51.786 ms
9 103.124.3.237 (103.124.3.237) 47.971 ms
99.82.182.238 (99.82.182.238) 73.814 ms 42.967 ms
10 54.239.53.24 (54.239.53.24) 27.844 ms
54.239.53.8 (54.239.53.8) 51.118 ms
52.93.150.103 (52.93.150.103) 36.992 ms
上記の実行結果には、指定されたホップ数までの経路上のホスト名やIPアドレス、応答時間などが表示されます。-m
オプションを指定することで、特定の範囲内での経路追跡を行うことができます。この場合、-mオプションの後に”10″を指定しているため、10ホップまでの経路情報が表示されることになります。
2-3.ホスト名を表示しないオプション
オプションに”-n”を指定することでホスト名の逆引き(DNS逆引き)を行わずに、IPアドレスを表示することを指定しています。このオプションを使用することで、ホスト名の解決を待つことなく結果を返すため、トレースの速度を向上させることができます。
traceroute -n "ドメイン名 or IPアドレス"
実行例
izumi@MacBook-Pro .ssh % traceroute -n kikumuracloudtec.com
traceroute to kikumuracloudtec.com (52.192.85.43), 64 hops max, 52 byte packets
1 172.20.10.1 5.630 ms 17.974 ms 3.927 ms
2 * * *
3 * * *
4 172.28.2.252 41.806 ms 30.063 ms 71.415 ms
5 103.124.3.209 39.363 ms
103.124.3.185 29.054 ms
103.124.3.211 30.769 ms
6 103.124.3.186 40.030 ms 30.328 ms
103.124.3.208 39.905 ms
7 103.124.3.64 32.731 ms
103.124.3.69 57.561 ms
103.124.3.66 42.429 ms
8 103.124.3.63 28.938 ms
103.124.3.66 39.981 ms
103.124.3.63 39.798 ms
9 52.93.150.121 39.136 ms
52.93.150.101 34.916 ms
52.93.150.103 38.877 ms
10 150.222.91.51 36.072 ms
52.93.150.103 31.083 ms
52.93.150.101 38.835 ms
その他のオプション
その他のtracerouteコマンドの主要なオプションを以下に示します。
-w <待ち時間>: 各ホップでの応答を待つ時間を指定します。デフォルトは5秒です。
-q <クエリ数>: 各ホップに対して送信するクエリ(パケット)の数を指定します。デフォルトは3です。
-p <ポート番号>: 宛先に送信するパケットの宛先ポート番号を指定します。デフォルトは33434です。
-T: TCPを使用してトレースを実行します。通常はUDPが使用されますが、一部のネットワークではUDPパケットがブロックされている場合があります。
-4: IPv4のみを使用してトレースを実行します。
-6: IPv6のみを使用してトレースを実行します。
終わりに
tracerouteコマンドを使って通信先の経路の確認や、そのほかのオプションを組み合わせることで、トレースルートの動作や表示方法をカスタマイズできることがちょっとだけ知れたのではないでしょうか?もしネットワークの遅延や調子が悪い時はtracerouteコマンドを使って調査してみると新しい発見があるかも知れませんね!私も時折はtracerouteコマンドを使ってネットワークの旅に出かけたいと思います😎
私もオススメの基礎からわかるTCP/IPネットワークコンピューティング入門 第3版!
本日のnslookupコマンドもそうですが、ネットワークの基礎についてとてもわかりやすく解説されているマスタリングTCP/IPの著者でもある村山公保さんの「基礎からわかるTCP/IPネットワークコンピューティング入門 第3版」はエンジニア全員に手にとって読んでほしい本です!
ドメインはお名前.comで!
こちらのブログでもお名前.comさんのドメインを使わせていただいています!キャンペーンと合わせるとお得に.comや.jpなどのドメインを手に入れることが可能です!
にほんブログ村