tracerouteコマンドでネットワークの経路を洗い出す

tracerouteコマンドでネットワークの経路を洗い出す

2021-10-302 min read

目次

  1. 概要
  2. tracerouteの用途
  3. tracerouteの原理
  4. コマンドを実行してみる
  5. 参考文献

概要

tracerouteコマンドでネットワークの経路を洗い出した際の操作をメモしました。

環境はmacで実施しています。

また、tracerouteのバージョンは次のバージョンとなります。

Version 1.4a12+Darwin

tracerouteの用途

tracerouteコマンドは、ネットワークのトラブルシュートに使われます。

tracerouteの原理

traceroute は、IPパケットのヘッダ情報に含まれるTTL(Time To Live)を活用します。 TTLは、ルーティングされるたびに1ずつ減っていく値で、パケットの到達範囲の制限や、滞留し続けないようにするために使われます。

※TTLの詳細は後述します。

tracerouteはこの仕組みを利用します。 目的地に向けて、TTLを1つずつ増やしたパケットを順番に目的地まで送ることで、意図的にICMPの時間切れを引き起こし。 時間切れメッセージを送ってきたルータを並べることで、パケットの経路を調べられるます。 ※しかし場合によっては、ルータが時間切れメッセージを返さないこともあります。

IPヘッダのTTL

TTLには0から255までの整数値が入ります。 TTLの値は、パケットを作って送り出すときにノードが初期値を設定します。 そして、パケットのTTLは、ルータを1つ通過する毎に1つずつ値が減っていきます。 もし、経路上でパケットのTTLがゼロになると、そのパケットはルータによって破棄されます。 このとき、パケットを破棄したルータは同時にICMPで時間切れ(TimeExceeded)のメッセージをパケットの送信元に送ることがあります。

コマンドを実行してみる

実際に 8.8.8.8 (GoogleのDNS) への接続経路を洗い出してみます。

$ traceroute -n 8.8.8.8 
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 52 byte packets
 1  10.18.X.X  6.372 ms  6.000 ms  6.260 ms
 2  103.5.X.X  6.324 ms
 3  172.30.X.X  6.742 ms  6.937 ms  5.590 ms
 4  172.30.X.X  6.780 ms  6.248 ms  6.842 ms
 5  210.171.X.X  8.001 ms  8.552 ms  9.676 ms
 6  108.170.X.X  8.424 ms
 7  72.14.X.X  7.513 ms
 8  8.8.8.8  7.154 ms  7.363 ms  7.188 ms

参考文献

Author
githubzennqiita
ただの備忘録です。

※外部送信に関する公表事項