Linux
 Computer >> コンピューター >  >> システム >> Linux

Linux用のTracerouteコマンド

知っておくべきこと

  • tracerouteコマンドに含める必要のあるパラメータは、宛先のホスト名またはIPアドレスのみです。
  • TTLが1のプローブを開始し、ICMPの「ポートに到達できません」になるか、試行の最大値に達するまで1ずつ増やします。

この記事では、Linuxマシンに適用可能なtraceroute情報について説明し、コマンドスイッチの説明と結果の解釈方法に関する情報を示します。 Tracerouteは、Windowsでは使用方法が異なります。

Tracerouteの仕組み

tracerouteコマンドは、情報のパケットが送信元から宛先までに実行する移動をマップします。 tracerouteの用途の1つは、ネットワーク全体でデータ損失が発生した時期を特定することです。これは、ノードがダウンしていることを示している可能性があります。

レコード内の各ホップは、発信元のPCと目的のターゲット間の新しいサーバーまたはルーターを反映しているため、tracerouteスキャンの結果を確認すると、ネットワークトラフィックに悪影響を与える可能性のある低速ポイントが特定されます。

Tracerouteを使用したトラブルシューティング

ネットワークトラフィックがたどる特定のルートを評価する(またはパケットを破棄している悪意のあるゲートウェイを見つける)ことは、いくつかのトラブルシューティングの課題を提示します。 Tracerouteは、IPプロトコルの存続時間を使用します 宛先ホストへのパスに沿って各ゲートウェイからICMPTIME_EXCEEDED応答を要求するフィールド。

tracerouteコマンドを実行するときに含める必要がある唯一のパラメーターは、宛先のホスト名またはIPアドレスです。

Tracerouteの構文とスイッチ

Linux用のTracerouteコマンド

Tracerouteは、次の一般的な構文に従います。

traceroute [ -dFInrvx ] [ -f first_ttl ] [ -g gateway ] [ -i iface ] [ -m max_ttl ] [ -p port ] [ -q nqueries ] [ -s src_addr ] [ -t tos ] [ -w waittime ] [ -z pausemsecs ] host [ packetlen ]  

1つまたは複数のオプションのスイッチを指定することにより、コマンドのパフォーマンスまたは出力を変更できます。

Tracerouteコマンドスイッチ 切り替え 説明 -f 最初の発信プローブパケットで使用される初期存続時間を設定します。-F 「フラグメント化しない」ビットを設定します。-d ソケットレベルのデバッグを有効にします。-g 緩いソースルートゲートウェイを指定します(最大8つ)。 -i 発信プローブパケットの送信元IPアドレスを取得するためのネットワークインターフェイスを指定します。これは通常、マルチホームホストでのみ役立ちます。 ( -sを参照してください これを行う別の方法のフラグを立てます。)-私 UDPデータグラムの代わりにICMPECHOを使用します。-m 発信プローブパケットで使用される最大存続時間(最大ホップ数)を設定します。デフォルトは30ホップです(TCP接続に使用されるのと同じデフォルトです)。 -n ホップアドレスをシンボリックおよび数値ではなく数値で出力します(パス上で見つかった各ゲートウェイのネームサーバーアドレスから名前へのルックアップを保存します)。 -p プローブで使用されるベースUDPポート番号を設定します(デフォルトは33434)。 Tracerouteは、UDPポートで何もリッスンしていないことを望んでいます。ベース base + nhops-1 宛先ホストで(したがって、ルートトレースを終了するためにICMP PORT_UNREACHABLEメッセージが返されます)。デフォルト範囲のポートで何かがリッスンしている場合、このオプションを使用して、未使用のポート範囲を選択できます。 -r 通常のルーティングテーブルをバイパスして、接続されたネットワーク上のホストに直接送信します。ホストが直接接続されたネットワーク上にない場合、エラーが返されます。このオプションを使用して、ルートがないインターフェースを介してローカルホストにpingを実行できます(たとえば、インターフェースが routered によってドロップされた後)。 (8C))。 -s 発信プローブパケットの送信元アドレスとして、次のIPアドレス(通常はホスト名ではなくIP番号として指定されます)を使用します。マルチホームホスト(複数のIPアドレスを持つホスト)では、このオプションを使用して、送信元アドレスを、プローブパケットが送信されるインターフェイスのIPアドレス以外のものにすることができます。 IPアドレスが本機のインターフェースアドレスでない場合は、エラーが返され、何も送信されません。 ( -iを参照してください これを行う別の方法のフラグを立てます。) -t サービスの種類を設定します プローブパケットで次の値(デフォルトはゼロ)になります。値は、0〜255の範囲の10進整数である必要があります。このオプションを使用して、サービスの種類が異なるとパスが異なるかどうかを確認できます。 (4.4bsdを実行していない場合、telnetやftpなどの通常のネットワークサービスではTOSを制御できないため、これはアカデミックな場合があります。)TOSのすべての値が有効または意味があるわけではありません。定義については、IP仕様を参照してください。有用な値はおそらく`-t 16 '(低遅延)および ` -t 8 '(高スループット)。 -v 詳細な出力。 TIME_EXCEEDEDおよびUNREACHABLE以外の受信ICMPパケットが一覧表示されます。-w プローブへの応答を待機する時間(秒単位)を設定します(デフォルトは5秒)。 -x IPチェックサムを切り替えます。通常、これによりtracerouteがIPチェックサムを計算できなくなります。場合によっては、オペレーティングシステムは送信パケットの一部を上書きできますが、チェックサムを再計算することはできません。したがって、場合によっては、デフォルトでチェックサムを計算せず、 -xを使用します。 それらを計算させます。 ICMP ECHOプローブ( -I )を使用する場合、通常、ラストホップにはチェックサムが必要であることに注意してください。 )、したがって、ICMPを使用する場合は常に計算されます。 -z プローブ間で一時停止する時間(ミリ秒単位)を設定します(デフォルトは0)。 SolarisやCiscoのルーターなどの一部のシステムでは、ICMPメッセージのレート制限が行われます。これで使用するのに適した値は500(たとえば、1/2秒)です。

