1. 序章

一般に、リモートホストに接続する場合、トラフィックは目的のマシンに直接送信されません。 代わりに、ネットワーク上の複数のルーターを通過します。

特定のパケットがたどる正確なルートを追跡するために、tracerouteコマンドをうまく利用できます。

2. インストール

traceroute がまだインストールされていない場合は、最初にインストールする必要があります。 たとえば、Ubuntuでは、tracerouteをインストールするコマンドは次のとおりです。

$ sudo apt install traceroute

3. 例

簡単な例から始めましょう– baeldung.comドメインに対してtracerouteコマンドを実行しましょう。

$ traceroute baeldung.com

出力は次のようになります。

traceroute: Warning: baeldung.com has multiple addresses; using 104.18.62.78
traceroute to baeldung.com (104.18.62.78), 30 hops max, 60 byte packets
 1  192.168.100.1 (192.168.100.1)  5.810 ms  0.791 ms  0.704 ms
 2  10.100.0.1 (10.100.0.1)  1.854 ms  2.031 ms  1.775 ms
 3  10.30.140.1 (10.30.140.1)  1.906 ms  2.216 ms  1.896 ms
 4  60.184.246.94.ip4.epix.net.pl (94.246.184.60)  5.068 ms  5.190 ms  5.205 ms
 5  ae48-48.r7.poland-rs.thinx.atman.pl (212.91.0.10)  5.219 ms  5.394 ms  5.244 ms
 6  cloudflare.thinx.pl (212.91.0.28)  5.787 ms  6.500 ms  6.107 ms
 7  104.18.63.78 (104.18.63.78)  5.379 ms  5.238 ms  5.219 ms

最初の行は、このテストに使用される宛先アドレスを通知します。

次に、宛先に到達するためにパケットが取ることができる最大ホップ数パケットのサイズの2つが通知されます。 この例では、最大30ホップの数と、60バイトのサイズのパケットがあります。 デフォルトでは、tracerouteはホップごとに3つのプローブパケットを使用します。

残りの出力には、パケットが通過したすべてのルーターが表示されます。 各行には、ホスト名前とIPアドレスに関する情報があります。 次の3つの値は、特定のルーターのラウンドトリップ時間を表します。

この場合、 baeldung.com に接続するには、リクエストが7つの異なるルーターを経由する必要があります。 出力では、最初のルーターがローカルネットワーク(192.168.100.1)のルーターであり、最後のルーター(104.18.62.78)がbaeldung.comドメインの宛先ホストであることがわかります。

なお、【X11X】場所によって結果が異なる場合があり、場所を変更しなくても結果が変わる場合があります。 ルータープロトコルは、ルーターの可用性や使用状況の指標などに基づいて、異なるパケットパスを選択する場合があります。

4. IPv4またはIPv6を使用する

デフォルトでは、tracerouteコマンドはIPv4アドレスを使用して要求をトレースします。 ホスト名の前に-6パラメーターを追加することで、IPv6アドレスを使用するように指示できます。 traceroute -6 に相当するのは、traceroute6コマンドです。

$ traceroute6 baeldung.com

出力は次のようになります。

traceroute to baeldung.com (2606:4700:3030::6812:3e4e), 30 hops max, 80 byte packets
 1  2001:2e8:665:0:2:2:0:1 (2001:2e8:665:0:2:2:0:1)  0.083 ms  0.048 ms  0.044 ms
 2  2001:2e8:22:204::2 (2001:2e8:22:204::2)  25.128 ms  25.047 ms  25.025 ms
 3  2001:2e8:20::22:11 (2001:2e8:20::22:11)  1.106 ms  25.830 ms  1.007 ms
 4  xe-0-0-14-1.a02.tokyjp05.jp.bb.gin.ntt.net (2001:218:2000:5000::305)  0.908 ms  1.197 ms  1.097 ms
 5  ae-25.r02.tokyjp05.jp.bb.gin.ntt.net (2001:218:0:2000::59)  1.515 ms 1.744 ms  1.785 ms
 6  ae-4.r30.tokyjp05.jp.bb.gin.ntt.net (2001:218:0:2000::11a)  1.466 ms 1.538 ms ae-4.r30.tokyjp05.jp.bb.gin.ntt.net (2001:218:0:2000::11a)  1.337 ms
 7  ae-3.r00.tokyjp08.jp.bb.gin.ntt.net (2001:218:0:2000::2d7)  1.857 ms 1.839 ms ae-3.r00.tokyjp08.jp.bb.gin.ntt.net (2001:218:0:2000::2d7)  1.901 ms
 8  as7515.ntt.net (2001:218:2000:5000::26)  2.717 ms  2.419 ms  2.325 ms
 9  2400:cb00:22:1024::a29e:759c (2400:cb00:22:1024::a29e:759c)  2.115 ms 1.985 ms 2400:cb00:22:1024::a29e:759f (2400:cb00:22:1024::a29e:759f)  2.272 ms

