ホームページ >運用・保守 >Linuxの運用と保守 >Linux 環境で mtr コマンド ライン ツールを使用してリンク テストを実行する方法

Linux 環境で mtr コマンド ライン ツールを使用してリンク テストを実行する方法

坏嘻嘻
坏嘻嘻オリジナル
2018-09-28 14:44:407601ブラウズ

この記事では、Linux 環境で mtr コマンド ライン ツールを使用してリンク テストを実行する方法を紹介し、具体的な手順に焦点を当てます。この記事の内容はコンパクトなので、何かを得ることができれば幸いです。

Linux インスタンスの Web サイトへのアクセスのパケット損失遅延が大きい

Web サイトへのアクセスが非常に遅い、またはアクセスできない場合、他の明らかな問題が解決され、ping で明らかなパケット損失が検出された場合は、次のことをお勧めします。リンクテストを実行します。 Linux 環境では、mtr コマンド ライン ツール (推奨) またはtraceroute コマンド ライン ツールを使用してリンク テストを実施し、問題の原因を特定できます。

通常は、次の手順に従ってください。

リンク テスト ツールを使用して、ネットワークの状態とサーバーの状態を検出します。

リンクテストの結果に基づいて分析および処理します。

mtr コマンド ライン ツール (推奨)

mtr (My traderoute) は、ほぼすべての Linux ディストリビューションにプレインストールされているネットワーク テスト ツールです。 Tracert コマンドと ping コマンドを統合したグラフィカル インターフェイスは非常に強力です。

ping とtracert は、通常、ネットワーク状態とサーバーの状態を検出するために使用されます。具体的な手順は次のとおりです。

Linux 環境で mtr コマンド ライン ツールを使用してリンク テストを実行する方法

mtr は、デフォルトでリンクの ICMP パケットを送信します。 -u パラメータを使用して、検出する UDP パケットを指定します。リンク追跡テストを 1 回だけ実行するtracerouteと比較して、mtrはリンク上の関連ノードを継続的に検出し、対応する統計情報を提供します。 mtr はノードの変動によるテスト結果への影響を回避できるため、テスト結果がより正確になるため、最初に使用することをお勧めします。

#使用手順

mtr [-hvrctglspni46] [--help] [--version] [--report]
                [--report-cycles=COUNT] [--curses] [--gtk]
                [--raw] [--split] [--no-dns] [--address interface]
                [--psize=bytes/-s bytes]
                [--interval=SECONDS] HOSTNAME [PACKETSIZE]

#出力例#

[root@centos ~]# mtr 223.5.5.5
                                  My traceroute  [v0.75]
mycentos6.6 (0.0.0.0)                                             Wed Jun 15 23:16:27 2016
Keys:  Help   Display mode   Restart statistics   Order of fields   quit
                                                  Packets               Pings
 Host                                           Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. ???
 2. 192.168.17.20                                0.0%     7   13.1   5.6   2.1  14.7   5.7
 3. 111.1.20.41                                  0.0%     7    3.0  99.2   2.7 632.1 235.4
 4. 111.1.34.197                                 0.0%     7    1.8   2.0   1.2   2.9   0.6
 5. 211.138.114.25                               0.0%     6    0.9   4.7   0.9  13.9   5.8
 6. 211.138.114.70                               0.0%     6    1.8  22.8   1.8  50.8  23.6
    211.138.128.134
    211.138.114.2
    211.138.114.66
 7. 42.120.244.186                               0.0%     6    1.4   1.6   1.3   1.8   0.2
    42.120.244.198
 8. 42.120.244.246                               0.0%     6    2.8   2.9   2.6   3.2   0.2
    42.120.244.242
 9. ???
10. 223.5.5.5                                    0.0%     6    2.7   2.7   2.5   3.2   0.3

共通のオプション パラメータの説明

-r または -report: 出力をレポート モードで表示します。

-p または --split: --report のように結果全体をカウントするのではなく、各追跡の結果を個別にリストします。

-s または --psize: ping パケットのサイズを指定します。

-n または --no-dns: IP アドレスに対してドメイン名の逆解決を実行しません。

-a または --address: パケットを送信するための IP アドレスを設定します。ホストに複数の IP がある場合に使用されます。

-4: IPv4 プロトコルのみを使用します。

-6: IPv6 プロトコルのみを使用します。

mtr の実行中に、対応する文字を入力してモードを切り替えることもできます。各文字の意味は次のとおりです。

または h: ヘルプ メニューを表示します。

