Traceroute を使用して Linux 上のネットワークの問題を診断する方法

Traceroute を使用して Linux 上のネットワークの問題を診断する方法
Traceroute Linux の特集

Traceroute は、インターネット パケットが送信元から宛先ホストまでたどるルートを追跡できるシンプルなネットワーク ユーティリティです。この記事では、Traceroute を使用して Linux のネットワークの状態をチェックし、新たな問題を診断する方法を説明します。

トレースルートはどのように機能しますか?

Traceroute は、リモート ホストへのパスに沿ったすべてのインターネット ゲートウェイに短い TTL 長の UDP パケットを送信することで機能します。これらの短い TTL 長により、これらのゲートウェイはインターフェイスの IP アドレスとともに ICMP「TIME_EXCEEDED」応答を報告するように強制されます。

これら 2 つの要素を組み合わせることで、traceroute はパケットが外部サーバーに接続する際に通過するマシンの詳細なリストを作成できるようになります。たとえば、ネットワーク内で「google.com」へのtracerouteを実行すると、Googleのサーバーに到達する前に9~10個のゲートウェイがリストされます。

google.com の基本的なtracerouteを表示するターミナル。

Traceroute で解決できるネットワークの問題は何ですか?

Traceroute は単なるネットワーク調査ツールであり、ネットワーク内の未解決の問題を最適化したり修正したりするものではありません。 Traceroute は、ネットワークとその上を移動するパケットがどのように動作するかを記述することしかできません。

それにもかかわらず、潜在的なネットワーク問題を診断するための重要なツールであることに変わりはありません。良い例の 1 つは、ローカル ゲートウェイが次のホップへのパケットの転送に失敗した場合です。 Traceroute は、「TIME_EXCEEDED」応答を送信しないコア ネットワーク内のルーターを強調表示することで、この問題に対処できます。

ゲートウェイが常にプログラムに応答しない基本的なトレースルートを示す端末。

それとは別に、traceroute を使用してホスト間の遅延の問題をチェックすることもできます。これは、リモート マシンに接続するときに一貫した低遅延を確保するためにローカル ネットワークに VPN が必要かどうかを確認する場合に役立ちます。

Linux での Traceroute の使用

新しいターミナルを開き、「traceroute」と入力し、その後にマシンを接続するマシン アドレスを入力します。これはドメイン名または IP アドレスのいずれかです。例:

Enter を押して、リモート ホストへのパスのマッピングを開始します。

小規模 VPS への基本的なトレースルートを示すターミナル。

Traceroute でカスタム TTL を使用してパケットを送信する

基本的な使用には、traceroute を単独で使用するだけで十分ですが、フラグを使用してプログラムの動作を調整することもできます。これは、ネットワークの優先順位付けを行う場合に特に役立ちます。

traceroute の最も一般的な調整の 1 つは、ゲートウェイに送信するパケットの量を変更することです。これを行うには、-q フラグの後に、リクエストごとに送信するパケットの量を指定します。

-N フラグの後に「1」を指定して、同時パケット要求を明示的に無効にすることもできます。これは、短い TTL で UDP パケットをレート制限するゲートウェイがある場合に役立ちます。

同時パケットが無効になっているトレースルートを示す端末。

最後に、traceroute のデフォルトの TTL 値を変更することもできます。これを行うには、-f フラグの後に、最初のプローブ パケットに必要な TTL を追加します。

プログラムが最初の 2 つのゲートウェイをスキップするトレースルートを示すターミナル。

Linux での Traceroute プロトコルの変更

デフォルトでは、Linux のtraceroute はネットワーク ゲートウェイにプローブ パケットを送信するために UDP を使用します。これは、traceroute パケットをアクティブにブロックするゲートウェイを調査している場合に問題になる可能性があります。

これを修正するには、-T フラグを使用して、単純な TCP SYN パケットを使用してtraceroute を実行します。

プログラムが UDP の代わりに TCP SYN パケットを使用するトレースルートを示す端末。

一方、宛先ゲートウェイが UDP のみを制限している場合は、traceroute に ICMP ECHO パケットの使用を強制することもできます。

Traceroute はカスタム ネットワーク インターフェイスもサポートしています。ここで、traceroute はマシン内の別のネットワーク カードを使用してパケットのパスを調査します。

これを行うには、-i フラグの後にインターフェースのデバイス名を指定してプログラムを実行します。

それとは別に、-p フラグを使用して、traceroute が UDP プローブに使用する開始ポート番号を指定できます。

最後に、-p フラグも、使用しているプロトコルに応じて動作を変更します。 -I と組​​み合わせると、-p 値が宛先ポートではなく初期 ICMP シーケンス番号として設定されます。

カスタム ICMP シーケンス番号を持つ ICMP ECHO を使用したトレースルートを表示する端末。

traceroute の使用方法を学ぶことは、ネットワーク上でコンピュータがどのように通信するかを理解するための最初のステップにすぎません。コンピュータ ネットワークについて詳しくは、tcpdump を使用して TCP パケットの内容を分析するをご覧ください。

一方、Linux の dig ツールを使用することで、DNS などの上位 OSI レイヤについてさらに詳しく学ぶこともできます。あ>

すべての変更とスクリーンショットは Ramces Red によるものです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です