\r\n\r\n

linuxでのtracerouteコマンドの使い方

linux tracerouteコマンドは、ネットワークパケットの伝送に遅いセグメントを発見し、遅いネットワーク接続のトラブルシューティングに使用することができます。その方法をお教えします!...

Linuxのtracerouteコマンドは、ネットワークパケットの伝送に遅いセグメントを発見し、遅いネットワーク接続のトラブルシューティングに使用することができます。その方法をお教えします!

tracerouteの仕組み

tracerouteの仕組みを理解すると、結果を理解しやすくなります。ネットワークパケットが目的地に到達するまでの経路が複雑であればあるほど、どこで速度低下が発生するのかを判断するのは難しくなります。

小規模な組織のローカルエリアネットワーク(LAN)は、比較的シンプルである場合があります。少なくとも1台のサーバーと1~2台のルーターがある場合があります。さらに、異なる拠点間やインターネット上で通信を行うWAN(Wide Area Network)では、複雑さが増す。ネットワークパケットは、ルーターやゲートウェイなど多くのハードウェアと出会い、転送やルーティングが行われます。

パケットのメタデータのヘッダーには、パケットの長さ、どこから来たのか、どこへ行くのか、使用されているプロトコルなどが記述されています。プロトコルの仕様でヘッダが定義されています。プロトコルが特定できれば、ヘッダーの各フィールドの開始と終了を判断し、メタデータを読み取ることができる。

tracerouteは、TCP/IPプロトコルスイートを使用して、ユーザーデータグラムプロトコルのパケットを送信します。ヘッダにはTTL(Time To Live)フィールドがあり、8ビットの整数値が格納されている。名前に関係なく、持続時間ではなく、回数を表します。

パケットはルータを経由して、発信地から目的地まで移動します。パケットがルーターに到着するたびに、TTLカウンターをデクリメントします。TTL値が1になった場合、パケットを受信したルーターはその値をデクリメントし、現在0であることを記録します。パケットはドロップされ、"タイムアウト "したため、次のリープに転送されない。

ルーターはパケットの送信元にICMP(Internet Message Control Protocol)タイムアウトメッセージを送信し、パケットがタイムアウトしたことを知らせます。タイムアウトメッセージには、オリジナルのヘッダーとオリジナルパケットデータの最初の64ビットが含まれています。これは、Request for Comments 792の6ページで定義されています。

したがって、tracerouteがパケットを送信し、その後TTL値を1に設定した場合、パケットは廃棄される前に最初のルータにのみ到達することになります。ルーターからICMPタイムアウトメッセージを受信し、往復にかかった時間を記録する。

次に、TTLを2に設定した演習を繰り返しますが、これは2ホップで失敗します。tracerouteはTTLを3に増やして再試行します。このプロセスは、ターゲットまたはテストされた最大ホップ数(デフォルトでは30)に達するまで繰り返されます。

一部のルーターはうまく再生できない

一部のルーターには脆弱性があり、TTLが0のパケットをドロップせずに転送しようとし、ICMPタイムアウトメッセージを発生させます。

Ciscoによると、一部のインターネットサービスプロバイダ(ISP)は、ルーターが中継するICMPメッセージの数を制限しているとのことです。

ICMPパケットを送信しないように設定されている機器もあります。これは通常、**urf攻撃などの分散型サービス拒否にデバイスが不用意に参加させられることがないようにするためです。

traceroute のデフォルトの応答タイムアウトは 5 秒です。この5秒以内に応答がない場合は、試行を断念する。これは、非常に遅いルーターからの応答は無視されることを意味します。

tracerouteのインストール

tracerouteはfedora31では既にインストールされていますが、manjaro18.1やubuntu18.04ではインストールする必要があります。Manjaroにtracerouteをインストールするには、次のコマンドを使用します。

sudo pacman -Sy traceroute

Ubuntuにtracerouteをインストールするには、次のコマンドを使用します。

sudo apt-get install traceroute

tracerouteを使用する

前述のように、tracerouteの目的は、あなたのコンピュータから目的地までの各ホップでルータから応答を得ることです。口をつぐんで何も教えない人もいれば、秘密を教えることに抵抗のない人もいるでしょう。

例えば、有名なブラーニーストーンがあるアイルランドのブラーニー城のサイトにtracerouteを実行することにします。ブラーニーストーンにキスをすると、「口づけの才能」に恵まれるという伝説がある。途中で出会うルーターが、ちゃんとおしゃべりな人であることを期待しよう。

次のようなコマンドを入力します。

traceroute www.blarneycastle.ie

1行目には以下の情報が記載されています。

  • ターゲットとそのIPアドレス。
  • traceroute があきらめるまでに試行するリープポイントの数。
  • 送信するUDPパケットのサイズ。

それ以外の行には、いずれかのリープポイントの情報が含まれています。しかし、詳細を調べる前に、私たちのコンピューターとブラーニー城のサイトとの間に11回のジャンプがあることがわかる。ジャンプ11も、目的地に到着したことを告げている。