d: 表示モードを切り替えます。

n: DNS ドメイン名解決の有効化または無効化を切り替えます。

u: プローブに ICMP パケットと UDP パケットの使用を切り替えます。

#戻り結果の説明

デフォルト設定では、戻り結果の各データ列の説明は次のとおりです。 最初の列 (ホスト): ノードの IP アドレスとドメイン名。前に示したように、n キーを押すと表示が切り替わります。

2 列目 (Loss%): ノードのパケット損失率。

3 列目 (Snt): 1 秒あたりに送信されたパケット数。デフォルト値は 10 で、-c パラメータで指定できます。

4 列目 (最後): 最新の検出遅延値。

5 列目、6 列目、7 列目 (Avg、Best、Wrst): それぞれ検出遅延の平均値、最小値、最大値です。

8 番目の列 (StDev): 標準偏差。大きいほど、対応するノードは不安定になります。

traceroute コマンド ライン ツール

traceroute は、インターネット プロトコル (IP) をトレースするための、ほぼすべての Linux ディストリビューションにプレインストールされているネットワーク テスト ツールです。パケットが宛先アドレスに配信されるときにたどるパス。 traceroute は、最初に小さな最大存続時間 (Max_TTL) を持つ UDP プローブ パケットを送信し、次にゲートウェイから始まるリンク全体で ICMP TIME_EXCEEDED 応答をリッスンします。プローブは TTL=1 から開始され、ICMP PORT_UNREACHABLE メッセージが受信されるまで TTL 値を増加させます。 ICMP PORT_UNREACHABLE メッセージは、ターゲット ホストが見つかったこと、またはコマンドがトレースに許可されている最大 TTL 値に達したことを識別するために使用されます。

traceroute は、デフォルトでリンク検出のために UDP パケットを送信します。 -I パラメータを使用すると、ICMP パケットをプローブ用に送信できます。

#使用手順

traceroute [-I] [ -m Max_ttl ] [ -n ] [ -p Port ] [ -q Nqueries ] [ -r ] 
[ -s SRC_Addr ] [  -t TypeOfService ] [ -f flow ] [ -v ] [  -w WaitTime ] Host [ PacketSize ]
#出力例#
[root@centos ~]# traceroute -I 223.5.5.5
traceroute to 223.5.5.5 (223.5.5.5), 30 hops max, 60 byte packets
 1  * * *
 2  192.168.17.20 (192.168.17.20)  3.965 ms  4.252 ms  4.531 ms
 3  111.1.20.41 (111.1.20.41)  6.109 ms  6.574 ms  6.996 ms
 4  111.1.34.197 (111.1.34.197)  2.407 ms  2.451 ms  2.533 ms
 5  211.138.114.25 (211.138.114.25)  1.321 ms  1.285 ms  1.304 ms
 6  211.138.114.70 (211.138.114.70)  2.417 ms 211.138.114.66 (211.138.114.66)  
 1.857 ms 211.138.114.70 (211.138.114.70)  2.002 ms
 7  42.120.244.194 (42.120.244.194)  2.570 ms  2.536 ms 42.120.244.186 (42.120.244.186)  1.585 ms
 8  42.120.244.246 (42.120.244.246)  2.706 ms  2.666 ms  2.437 ms
 9  * * *
10  public1.alidns.com (223.5.5.5)  2.817 ms  2.676 ms  2.401 ms

共通オプションパラメータの説明

-d ソケットレベルのデバッグ機能を使用します。

-f 最初の検出パケットの生存値 TTL のサイズを設定します。 -F はセグメンテーション フラグを設定しません。

-g ソースルーティングゲートウェイを設定します。最大 8 つまで設定できます。

-i 指定されたネットワーク カードを使用してデータ パケットを送信します。ホストに複数のネットワーク カードがある場合に使用されます。

-I プローブには UDP パケットの代わりに ICMP パケットを使用します。

-m 検出パケットの最大生存値 TTL のサイズを設定します。

-n ホスト名の代わりに IP アドレスを直接使用します (DNS 逆引き参照を無効にします)。

-p UDP 伝送プロトコルの通信ポートを設定します。

-r 通常のルーティング テーブルを無視し、データ パケットをリモート ホストに直接送信します。

-s データ パケットを送信するローカル ホストの IP アドレスを設定します。

-t 検出パケットのTOS値を設定します。

-v はコマンドの実行プロセスを詳細に表示します。

-w リモートホストからのパケット返信を待つ時間を設定します。

-x データ パケットの正当性チェックをオンまたはオフにします。

