ネットワーク診断は、さまざまな種類のネットワーク問題の分析とトラブルシューティングを含む、ネットワーク/システム管理者の仕事の重要な部分です。
IP パケットがネットワーク内の 2 点間を通過するパスを知ることは、訓練された目には多くの有益な情報をもたらします。
ネットワーク パス関連の分析とトラブルシューティングに役立つ、人気があり一般的に使用されているクロスプラットフォーム ツールの 1 つが、
traceroute
です。
簡単に言うと、
traceroute
、プローブ パケット (ICMP ECHO または TCP SYN など) を送信し、その ICMP の「時間超過」応答をリッスンすることによって、送信元と宛先の間の IP パケットのパスを追跡します。これらのパケットの TTL は意図的に 1 に保たれ、ICMP が「ポート到達不能」になるまで 1 ずつ増加します。これは、ホストに到達するか、最大値 (デフォルトでは 30 ホップ) に達することを意味します。
traceroute
出力例は次のようになります。
$ traceroute google.com
traceroute to google.com (172.217.169.14), 30 hops max, 60 byte packets
1 140.91.200.22 (140.91.200.22) 0.129 ms 140.91.200.19 (140.91.200.19) 0.151 ms 140.91.200.77 (140.91.200.77) 0.114 ms
2 linxbgp1.iwscloud.com (195.66.226.34) 0.735 ms 0.701 ms 1.024 ms
3 195.66.224.125 (195.66.224.125) 0.603 ms 0.591 ms 0.591 ms
4 108.170.246.129 (108.170.246.129) 0.583 ms 0.745 ms 0.714 ms
5 209.85.241.95 (209.85.241.95) 1.576 ms 209.85.241.93 (209.85.241.93) 1.545 ms 209.85.241.95 (209.85.241.95) 1.520 ms
6 lhr25s26-in-f14.1e100.net (172.217.169.14) 0.584 ms 0.547 ms 0.507 ms
$
デフォルトの
traceroute
出力には、上記のように、TTL(Time To Live)または3つのパケットのラウンドトリップ時間、最大ホップ数とバイト単位のパケットサイズ、可能な場合はIPアドレスと解決されたドメイン名が表示されます。
Traceroute
応答遅延の決定と 2 つのノード間のルーティングに非常に役立ちます。さらに、目的地までのルート内の障害ポイントを特定するのにも役立ちます。多くのファイアウォールやルーターはインターネット上のtracerouteメッセージをブロックするため、その出力が常に正しいとは限りません。
プローブ メッセージのタイプを変更することである程度の回避策はありますが、この問題を回避するにはある程度しか役立ちません。したがって、このユーティリティを使用するときは、このことに留意する必要があります。
traceroute
の一部のオプションでは、生のパケットを変更できるようにする高いスーパーユーザー権限が必要です。
トレースパスコマンド
Red Hat Enterprise Linux または RHEL 8 とその派生 Linux ディストリビューションには、デフォルトでインストールされるtraceroute コマンドが付属していません。これは、以前のバージョンの Red Hat Linux または CentOS での
traceroute
ユーティリティに慣れている人にとっては、大きな変更のように見えるかもしれません。
ただし、RHEL8 には、デフォルトで使用できる同等の機能を持つ、
tracepath
と呼ばれるコマンドがあります。これは、対応する
tracepath
と同様の機能を備えており、OS のインストールですぐに使用できます。
さらに
tracepath
MTU オプションをサポートしており、これにより、
tracepath
ネットワーク上で送信できる最大のパケットである MTU または最大送信単位の値を検出できます。
参考のために、サンプルの
tracepath
出力を以下に示します。
$ tracepath 131.153.76.66
1?: [LOCALHOST] pmtu 9000
1: 140.91.200.23 0.416ms asymm 2
1: 140.91.200.23 0.239ms asymm 2
2: 140.91.200.74 0.194ms pmtu 1500
2: oracle-svc071175-lag003322.ip.twelve99-cust.net 1.344ms
3: ldn-b7-link.ip.twelve99.net 19.996ms asymm 2
4: ldn-bb1-link.ip.twelve99.net 0.803ms asymm 5
5: prs-bb1-link.ip.twelve99.net 8.548ms asymm 6
6: mei-b5-link.ip.twelve99.net 18.111ms asymm 5
7: no reply
8: phoenix-svc071932-ic358857.ip.twelve99-cust.net 179.691ms asymm 7
9: 131.153.47.139 163.358ms asymm 8
10: no reply
11: 131.153.76.66 159.071ms !H
Resume: pmtu 1500
$
デフォルトの
tracepath
出力には、上に示すように、パケットの TTL (Time To Live) または往復時間、
tracepath
によってネットワーク上に送信できる MTU (最大伝送単位)、および解決されたドメイン名が可能な限り表示されます。
トレースパスの構文
tracepath
コマンドの一般的な使用構文は次のとおりです。
$ tracepath <options> <destination DNS or IP>
#1.
フラグがない場合、
tracepath
以下に示すように宛先へのパスを表示します。
$ tracepath 131.153.56.85
1?: [LOCALHOST] pmtu 9000
1: 140.91.200.77 0.226ms asymm 2
1: 140.91.200.79 0.497ms asymm 2
2: 140.91.200.74 0.216ms pmtu 1500
2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.691ms
3: slou-b1-link.ip.twelve99.net 1.249ms asymm 2
4: ldn-bb4-link.ip.twelve99.net 0.749ms asymm 3
5: nyk-bb1-link.ip.twelve99.net 80.617ms asymm 8
6: rest-bb1-link.ip.twelve99.net 153.250ms asymm 21
7: nyk-bb1-link.ip.twelve99.net 83.084ms asymm 6
8: nash-bb1-link.ip.twelve99.net 280.770ms asymm 9
9: no reply
10: dls-b23-link.ip.twelve99.net 110.820ms asymm 9
11: phx-b1-link.ip.twelve99.net 131.524ms
12: phx-b1-link.ip.twelve99.net 131.632ms asymm 11
13: giglinx-ic305413-phx-b1.ip.twelve99-cust.net 132.583ms asymm 12
14: no reply
15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.685ms asymm 12
16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.245ms asymm 4
17: no reply
18: no reply
19: speedchi.phoenixnap.com 133.809ms reached
Resume: pmtu 1500 hops 19 back 8
$
#2.
IP アドレスのみを出力したい場合は、
-n
フラグを使用できます。
$ tracepath -n 131.153.56.85
1?: [LOCALHOST] pmtu 1500
1: 140.91.200.74 0.393ms asymm 2
1: 140.91.200.21 0.180ms asymm 2
2: 213.248.69.255 0.576ms
3: 213.248.98.246 1.210ms asymm 2
4: 62.115.117.122 1.371ms asymm 3
5: 62.115.133.239 141.920ms asymm 20
6: 62.115.141.244 77.732ms asymm 7
7: no reply
8: 62.115.137.55 881.711ms asymm 9
9: no reply
10: 62.115.137.55 914.855ms asymm 9
11: 62.115.125.97 132.182ms
12: 62.115.125.97 131.686ms asymm 11
13: 62.115.42.6 133.132ms asymm 12
14: no reply
15: 62.115.42.10 143.880ms asymm 12
16: 4.14.13.150 134.869ms asymm 4
17: no reply
18: 4.14.13.150 145.263ms asymm 4
19: 131.153.56.85 133.636ms reached
Resume: pmtu 1500 hops 19 back 8
$
#3.
ホスト名と IP アドレスの両方を出力するには、
-b
フラグを使用します。
$ tracepath -b 131.153.56.85
1?: [LOCALHOST] pmtu 1500
1: 140.91.200.19 (140.91.200.19) 0.197ms asymm 2
1: 140.91.200.74 (140.91.200.74) 0.141ms asymm 2
2: oracle-svc071175-lag003322.ip.twelve99-cust.net (213.248.98.247) 1.186ms
3: slou-b1-link.ip.twelve99.net (213.248.98.246) 10.273ms asymm 2
4: ldn-bb4-link.ip.twelve99.net (62.115.141.246) 0.941ms asymm 3
5: prs-bb2-link.ip.twelve99.net (62.115.133.239) 141.858ms asymm 20
6: rest-bb1-link.ip.twelve99.net (62.115.141.244) 76.210ms asymm 7
7: no reply
8: rest-bb1-link.ip.twelve99.net (62.115.141.244) 89.209ms asymm 7
9: no reply
10: dls-b23-link.ip.twelve99.net (62.115.136.119) 110.335ms asymm 9
11: phx-b1-link.ip.twelve99.net (62.115.125.97) 132.091ms
12: phx-b1-link.ip.twelve99.net (62.115.125.97) 131.844ms asymm 11
13: giglinx-ic315451-phx-b1.ip.twelve99-cust.net (80.239.195.78) 142.975ms asymm 14
14: no reply
15: no reply
16: PHOENIX-NAP.ear3.Chicago2.Level3.net (4.14.13.150) 135.233ms asymm 4
17: no reply
18: no reply
19: speedchi.phoenixnap.com (131.153.56.85) 133.871ms reached
Resume: pmtu 1500 hops 19 back 8
$
#4.
tracepath
のデフォルト値 (つまり
65535
を使用する代わりにパケット長のカスタム値を設定するには、
-l
フラグで値を指定します。
$ tracepath -l 300 131.153.56.85
1: 140.91.200.77 0.405ms asymm 2
2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.589ms
3: slou-b1-link.ip.twelve99.net 1.448ms asymm 2
4: ldn-bb4-link.ip.twelve99.net 0.960ms asymm 3
5: nyk-bb1-link.ip.twelve99.net 81.564ms asymm 8
6: rest-bb1-link.ip.twelve99.net 78.414ms asymm 7
7: nyk-bb1-link.ip.twelve99.net 84.286ms asymm 6
8: rest-bb1-link.ip.twelve99.net 87.529ms asymm 7
9: no reply
10: dls-b23-link.ip.twelve99.net 110.534ms asymm 9
11: phx-b1-link.ip.twelve99.net 131.449ms
12: phx-b1-link.ip.twelve99.net 131.303ms asymm 11
13: giglinx-ic315451-phx-b1.ip.twelve99-cust.net 143.059ms asymm 14
14: phx-b1-link.ip.twelve99.net 142.348ms asymm 11
15: giglinx-ic--305416-phx-b1.ip.twelve99-cust.net 143.554ms asymm 12
16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.790ms asymm 4
17: no reply
18: PHOENIX-NAP.ear3.Chicago2.Level3.net 145.926ms asymm 4
19: speedchi.phoenixnap.com 133.736ms reached
Resume: pmtu 300 hops 19 back 8
$
#5.
-p
フラグを次のように使用して、最初の宛先ポートを設定することもできます。
$ tracepath -p 9000 131.153.56.85
1?: [LOCALHOST] pmtu 1500
1: 140.91.200.18 0.160ms asymm 2
1: 140.91.200.74 0.177ms asymm 2
2: oracle-svc071175-lag003322.ip.twelve99-cust.net 1.151ms
3: slou-b1-link.ip.twelve99.net 1.727ms asymm 2
4: no reply
5: nyk-bb1-link.ip.twelve99.net 81.357ms asymm 8
6: rest-bb1-link.ip.twelve99.net 78.325ms asymm 7
7: no reply
8: rest-bb1-link.ip.twelve99.net 87.908ms asymm 7
9: no reply
10: dls-b23-link.ip.twelve99.net 109.797ms asymm 9
11: phx-b1-link.ip.twelve99.net 132.036ms
12: dls-b23-link.ip.twelve99.net 121.404ms asymm 9
13: giglinx-ic315450-phx-b1.ip.twelve99-cust.net 136.322ms asymm 12
14: phx-b1-link.ip.twelve99.net 142.596ms asymm 11
15: no reply
16: PHOENIX-NAP.ear3.Chicago2.Level3.net 135.182ms asymm 4
17: no reply
18: no reply
19: speedchi.phoenixnap.com 133.562ms reached
Resume: pmtu 1500 hops 19 back 8
$
#6.
デフォルトで
30
に設定されている最大ホップは、以下に示すように
-m
フラグを使用してカスタマイズできます。
$ tracepath -m 20 131.153.56.85
1?: [LOCALHOST] pmtu 1500
1: 140.91.200.18 0.175ms asymm 2
1: 140.91.200.77 0.169ms asymm 2
2: oracle-svc071174-lag003319.ip.twelve99-cust.net 0.669ms
3: slou-b1-link.ip.twelve99.net 2.443ms asymm 2
4: no reply
5: prs-bb2-link.ip.twelve99.net 142.778ms asymm 20
6: rest-bb1-link.ip.twelve99.net 76.756ms asymm 7
7: no reply
8: rest-bb1-link.ip.twelve99.net 89.272ms asymm 7
9: no reply
10: dls-b23-link.ip.twelve99.net 110.378ms asymm 9
11: phx-b1-link.ip.twelve99.net 132.582ms
12: phx-b1-link.ip.twelve99.net 132.135ms asymm 11
13: phx-b1-link.ip.twelve99.net 142.154ms asymm 11
14: no reply
15: giglinx-ic305414-phx-b1.ip.twelve99-cust.net 142.298ms asymm 12
16: PHOENIX-NAP.ear3.Chicago2.Level3.net 134.362ms asymm 4
17: no reply
18: no reply
19: speedchi.phoenixnap.com 133.474ms reached
Resume: pmtu 1500 hops 19 back 8
$
tracepath
高度なパケット変更機能をサポートしていないため、
traceroute
のような上位のスーパーユーザー権限をサポートしていないことに注意してください。
まとめ
この記事では、traceroute コマンドの使用法、ネットワーク関連のトラブルシューティングでの使用方法、および、tracepath コマンドを使用して RHEL8 システムで同じタスクを実行する方法についてまとめました。
これらのコマンドの詳細については、ツールのそれぞれのマニュアル ページを使用してください。
$ man traceroute
$ man tracepath