ネットワークはブラックボックス化していて日常生活ではどのような経路を通って通信しているのか、どういう仕組みになっているのかを意識することなくインターネットや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などのドメインを手に入れることが可能です!

にほんブログ村 IT技術ブログ IT技術メモへ
にほんブログ村

投稿者 izumi kikumura

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です