ご覧のとおり、結果はIPv4を使用した場合と非常によく似ています。 今回は9台のルーターがあります。 それぞれについて、ホスト名、IPv6アドレス、および3つのラウンドトリップ時間を取得します。

IPv6接続は、インターネットサービスプロバイダーによって無効にされる可能性があることに注意してください。 たとえば、AWSはインスタンスでIPv6をサポートしていません。 このような場合、以下の出力が表示されます。

traceroute6: Warning: baeldung.com has multiple addresses; using 2606:4700:3036::6812:3f4e
connect: No route to host

この問題は、オンラインtracerouteツールを使用することで解決できます。

5. 追加オプション

このコマンドは、多くの追加オプションを提供します。 Linuxのマニュアルページで、それらすべてと説明を見つけることができます。 それらのいくつかを見てみましょう。

5.1. 最大ホップ数

追加の-mパラメーターを追加することにより、tracerouteがプローブする最大ホップ数を指定できます。

$ traceroute -m 3 baeldung.com

これで、出力は最初の3つのルーターのみで構成されます。

...
1  192.168.100.1 (192.168.100.1)  1.446 ms  0.765 ms  0.653 ms
2  10.100.0.1 (10.100.0.1)  2.131 ms  1.982 ms  1.877 ms
3  10.30.140.1 (10.30.140.1)  1.844 ms  2.121 ms  2.181 ms

-mパラメーターのデフォルト値は30です。 ホップ数が30を超える場合は、必ず増やしてください。

5.2. トレース開始をオフセットする

最大ホップ数の設定に加えて、トレースを開始するホストを指定できます。

デフォルトでは、tracerouteは常に最初のホストから始まります。 -fパラメーターで変更できます。

$ traceroute -f 6 baeldung.com

これで、baeldung.comドメインの最後の2つのルーターができました。

...
6  cloudflare.thinx.pl (212.91.0.28)  6.732 ms  6.287 ms  6.271 ms
7  104.18.63.78 (104.18.63.78)  6.518 ms  5.390 ms  5.590 ms

5.3. ホップあたりのプローブパケット数

デフォルトでは、tracerouteはネットワークホストごとに3つのプローブパケットを送信します。これは、-qパラメーターを設定することでカスタマイズできます。

$ traceroute -q 5 baeldung.com

これで、コマンドはホストごとに5つのプローブパケットを送信する必要があります。

...
7  104.18.63.78 (104.18.63.78)  5.453 ms  5.446 ms  5.359 ms  5.447 ms  5.406 ms
...

5.4. プロービングパケットのサイズ

Tracerouteのプローブパケットは、IPv4では60バイト、IPv6では80バイトです。さまざまなプローブサイズでパケットルートをトレースするために、ホストの直後に目的の値を指定できます。

$ traceroute baeldung.com 512

traceroute パケットサイズを増やす最も一般的な理由は、MTU(Maximum Transmission Unit)の問題をデバッグすることです。 それ以外の場合は、デフォルトで問題ありません。

6. 結論

この短いチュートリアルでは、 traceroute コマンドを使用して、情報のパケットがコンピューターから目的のホストに到達するまでのパスを追跡する方法を探り、学習しました。