各リープフロッグの行の形式は以下の通りです。

  • 機器の名前、または機器が自身を識別しない場合はIPアドレス。
  • IPアドレスです。
  • 3回のテストの往復時間。ここにアスタリスクが表示されている場合は、テストが応答していないことを意味します。デバイスが全く応答しない場合、3つのアスタリスクが表示され、デバイス名やIPアドレスは表示されません。

次のことを思い出してみよう。

  • リープポイント1:最初のコールポート(ダジャレではありません)は、ローカルネットワーク上のDrayTek Vigorルーターです。このようにして、私たちのUDPパケットはローカルネットワークから離れ、インターネットに入るのです。
  • リープポイント2:このデバイスは応答していません。おそらく、ICMPパケットを送信しないように設定されているのでしょう。あるいは、反応はするのだが、あまりに遅いのでtracerouteがタイムアウトしてしまうのかもしれない。
  • hop3:デバイスが応答しましたが、名前はわからず、IPアドレスのみ取得しました。この行にアスタリスクがあることに注意してください。これは、3つのリクエストすべてに対する応答が得られなかったことを意味します。これは、パケットロスを示している可能性があります。
  • ジャンプ4、5:さらに匿名のジャンプがある。
  • hop6: ここでは、3つのUDPリクエストをそれぞれ異なるリモートデバイスが処理したため、多くのテキストがあります。各機器の(かなり長い)名称とIPアドレスが印刷されます。これは、多くのトラフィックを処理するために多くのハードウェアを持つ「過密な」ネットワークを持っている場合に起こります。このホップは英国最大のISPの1つにあり、同じ遠隔地のハードウェアが3つの接続要求をすべて処理したとしたら、小さな奇跡と言えるでしょう。
  • ホップ7:UDPパケットがISPのネットワークから出るときに通るホップです。
  • hop8:ここでもデバイス名ではなく、IPアドレスを取得しました。
  • ジャンプ9、10:さらに2つの無名ジャンプがある。
  • アイルランドのコークにあるブラーニー城のウェブサイトにたどり着きましたが、IPアドレスの地理的位置からすると、このウェブサイトはロンドンにあるようです。

あるデバイスは協力し、あるデバイスは名前を告げず、またあるデバイスは完全に匿名のままです。

しかし、目的地に到着し、往復の時間が13.773ミリ秒と14.715ミリ秒で、11ジャンプ先であることがわかったのです。

デバイス名を隠す

これまで見てきたように、デバイス名を含めると表示がおかしくなることがあります。データを見やすくするために、-n(マッピングなし)オプションを使用することができます。

この例で実行するには、次のように入力します。

traceroute -n blarneycastle.ie

そのため、ボトルネックを示すと思われる往復のタイミングに大きな数値を選びやすくなっています。

3回目のジャンプは、ちょっと怪しく見えた。前回は2回しか反応しなかったが、今回は1回しか反応しなかった。この場合、確かに私たちにはどうしようもないことでした。

しかし、企業のネットワークを調査するのであれば、このノードをより深く研究することは価値があります。

トレースアウトのタイムアウト値を設定する

おそらく、デフォルトのタイムアウト(5秒)を延長すれば、より多くのレスポンスが得られると思います。そのために、-w(待ち時間)オプションで7秒に変更します。(浮動小数点数であることにご注意ください)。

次のようなコマンドを入力します。

traceroute -w 7.0 blarneycastle.ie

あまりインパクトがなかったので、レスが古くなっているのでしょう。匿名ホップは意図的に秘匿していたようです。

テスト回数を設定する

デフォルトでは、tracerouteは各リープポイントに3つのUDPパケットを送信します。q(クエリー数)オプションで上下に調整することができるのです。

tracerouteのテストを高速化するために、以下のコマンドを入力して、UDPプローブパケットの送信数を1つに絞ります。

traceroute -q 1 blarneycastle.ie

これにより、各リープポイントにプローブが送られる。

初期 ttl 値の設定

TTLの初期値を1以外の値に設定し、いくつかのジャンプを飛ばすことができるのです。通常、TTL値は、最初のテストのセットでは1、次のテストのセットでは2、といった具合に設定されます。5に設定すると、最初のテストは1から4を飛ばして5にジャンプしようとします。

このコンピュータからブラーニー城のサイトまでは11回跳ぶことが分かっているので、次のように入力すると、直接11回目の跳躍に行くことができる。

traceroute -f 11 blarneycastle.ie

これにより、ターゲット接続の状態について簡潔で良いレポートが得られます。

配慮のある

tracerouteは、ネットワークルーティングの研究、接続速度のチェック、ボトルネックの特定に適したツールです。Windowsには、同様の機能を持つtracertコマンドもあります。

ただし、未知のデバイスに大量のUDPパケットを浴びせることは避け、スクリプトや無人ジョブにtracerouteを含めることは慎重に行う必要があります。

ロードトラッキングルーティングは、ネットワーク性能に悪影響を与える可能性があります。今すぐ直したい」という状況でない限り、通常の勤務時間外に利用するのがよいでしょう。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