Linuxでトレースルートを実行するためのガイド

Linuxコンピュータからパケットが出てからどこに向かっているかを把握する必要がある場合、Linux上のtracerouteが役立ちます。

Tracerouteは、ネットワーク上を通過するネットワークパケットのルーターを追跡するほとんどのLinuxディストリビューションに搭載されている便利なユーティリティです。このユーティリティは、トラブルシューティングやシンプルなネットワーク計画に役立ちます。

Linuxのディストリビューションごとに、tracerouteコマンドのパッケージが異なります。一部のディストリビューションでは、トレーサーテールトを含むネットワークツールのスイートの一部としてレガシーのinetutilsパッケージを使用している一方、他のディストリビューションではモダンなtraceroute.x86_64パッケージを使用しています。

関連記事: Windows 10でTraceroute(Tracert)を使用する方法

Tracerouteパラメータの検査

まず、Linuxのtracerouteコマンドで可能なことを確認しましょう。

ターミナルを開き、コマンドtraceroute -?を入力してマニュアルページにアクセスします:

Usage: traceroute [OPTION...] HOST
Print the route packets trace to network host.

  -f, --first-hop=NUM        set initial hop distance, i.e., time-to-live
  -g, --gateways=GATES       list of gateways for loose source routing
  -I, --icmp                 use ICMP ECHO as probe
  -m, --max-hop=NUM          set maximal hop count (default: 64)
  -M, --type=METHOD          use METHOD (`icmp' or `udp') for traceroute
                             operations, defaulting to `udp'
  -p, --port=PORT            use destination PORT port (default: 33434)
  -q, --tries=NUM            send NUM probe packets per hop (default: 3)
      --resolve-hostnames    resolve hostnames
  -t, --tos=NUM              set type of service (TOS) to NUM
  -w, --wait=NUM             wait NUM seconds for response (default: 3)
  -?, --help                 give this help list
      --usage                give a short usage message
  -V, --version              print program version

Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.

Report bugs to <bug-inetutils@gnu.org>.

上記のように、tracerouteの動作を微調整するための多くのオプションがあります。

基本的なTraceroute機能

トレースルートのパラメータを微調整することができますが、実際にはすべてのパラメータが必要ではありません。実際には、単にトレースルートを実行し、トレース先のホストを指定するだけで十分です。以下のように、Linuxでトレースルートを実行すると、60バイトのパケットが送信され、目的地のホストに到達するまでに経由する各ホップが追跡されます。

これらのホップは、各パケットにタイム・トゥ・リブ (TTL) を使用して追跡され、パケットが受信されなくなった時にはホップが終了したことが検出されます。

Traceroute to google.com

トレースルートには最大ホップ数の制限があります。最大30ホップまでしか進みません。

より正確なトラッキングのためのスイッチの追加

Linux上のトレースルートのデフォルト機能はうまく機能しますが、もっと多くのことができます。ここでは、利用可能な最も人気で便利なスイッチの多くを説明します。

最初のホップスイッチを使用してホップを除外する

特定のルーターをトレースから除外する便利なコマンドがあります。 -fまたは--first-hop=NUMパラメータを使用して、特定のルーターを表示から除外することができます。これは、1つ以上のルーターが問題を引き起こしていないことを確信している場合に非常に役立ちます。

また、-fスイッチを使用して、トレースをネットワークの境界線を超えて開始し、インターネット上の遅延の可能性のある原因を絞り込むこともできます。

次のGIFでは、traceroute -f 3 google.comコマンドが実行されているのが見えます。このコマンドは最初の3つのルーターをスキップし、私のホームネットワーキングとISPルーターをバイパスしています。最初の2つのホップが欠落していることに注意してください。

traceroute -f example

上記の例からwww.google.comに到達するまでには15ホップかかります。以下のようになります:

  • ホップ数
  • トレースされるパスのルーターのホスト名またはIPアドレス
  • 以前と同様の応答時間

出力では、一部のホップに追加のインターフェースが表示される場合があります。これは予想される動作です。

Max-Hopスイッチを使用してホップ数を制限する

さて、最初の2つのホップをスキップするだけでなく、経路の5番目のホップまでのパスを表示したいとします。その場合には、-mまたは--max-hop=NUMスイッチパラメータを使用します。

ターミナルにtraceroute -m 5 -f 3 http://www.google.comと入力し、Enterキーを押してください。このコマンドは、潜在的なルーティングの問題を絞り込むのに便利です。tracerouteは最初の2つのホップをスキップし、5番目のホップで停止します。

Traceroute skipping hops

-Qスイッチを使用して送信するプローブパケットを削減する

Linux上のtracerouteは、デフォルトでパスの各ルーターに3つのプローブパケットを送信します。tracerouteの実行時間を短縮したい場合には、-qパラメータを使用して各ルーターに送信するプローブパケットの数を変更できます。

ターミナルにtraceroute -q -m 5 -f 3 www.google.comと入力し、Enterを押します。以下に示すように、tracerouteは1つのパケットのみを送信していることがわかります。ホップごとに1つの応答時間しか取得していません。

traceroute -q 6 example

また、-qパラメータの引数を指定することで、ホップごとに送信されるプローブパケットの数を増やすこともできます。パケットプローブを増やすことで、各ホップの応答時間を平均化する方法を提供できるかもしれません。

Argument for -q Parameter

概要

このLinuxのTracerouteに関する記事では、この便利なユーティリティの基本について学びました。このコマンドでできることはまだまだたくさんあります。すべてのスイッチの使用方法を学びたい場合は、manページを参照してください。

Source:
https://adamtheautomator.com/traceroute-linux/