Linux 管理者として、ネットワーク接続の不良や遅延の多さなどの問題に遭遇したことがありますか?問題のトラブルシューティングを改善するために、ネットワーク ルートのトレースと検出のテクニックについてもっと知りたいと思ったことはありませんか?そうであれば、Linux でのルーティング検出スキルを学ぶ必要があります。この記事では、Linux コマンド ライン ツールを使用して、ルートの追跡と検出を迅速かつ簡単に実行する方法を詳しく紹介します。
Linux ビューのネットワーク ルーティング
ネットワークに接続されているすべてのコンピュータは、ローカルホストから送信されるネットワーク TCP/IP パケットに対して、ある種のルーティング命令を必要とします。ほとんどのネットワーク環境は非常に単純であり、パケットを残すためのオプションが 2 つしかないため、これは通常非常に単純です。すべてのパケットは、ローカル ネットワーク上のデバイスまたは他のリモート ネットワークに送信されます。
「ローカル」ネットワークは、ローカル ホストが配置されている論理ネットワークとして定義してください。また、通常は物理ネットワークとしても定義してください。論理的には、これはホストにローカル サブネット IP アドレス範囲の 1 つが割り当てられているローカル サブネットを指します。物理的には、これはホストが 1 つ以上のスイッチに接続されており、それらのスイッチはローカル ネットワークの残りの部分にも接続されていることを意味します。
TCP/IP ネットワーク モデル
ルーティングに入る前に、パケットがネットワーク上の正しいホストにどのように到達するかについて説明します。 TCP/IP ネットワーク モデルは、ホストがローカル ネットワーク上にあるか世界中にあるかに関係なく、あるホストから別のホストにパケットを移動するために必要なメカニズムを記述する 5 層スタックを定義します。このモデルの以下の説明では、各レイヤーに番号が付けられ、そのレイヤーによって処理されるデータ ユニットの名前も含まれます。
5. アプリケーション層: メッセージ この層には、HTTP、DHCP、SSH、FTP、SMTP、IMAP など、さまざまなネットワーク アプリケーションによる通信に必要な接続プロトコルが含まれます。リモート Web サイトから Web ページをリクエストすると、接続リクエストが Web サーバーに送信され、応答がそのレイヤーのホストに返され、ブラウザーのウィンドウに Web ページが表示されます。
4. トランスポート層: TCP セグメント。トランスポート層は、転送されるデータやプロトコルの種類に依存しない、エンドツーエンドのデータ転送およびストリーム管理サービスを提供します。ポート 80 (HTTP など) と 25 (SMTP) を使用して、送信側ホストとリモート ホスト間の接続を確立します。
\3. インターネット層: データ パケット。パケットのルーティングはインターネット層で実行されます。この層は、2 つ以上の異なるネットワーク間でパケットをルーティングして最終宛先に到達する役割を果たします。この層は、IP アドレスとルーティング テーブルを使用して、パケットの送信先となる次のデバイスを決定します。ルーターに送信された場合、各ルーターは、ローカル ホストから宛先ホストへのルート全体をマッピングするのではなく、一連の次のルーターにパケットを送信することのみを担当します。インターネット層は主に、ルーターがルーターと通信して、リンク内の次のルーターを決定することに関係します。
2. データリンク層: フレームワーク。リンク層は、単一のローカル論理ネットワーク上のハードウェア ホスト間の直接接続を管理します。この層は、ネットワーク インターフェイス カード (NIC) に埋め込まれたメディア アクセス コントロール (MAC) アドレスを使用して、ローカル ネットワークに接続されている物理デバイスを識別します。この層は、ローカル ネットワーク上にないホストにはアクセスできません。
1. 物理層: ビット。これはハードウェア層であり、NIC と物理イーサネット ケーブル、およびローカル接続を構成する 2 つのホストまたは他のネットワーク ノード間でデータ フレームを構成する個々のビットを送信するために使用されるハードウェア レベルのプロトコルで構成されます。
簡単な例
それでは、ホストが実際に TCP/IP ネットワーク モデルを使用してネットワーク経由でデータを送信すると、どのように見えるのでしょうか?これは、あるネットワークから別のネットワークにデータがどのように移動するかについての私の完全な説明です。この例では、私のコンピュータは Web ページ要求をリモート サーバーに送信しています。
アプリケーション層では、ブラウザはリモート ホスト www.example.com への HTTP 接続要求メッセージを開始し、Web ページのコンテンツを含むデータを送り返します。これはメッセージです。これにはリモート Web サーバーの IP アドレスのみが含まれています。
トランスポート層は、リモート Web サーバーの IP アドレスを対象とした TCP データグラム内の Web ページ要求を含むメッセージをカプセル化します。このパケットには、元の要求パケットとともに、要求の送信元ポート (通常は非常に大きなランダム ポート) が含まれるため、返されたデータでブラウザがどのポートをリッスンしているかがわかります。およびリモート ホストの宛先ポート (この場合はポート 80)。
インターネット層は、送信元 IP アドレスと宛先 IP アドレスも含む TCP データグラムをパケットにカプセル化します。
データ リンク層は、アドレス解決プロトコル (ARP) を使用して、デフォルト ルーターの物理 MAC アドレスを識別し、送信元 MAC アドレスと宛先 MAC アドレスを含むフレームにインターネット パケットをカプセル化します。
フレームは、ローカル ホストの NIC からデフォルト ルーターの NIC に有線 (通常は CAT5 または CAT6) を介して送信されます。
デフォルト ルーターはデータグラムを開き、宛先 IP アドレスを決定します。ルーターは独自のルーティング テーブルを使用して、フレームを次のステップに進める次のルーターの IP アドレスを識別します。次に、ルータは、送信元として自身の MAC と次のルータの MAC アドレスを含む新しいデータグラムにフレームを再カプセル化し、適切なインターフェイスを介して送信します。ルーターは、ルーティング タスクをレイヤー 3 (インターネット層) で実行します。
スイッチはレイヤー 2 以上のすべてのプロトコルからは認識されないため、論理的にはデータの送信に影響を与えないことに注意してください。スイッチの機能は、イーサネット ケーブルを介して複数のホストを単一の物理ネットワークに接続する簡単な方法を提供することです。
arp [-n] コマンドを使用すると、ホストが arp テーブルに保存しているすべての MAC アドレスを表示できます。これらは常にローカル ネットワーク上のホストです。
ルーティング テーブル
すべてのネットワーク デバイスは、ホスト、ルーター、またはネットワーク接続プリンタなどの他のタイプのネットワーク ノードであっても、TCP/IP パケットのルーティング先を決定する必要があります。ルーティング テーブルは、これらの決定を行うために必要な構成情報を提供します。図 1 の非常に単純なルーティング テーブルと同様に、このルーティング テーブルは、一般的なローカル ホストが利用できる単一のルートを定義し、パケットをデフォルト ゲートウェイ ルーターに送信するかどうかを決定するために使用されます。 。 Route -n コマンドはルーティング テーブルを一覧表示します。-n オプションは結果を IP アドレスとして表示するだけで、使用可能な場合は IP アドレスをホスト名に置き換える DNS ルックアップの実行は試行しません。 netstat –RN コマンドを使用すると、非常に似た結果が得られます。
リーリー図 1: 単純なルーティング テーブル。
-n オプションを使用すると、デフォルト ゲートウェイは常にターゲット 0.0.0.0 で表示されます。 -n を使用しない場合、出力の「宛先」列に「デフォルト」という単語が表示されます。 [ゲートウェイ] 列の IP アドレスは、送信ゲートウェイ ルーターの IP アドレスです。デフォルト ゲートウェイのネットマスク 0.0.0.0 は、ネットワーク クラスに関係なく、追加のエントリを介してローカル ネットワークまたは別の送信ルーターにアドレス指定されていないルーティング テーブル内のパケットがデフォルト ゲートウェイに送信されることを意味します。
図 1 の Iface 列は、送信 NIC の名前であり、この場合は eno1 です。ルーターとして機能するホストの場合、少なくとも 2 つ、場合によってはそれ以上の NIC が使用される可能性があります。ルーターとして使用される各 NIC は、異なる物理ネットワークと論理ネットワークに接続されます。 Flags 列のフラグは、ルートが Up (U)、つまりデフォルト ゲートウェイ (G) であることを示します。他の兆候も現れる可能性があります。
ほとんどのホストでは、ルーティングの決定は非常に簡単です。
ターゲット ホストがローカル ネットワーク上にある場合は、データをターゲット ホストに直接送信します。
ターゲット ホストが、ルーティング テーブルにリストされているローカル ゲートウェイを介して到達可能なリモート ネットワーク上にある場合は、明示的に定義されたゲートウェイに送信します。
宛先ホストがリモート ネットワーク上にあり、他のエントリがそのホストへのルートを定義していない場合、データはデフォルト ゲートウェイに送信されます。
これらのルールは、不一致により他のすべての操作が失敗した場合、パケットはデフォルト ゲートウェイに送信されることを単に意味します。
下の図 2 のルーティング テーブルは、3 つのネットワークへのルーターとして機能する Linux ホストに属しており、そのうちの 1 つはインターネットに接続されているため、少し複雑です。テーブルには、ローカル クラス C ネットワーク (インターフェイス eth1 の 192.168.0.0/24、eth2 の 192.168.25.0/24) と、その他の世界への eth0 上のデフォルト ルートのエントリがあります。
リーリー図 2: 複数のネットワークを含むより複雑なルーティング テーブル。
デフォルト ゲートウェイはインターフェイス eth0 上にまだ 1 つだけあることに注意してください。ただし、ルータの LAN 側 IP アドレスを直接指すデフォルト ルート エントリに加えて、192.168.1.24/30 ネットワーク全体のエントリもあります。ネットワークには、使用可能な IP アドレスが 2 つだけあります。1 つはルーターの LAN 側のアドレス、192.168.1.25/30、もう 1 つはホスト自体のアドレス、192.168.1.26/30 です。
ルーティング構成
では、ルーティング テーブルを構成するにはどうすればよいでしょうか? DHCP を使用してネットワークに接続されているホストの場合、DHCP サーバーは、このデフォルト ルートの構成情報、DNS、ホスト IP アドレス、および場合によってはその他の情報 (NTP サーバーの IP アドレスなど) を提供します。静的構成の場合、通常は単純ですが、少し複雑になる場合もあります。
ほとんどの場合、デフォルト ルートを /etc/sysconfig/network ファイルに追加すると、ネットワークがルーティング テーブルにデフォルト ルートを構成します。このエントリは、図 3 の例に似ています。
リーリー図 3: ネットワーク ファイル内のゲートウェイ エントリ。
ネットワーク ファイルを使用して設定できるのはデフォルト ゲートウェイのみです。
静的に構成された環境でデフォルト ゲートウェイを構成するもう 1 つの方法は、/etc/sysconfig/network-scripts ディレクトリ内の対応するインターフェイス構成ファイルにデフォルト ゲートウェイを追加することです。インターフェイス eth0 のインターフェイス構成ファイルにゲートウェイを追加するには、上の図 3 と同じ行を ifcfg-eth0 ファイルに追加します。これを行う場合、エントリはネットワーク ファイルから削除される必要があります。
在更复杂的环境中,例如当主机使用多个NIC连接到多个网络时,以及至少需要在路由表中输入两条或更多条路由时,您应该考虑在其中使用路由文件。 / etc / sysconfig / network-scripts。 对于NIC enp7s1,该文件将是route-enp7s1,它将包含图4所示的条目。
default via 192.168.0.1 dev enp7s1
图4:enp7s1的默认路由条目。
路由接口文件中的默认网关设置将覆盖网络文件中可能列出的所有网关。
当然,您始终可以使用route命令从命令行添加路由。 如果您需要在每次系统引导时都执行此操作,则可能会花费一些时间,因此您可能要考虑使用上述方法,或创建在启动时运行的脚本。 我为我的系统之一编写了一个脚本,其中包含以下两行,如图5所示。
route del default route add default gw 192.168.0.1
图5:从命令行设置默认路由的命令。
请注意,设备名称在所有这些命令中都是可选的,在图5中未使用。
通过阅读本文,我们已经了解了如何使用常见的Linux路由检测命令,例如traceroute和mtr,以及如何利用tcpdump和wireshark来分析网络数据包。通过这些技巧,我们能够有效定位网络连接问题,并快速排除故障。相信这些知识对于广大Linux管理员和网络工程师都将有所帮助,让你们能够更加从容应对复杂的网络环境,提升自己的技术水平。
以上がネットワークルーティング追跡の秘密、Linux ルーティング検出スキルが明らかに!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。