結果の解釈

Tracerouteは、小さなTTLでUDPプローブパケットを起動し、ゲートウェイからのICMP「timeexceeded」応答をリッスンすることにより、IPパケットがインターネットホストまでたどるパスの概要を示します。 TTLが1のプローブを開始し、ICMPの「ポート到達不能」(パケットが宛先に到着したことを意味します)を取得するか、試行の最大値に達するまで1ずつ増やします。これは、デフォルトで30ホップであり、<で変更できます。強い>-m フラグ。

tracerouteが実行されると、各TTL設定で3つのプローブが送信され、TTL、ゲートウェイのアドレス、および各プローブのラウンドトリップ時間を示す行がコンソールに出力されます。プローブの回答が異なるゲートウェイからのものである場合、応答する各システムのアドレスが出力されます。 tracerouteが5秒以内に応答を受信しない場合( -w で変更) フラグ)、そのプローブのアスタリスクを出力します。

UDPプローブパケット処理が宛先ホストを圧倒するのを防ぐために、tracerouteは宛先ポートをデバイスが使用する可能性が低い値に設定します。宛先のネットワークまたはサービスがそのポートを使用している場合は、 -pを使用して値を変更します フラグ。

Tracerouteの結果の例

サンプルの使用と出力は、次の例のような結果を返します。

[yak 71]% traceroute nis.nsf.net.
traceroute to nis.nsf.net (35.1.1.48), 30 hops max, 38 byte packet
1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU (128.32.136.23) 39 ms 40 ms 39 ms
5 ccn-nerif22.Berkeley.EDU (128.32.168.22) 39 ms 39 ms 39 ms
6 128.32.197.4 (128.32.197.4) 40 ms 59 ms 59 ms
7 131.119.2.5 (131.119.2.5) 59 ms 59 ms 59 ms
8 129.140.70.13 (129.140.70.13) 99 ms 99 ms 80 ms
9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms
10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms
11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms

2行目と3行目は同じです。この結果は、TTLがゼロのパケットを転送するセカンドホップシステムのバグのあるカーネル(lbl-csam.arpa)に関連しています(4.3 BSDの分散バージョンのバグ)。 NSFNet(129.140)はNSSのアドレスから名前への変換を提供しないため、パケットがクロスカントリーを通過するパスを推測する必要があります。

サイレントゲートウェイの例

さらに興味深い例は次のとおりです。

 [yak 72]%tracerouteallspice.lcs.mit.edu。
traceroute to allspice.lcs.mit.edu(18.26.0.115)、最大30ホップ
1helios.ee.lbl。 gov(128.3.112.1)0 ms 0 ms 0 ms
2 lilac-dmc.Berkeley.EDU(128.32.216.1)19 ms 19 ms 19 ms
3 lilac-dmc.Berkeley.EDU(128.32。 216.1)39ミリ秒19ミリ秒19ミリ秒
4 ccngw-ner-cc.Berkeley.EDU(128.32.136.23)19ミリ秒39ミリ秒39ミリ秒
5 ccn-nerif22.Berkeley.EDU(128.32.168.22) 20ミリ秒39ミリ秒39ミリ秒
6128.32.197.4(128.32.197.4)59ミリ秒119ミリ秒39ミリ秒
7 131.119.2.5(131.119.2.5)59ミリ秒59ミリ秒39ミリ秒
8 129.140 .70.13(129.140.70.13)80 ms 79 ms 99 ms
9 129.140.71.6(129.140.71.6)139 ms 139 ms 159 ms
10 129.140.81.7(129.140.81.7)199 ms 180 ms 300 ms
11 129.140.72.17(129.140.72.17)300 ms 239 ms 239 ms
12 * * *
13 128.121.54.72(128.121.54.72)259 ms 499 ms 279 ms
14 * * *
15 * * *
16 * * *
17 * * *
18 ALLSPICE.LCS.MIT.EDU(18.26.0.115)339ミリ秒279ミリ秒279ミリ秒

