GNU/Linux >> Linux の 問題 >  >> Linux

5 UNIX / Linux の traceroute コマンドの例

接続がたどるルートを知りたいシナリオがあります。ここでのルートとは、すべての転送エンティティ (間のルーターなど) の IP アドレスを意味します。

接続のすべてのパケットでルートが同じままであるという保証はありませんが、通常は同じです。このルート関連の情報は、ネットワーク関連の問題をデバッグする際に非常に便利です。

traceroute ユーティリティは、特定の宛先への完全なルートを出力します。この記事では、traceroute がどのように機能するかについて説明し、実際の例をいくつか見ていきます。

Traceroute の仕組み

例を始める前に、traceroute が機能する概念を理解しましょう。

Traceroute ユーティリティは、IP ヘッダーの TTL フィールドを使用して操作を実行します。 TTL フィールドを初めて使用するユーザーの場合、このフィールドは、ネットワーク上を移動中に特定のパケットがどれだけホップするかを示します。

したがって、これはネットワーク上のパケットの有効期間を効果的に概説します。通常、このフィールドは 32 または 64 に設定されます。パケットが中間ルーターに保持されるたびに、TTL 値が 1 ずつ減少します。ルーターが受信パケットで TTL 値 1 を検出すると、そのパケットは転送されず、代わりに

パケットを破棄した後、ルーターはパケットの生成元に「時間超過」という ICMP エラー メッセージを返します。送り返される ICMP パケットには、ルーターの IP アドレスが含まれています。

これで、traceroute が TTL 値が 1 から始まり、毎回 1 ずつ増加するパケットを送信することによって動作することが簡単に理解できます。ルータはパケットを受信するたびに TTL フィールドをチェックし、TTL フィールドが 1 の場合はパケットを破棄し、IP アドレスを含む ICMP エラー パケットを送信します。これは traceroute が必要とするものです。そのため、traceroute は送信元と送信先の間のすべてのルーターの IP を段階的に取得します。

少し前に説明した IP ヘッダー フィールドについても理解する必要があります。

トレースルートの例

1. traceroute の実行方法

$ traceroute <server-name>

上記の server-name は宛先名または IP アドレスです。たとえば、traceroute は、私のマシンから google.com へのネットワーク パスを見つけるために使用されます:

$ traceroute google.com
traceroute to google.com (74.125.236.132), 30 hops max, 60 byte packets
1  220.224.141.129 (220.224.141.129)  89.174 ms  89.094 ms  89.054 ms
2  115.255.239.65 (115.255.239.65)  109.037 ms  108.994 ms  108.963 ms
3  124.124.251.245 (124.124.251.245)  108.937 ms  121.322 ms  121.300 ms
4  * 115.255.239.45 (115.255.239.45)  113.754 ms  113.692 ms
5  72.14.212.118 (72.14.212.118)  123.585 ms  123.558 ms  123.527 ms
6  72.14.232.202 (72.14.232.202)  123.499 ms  123.475 ms  143.523 ms
7  216.239.48.179 (216.239.48.179)  143.503 ms  95.106 ms  95.026 ms
8  bom03s02-in-f4.1e100.net (74.125.236.132)  94.980 ms  104.989 ms  104.954 ms

各行は、遭遇した各ルーターとの相互作用の詳細を示します。したがって、traceroute は中間ルーターの IP アドレスを提供するだけでなく、各ルーターに対して traceroute コマンドが 3 つのパケットを送信するため、その特定のルーターについて 3 回のラウンド トリップ時間を提供することがわかります。

出力の「*」フィールド

出力に値ではなく「*」が含まれる場合があります。これは、必須フィールドを取得できなかったことを示しています。その理由は、リバース DNS ルックアップの失敗から、パケットがターゲット ルーターに到達しないこと、パケットが戻る途中で失われることなど、さまざまです。そのため、多くの理由が考えられることがわかりますが、これらすべてのタイプのケースに対して、traceroute ユーティリティは出力に * を提供します。

2. IP アドレスとホスト名のマッピングを無効にする

traceroute は、IP アドレスとホスト名のマッピング (traceroute が試行する) を無効にするオプションを提供します。これを行うためのオプションは「-n」です。次の例はこれを示しています:

$ traceroute google.com -n
traceroute to google.com (173.194.36.7), 30 hops max, 60 byte packets
1  220.224.141.129  109.352 ms  109.280 ms  109.248 ms
2  115.255.239.65  131.633 ms  131.598 ms  131.573 ms
3  124.124.251.245  131.554 ms  131.529 ms  131.502 ms
4  115.255.239.45  131.478 ms  131.464 ms  199.741 ms
5  72.14.212.118  199.674 ms  199.637 ms  199.603 ms
6  209.85.241.52  199.578 ms  199.549 ms  209.838 ms
7  209.85.241.187  199.488 ms  177.264 ms  177.196 ms
8  173.194.36.7  177.159 ms  187.463 ms  187.434 ms

