「traceroute」を使ったネットワーク探索とパケットの旅をわかりやすく解説
ルーターやスイッチ、コンピューターなどが複雑に絡み合ったインターネットでは、目的のサーバーにたどり着くまでに数多くのルーターを経由することになります。しかし、ルーターの設定が誤っていたり、ルーターがダウンしていたりするとパケットがドロップし、目的地にたどり着けなくなる可能性があります。そんな時、経由したルーターの情報を取得して診断に役立てられるツールが「traceroute」です。ソフトウェアエンジニアのセバスティアン・マリーンズ氏が、tracerouteについて解説しています。
https://sebastianmarines.com/post/journey-of-a-packet-exploring-networks-with-traceroute/
インターネット上のいずれかのサーバーに接続しようとすると、コンピューターはまず宛先のIPアドレスが同じネットワーク内にあるかどうかを確認します。同じネットワーク内にある場合にはパケットを宛先に直接送信しますが、それ以外の場合、ネットワークをインターネットに接続する「デフォルトゲートウェイ」にパケットを送信することになります。
続いて、ルーターは宛先のIPアドレスがルーティングテーブルにあるかどうかを確認し、ある場合はパケットを直接送信、ない場合はパス内の次のルーターにパケットを送信します。このプロセスは、パケットが宛先に到達するまで繰り返されます。
ネットワークの疎通確認ができる「pingコマンド」を使用するとパケットが目的地に到達できるかどうかを確認できますが、pingコマンドでは問題が発生していることは確認できても、どのルーターに問題が生じているかを突き止めることは不可能です。
そこで役立つのがtracerouteです。tracerouteとは、パケットが通過することになる送信元から宛先までのルーターを示すネットワーク診断ツールで、パス内の全てのルーターと各ルーターの応答時間を確認することができます。以下はtracerouteの使用例です。この例では、目的のサーバーに到達するまでに計5つのルーターを通ることになりますが、1つ目のルーターと2つ目のルーターの情報が正確に表示されている一方、3つ目以降のルーターからは情報を取得できていません。したがって、この場合はルーター3に問題があることがわかります。
$ traceroute 10.0.0.2
traceroute to 10.0.0.2 (10.0.0.2), 30 hops max, 60 byte packets
1 10.1.0.5 1.123 ms 0.912 ms 1.145 ms
2 10.1.0.6 2.145 ms 2.023 ms 2.311 ms
3 * * *
4 * * *
5 * * *
tracerouteでは、まず送信元IPアドレスや宛先IPアドレスの他に、パケットが通過できるルーターの最大数である「存続可能時間(TTL)」が参照されます。パケットが送信されると、TTLは必ず「64」という値を設定します。そしてパケットがルーターに到達すると、TTLの値は「63」に減少。ルーターに到達するたびにTTLの値は1ずつ減少し、0に達するとルーターはパケットをドロップし、接続不可能だったことを示すエラーメッセージ「Time Exceeded」を送信元のコンピューターに送り返します。ただし、TTLが0より大きい場合、ルーターは必ずパケットをパス内の次のルーターに転送します。このようにして、tracerouteで送信元から宛先までのパスを示すことができます。
さらにマリーンズ氏は、TTL値の違いによる反応の違いを図説しています。目的のサーバーまでの間に3つのルーターがあり、TTLが3のパケットを送信する場合では、パケットがTTL値を1ずつ減らしながらルーターを経由していき、ルーター3に到達した時点でTTL値が0になります。そのため、目的のサーバーにたどり着くことはなく、ルーター3は「Time Exceeded」のメッセージを送信元のコンピューターに送り返すというわけです。
続いてTTL値が4のパケットの場合、道中のルーターでTTL値が0に達することはなく、宛先のサーバーがパケットを受信することが可能になります。そして宛先のサーバーは送信元のコンピューターに応答を送信します。
マリーンズ氏は「これまで見てきたように、インターネットは相互接続されたデバイスの複雑なネットワークであり、tracerouteはこの複雑さを簡素化するのに役立ちます。皆さんもネットワークの問題が生じた場合には、tracerouteを使ってトラブルシューティングの時間を節約してください」と述べています。
なお、tracerouteについてさらに詳しく知りたい人のために、テクノロジー企業「PacketFabric」のCEOであるリチャード・スティーンベルゲン氏が詳細な資料を公開しています。
A Practical Guide to (Correctly) Troubleshooting with Traceroute
(PDFファイル)https://archive.nanog.org/sites/default/files/traceroute-2014.pdf