12、14、15、16、および17ホップ離れたゲートウェイは、ICMP「timeexceeded」メッセージを送信しないか、TTLが小さすぎて到達できないメッセージを送信しないことに注意してください。 14行目から17行目は、「時間を超えました」というメッセージを送信しないMITCゲートウェイコードを実行しています。

上記の例のサイレントゲートウェイ12は、4。[23] BSDネットワークコードとその派生物のバグの結果である可能性があります。4.3コード以前を実行しているマシンは、元のデータグラムに残っているTTLを使用して到達不能メッセージを送信します。ゲートウェイの場合、残りのTTLはゼロであり、ICMPの「時間を超えた」とは戻らないことが保証されています。

宛先システムのサイレントゲートウェイの例

このバグの動作は、宛先システムに表示されたときに少し興味深いものになります。

 1 helios.ee.lbl.gov(128.3.112.1)0 ms 0 ms 0 ms 
2 lilac-dmc.Berkeley.EDU(128.32.216.1)39 ms 19 ms 39 ms
3 lilac-dmc.Berkeley.EDU(128.32.216.1)19 ms 39 ms 19 ms
4 ccngw-ner-cc.Berkeley.EDU(128.32.136.23)39 ms 40 ms 19 ms
5 ccn- nerif35.Berkeley.EDU(128.32.168.35)39 ms 39 ms 39 ms
6 csgw.Berkeley.EDU(128.32.133.254)39 ms 59 ms 39 ms
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 rip.Berkeley.EDU(128.32.131.22) 59ミリ秒! 39ミリ秒! 39ミリ秒!

12個の「ゲートウェイ」が存在し(13個が最終目的地)、それらの後半が欠落していることに注意してください。実際に起こっているのは、 ripという名前のサーバーです。 (Sun OS 3.5を実行しているSun-3)は、到着したデータグラムのTTLをICMP応答のTTLとして使用しています。したがって、パス長の少なくとも2倍のTTLでプローブするまで、応答はリターンパスでタイムアウトになります(ICMPはICMPに送信されないため、誰にも通知は送信されません)。つまり、リップは実際には7つだけです。飛び跳ねます。

TTLが1で返される応答は、この問題が存在する手がかりです。 Tracerouteは!を出力しますTTLが1以下の場合、ベンダーは廃止された(DECのUltrix、Sun 3.x)または非標準(HPUX)ソフトウェアを多数出荷しているため、この問題が頻繁に発生することを想定し、慎重に選択してください。プローブのターゲットホスト。

時間が経過した後のその他の可能な注釈は、!Hです。 、!N 、または!P (ホスト、ネットワーク、またはプロトコルに到達できません)、!S (ソースルートが失敗しました)、!F- (断片化が必要です。RFC1191パスMTUディスカバリーの値が表示されます)、!X (通信は管理上禁止されています)、!V (ホストの優先順位違反)、!C (優先カットオフが有効)、または (ICMP到達不能コード)。これらのコードは、RFC1716に優先するRFC1812によって定義されています。ほとんどすべてのプローブが何らかの到達不能なホストになる場合、tracerouteはあきらめて終了します。

このプログラムは、ネットワークのテスト、測定、および管理での使用を目的としています。これは、主に手動の障害分離に使用する必要があります。ネットワークに負荷がかかる可能性があるため、通常の操作中または自動化されたスクリプトからtracerouteを使用することは賢明ではありません。


  1. Linux用の4つのタイムマシンの代替

    AppleのTimeMachineがバックアップを主流にしたことは間違いありません。 Time Machineが登場する前は、平均的なユーザーは疫病のようなバックアップを避けていました。手順は複雑すぎるようで、貴重なストレージスペースも無駄になりました。 Time Machineにより、Appleは人々の考え方を変えました。これは主に、そのシンプルさのおかげです。コンピュータに外付けHDDを追加すると、ファイルとOSが永久に安全になります。ワンクリックで、大惨事が発生する前に戻ります。 そのとき、他のバックアップソリューションがこのアプローチに注目し、シンプルさを優先する必要があると判断し

  2. 新規ユーザーにとって最も有用なLinuxコマンドの6つ

    Linuxに切り替えるのは少し怖いかもしれません。新しいオペレーティングシステム?別のデスクトップ?コンピューティングで知っていることはすべて変わりましたか?スイッチは時々怖いように見えるかもしれませんが、それはより生産的で非常にやりがいのあるものになる可能性があります。新しいことを学ぶことがあなたの最初のステップです。 ターミナルとは何ですか? Linuxの詳細を学ぶ前に、ターミナルとは何かを理解する必要があります。ターミナルは、Linux版のコマンドプロンプトまたはPowerShellです。もともとコマンドラインオペレーティングシステムとして作成されたLinuxは、人気が高まっているため