リンクテスト結果の分析

次のリンクテスト結果例図に基づく:

Linux 環境で mtr コマンド ライン ツールを使用してリンク テストを実行する方法

操作手順

各エリアの異常の有無を判断し、各エリアの状況に応じて個別に対処してください。

エリア A: クライアント ローカル ネットワーク、つまりローカル LAN およびローカル ネットワーク プロバイダー ネットワーク。この領域の異常およびクライアントのローカル ネットワークに関連するノードの問題については、ローカル ネットワークのトラブルシューティングと分析を行ってください。ローカル ネットワーク プロバイダーのネットワークに関連するノードの問題については、ローカル オペレータにフィードバックを提供してください。

エリア B: キャリア バックボーン ネットワーク。この領域の異常については、異常なノード IP に基づいてオペレーターに問い合わせて、対応するオペレーターに直接、または Alibaba Cloud アフターセールス テクニカル サポートを通じて問題を報告できます。

エリア C: ターゲット サーバーのローカル ネットワーク、つまりターゲット ホストが属するネットワーク プロバイダー ネットワーク。この領域の異常については、対象ホストが所属するネットワークプロバイダーに問題を報告する必要があります。

Avg(平均)とStDev(標準偏差)を組み合わせて、各ノードに異常があるかどうかを判定します。

StDev が非常に高い場合は、該当ノードの Best と Wrst を同期的に観測し、該当ノードに異常があるかどうかを判断します。

StDev が高くない場合は、Avg を使用して該当ノードに異常があるかどうかを判断します。

注: 上記の StDev が高いか高くないかについての特定の時間範囲の基準はありません。同じノードの他の列の遅延値に基づいて相対評価を行う必要があります。たとえば、Avg が 30 ms の場合、StDev が 25 ms の場合、これは高い偏差とみなされます。また、Avg が 325 ミリ秒の場合、同じ StDev (25 ミリ秒) は低い偏差であると見なされます。

ノードのパケット損失率を確認します。Loss% がゼロでない場合は、このホップ ネットワークに問題がある可能性があります。

ノードのパケット損失には通常 2 つの理由があります。

ノードの ICMP 送信レートを人為的に制限し、パケット損失を引き起こします。

確かにノードに異常があり、パケットロスが発生しています。

現在の異常ノードのパケット損失の理由を特定します。

後続のノードでパケットが失われない場合、現在のノードのパケット損失はオペレータのポリシー制限によるものであり、無視できることを意味します。前のリンク テスト結果の例の図の 2 番目のホップに示されているように。

後続のノードでもパケットロスが発生した場合は、現在のノードにネットワーク異常が発生し、パケットロスが発生していることを意味します。上のリンク テスト結果の例の図に示すように、ホップ 5 が表示されます。

注: 上記 2 つの状況は同時に発生する可能性があります。つまり、対応するノードにポリシー速度制限とネットワーク異常の両方が発生します。この状況では、現在のノードとその後のノードで継続的にパケット損失が発生し、各ノードのパケット損失率が異なる場合、通常は最後の数ホップのパケット損失率が優先されます。上のリンク テスト結果の例の図に示されているように、5 番目、6 番目、7 番目のホップでパケット損失が発生しました。したがって、最終的なパケット損失状況は、7 ホップの 40% を基準にしています。

明らかな遅延があるかどうかを確認することで、ノードに異常があるかどうかを確認します。次の 2 つの側面から分析します。

あるホップ以降の遅延が大幅に増加した場合、通常、ノードにネットワーク異常があると判断されます。上のリンクテスト結果例の写真のように、5ホップ以降以降のノードの遅延が大幅に増加しており、5ホップのノードでネットワーク異常が発生していると推測されます。

注: 遅延が大きい場合は、該当ノードに異常があるとは限りません。遅延が大きい場合は、データ リターン リンクが原因である可能性もあります。リバース リンク テストと合わせて分析することをお勧めします。

ICMP ポリシーのレート制限により、対応するノードの遅延が急激に増加する場合もありますが、後続のノードは通常は正常に戻ります。上記のリンク テスト結果の例に示されているように、3 番目のホップのパケット損失率は 100% であり、遅延も大幅に増加しています。しかしその後、ノードの遅延はすぐに通常の状態に戻りました。したがって、ノードの遅延とパケット損失の急激な増加は、ポリシーの速度制限によるものであると判断されます。

以上がLinux 環境で mtr コマンド ライン ツールを使用してリンク テストを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。