そのため、出力にホスト名が表示されていないことがわかります。

3.応答待ち時間の設定

プローブの発行後に traceroute ユーティリティが待機する時間も構成できます。これは、提供される「-w」オプションを使用して実行できます。 -w オプションは、ユーティリティが待機する応答時間として使用する値を想定しています。この例では、待機時間は 0.1 秒で、traceroute ユーティリティは応答を待つことができず、すべての * を出力しました。

$ traceroute google.com -w 0.1
traceroute to google.com (74.125.236.101), 30 hops max, 60 byte packets
1  * * *
2  * * *
3  * * *
..
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

したがって、traceroute が 30 回の試行 (最大ホップ試行) を試みた後、0.1 秒以内に ICMP パケットを受信しなかったため断念したことがわかります。

4.ホップあたりのクエリ数を構成する

すでに説明したように、traceroute ユーティリティはホップごとに 3 つのパケットを送信して、3 回の往復時間を提供します。このデフォルト値の 3 は、オプション「-q」を使用して構成できます。このオプションは、ホップあたりのプローブ数の新しい値として設定する整数を想定しています。

$ traceroute google.com -q 5
traceroute to google.com (173.194.36.46), 30 hops max, 60 byte packets
1  220.224.141.129 (220.224.141.129)  91.579 ms  91.497 ms  91.458 ms  91.422 ms  91.385 ms
2  115.255.239.65 (115.255.239.65)  91.356 ms  91.325 ms  98.868 ms  98.848 ms  98.829 ms
3  124.124.251.245 (124.124.251.245)  94.581 ms  107.083 ms  107.044 ms  107.017 ms  106.981 ms
4  115.255.239.45 (115.255.239.45)  106.948 ms  106.918 ms  144.432 ms  144.412 ms  144.392 ms
5  72.14.212.118 (72.14.212.118)  115.565 ms  115.485 ms  115.446 ms  115.408 ms  115.381 ms
6  72.14.232.202 (72.14.232.202)  115.351 ms  87.232 ms  117.157 ms  117.123 ms  117.049 ms
7  209.85.241.189 (209.85.241.189)  126.998 ms  126.973 ms  126.950 ms  126.929 ms  126.912 ms
8  bom04s02-in-f14.1e100.net (173.194.36.46)  126.889 ms  95.526 ms  95.450 ms  95.418 ms  105.392 ms

したがって、プローブの数を 5 に設定した後、出力はホップごとに 5 回の往復時間を示し始めたことがわかります。

5.開始する TTL 値を構成します

Traceroute ユーティリティは、ユーザーがユーティリティを開始したい TTL 値を受け入れるのに十分柔軟です。デフォルトでは、その値は 1 です。これは、パス内の最初のルーターから開始することを意味しますが、「-f」オプション (TTL の新しい値を想定) を使用すると、TTL フィールドの新しい値を設定できます。たとえば、通常の traceroute 操作を試してから、別の TTL 値で traceroute を試しました。

$ traceroute google.com
traceroute to google.com (74.125.236.132), 30 hops max, 60 byte packets
1  220.224.141.129 (220.224.141.129)  89.181 ms  101.540 ms  101.503 ms
2  115.255.239.65 (115.255.239.65)  101.468 ms  101.431 ms  101.324 ms
3  124.124.251.245 (124.124.251.245)  121.373 ms  121.350 ms  158.694 ms
4  115.255.239.45 (115.255.239.45)  101.223 ms  141.135 ms  123.932 ms
5  72.14.212.118 (72.14.212.118)  123.867 ms  123.832 ms  123.802 ms
6  72.14.232.202 (72.14.232.202)  123.773 ms  123.742 ms  587.812 ms
7  216.239.48.179 (216.239.48.179)  587.723 ms  587.681 ms  587.642 ms
8  bom03s02-in-f4.1e100.net (74.125.236.132)  577.548 ms  577.524 ms  587.512 ms

$ traceroute google.com -f 8
traceroute to google.com (74.125.236.129), 30 hops max, 60 byte packets
8  bom03s02-in-f1.1e100.net (74.125.236.129)  96.961 ms  96.886 ms  96.849 ms

したがって、値 8 で -f オプションを使用した後、前の出力の最後の (8 番目の) 行のみが表示されていることがわかります。


Linux
  1. UNIX / Linux:10 の Netstat コマンドの例

  2. 10 Linux / UNIX での Xargs コマンドの例

  3. UNIX/Linux のバージョンを確認する「uname」コマンドの例

  1. Linux での sa コマンドの例

  2. Linux での ac コマンドの例

  3. Linux での df コマンドの例

  1. Linux Tracerouteコマンド、例を使用して説明

  2. 7 Linux df コマンドの例

  3. Linux での du コマンドの例