Linuxネットワークルーティングの概要-ネットワークルーティングを表示する

この記事では単純な環境を理解するための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ネットワークモデルを使用してネットワーク上でデータを送信すると、どのようになりますか?これは、データが1つのネットワークから別のネットワークにどのように移動するかについての私の完全な説明です。この例では、私のコンピューターはWebページ要求をリモートサーバーに送信しています。

  • アプリケーション層で、ブラウザはリモートホストwww.example.comへのHTTP接続要求メッセージを開始して、Webコンテンツを含むデータを送り返します。これはメッセージであり、リモートWebサーバーのIPアドレスのみが含まれています。
  • トランスポート層は、Webページ要求を含むメッセージをリモートWebサーバーのIPアドレスを対象とするTCPデータグラムにカプセル化します。現在、データパケットと元のリクエストデータパケットには、リクエストの送信元ポートが含まれています。これは通常、非常に大きなランダムポートであるため、返されるデータは、ブラウザがリッスンしているポートを認識します。また、リモートホストのターゲットポート(この場合はポート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アドレスとしてのみ表示し、DNSルックアップを実行しようとはしません。DNSルックアップはIPアドレスをホスト名(使用可能な場合)に置き換えます。netstat-RNコマンドを使用すると、非常によく似た結果が得られます。

[root @ 
host1〜]#route-n
カーネルIPルーティングテーブル宛先ゲートウェイGenmaskフラグメトリック参照使用Iface0.0.0.0 
192.168.0.254 0.0.0.0 UG 100 0 0 eno1 
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eno1

図1:単純なルーティングテーブル。

-nオプションを使用すると、デフォルトゲートウェイは常にターゲット0.0.0.0で表示されます。-nを使用しない場合、「デフォルト」という単語が出力の「宛先」列に表示されます。ゲートウェイ列のIPアドレスは、アウトバウンドゲートウェイルーターのIPアドレスです。デフォルトゲートウェイのネットワークマスクは0.0.0.0です。これは、ネットワークタイプに関係なく、追加のエントリを介してローカルネットワークまたは別のアウトバウンドルーターにアドレス指定されていないルーティングテーブル内のパケットがデフォルトゲートウェイに送信されることを意味します。

図1のIface列は、アウトバウンドNICの名前であり、この例ではeno1です。ルーターとして機能するホストの場合、少なくとも2つを使用でき、場合によってはさらに多くのNICを使用します。ルーターとして使用される各NICは、異なる物理ネットワークと論理ネットワークに接続されます。「フラグ」列のフラグは、ルートがアップ(U)であることを示します。これは、デフォルトゲートウェイ(G)です。他の兆候も現れることがあります。

ほとんどのホストでは、ルーティングの決定は非常に簡単です。

ターゲットホストがローカルネットワーク上にある場合、データはターゲットホストに直接送信されます。
ターゲットホストが、ルーティングテーブルにリストされているローカルゲートウェイを介してアクセスできるリモートネットワーク上にある場合は、明示的に定義されたゲートウェイに送信します。
ターゲットホストがリモートネットワーク上にあり、そのホストへのルートを定義する他のエントリがない場合、データはデフォルトゲートウェイに送信されます。
これらのルールは、不一致が原因で他のすべての操作が失敗した場合、パケットがデフォルトゲートウェイに送信されることを意味します。

以下の図2のルーティングテーブルは、Linuxホストに属し、3つのネットワークに接続されたルーターとして機能し、そのうちの1つがインターネットにつながるため、少し複雑です。ローカルクラスCネットワーク(インターフェイスeth1の192.168.0.0/24、eth2の192.168.25.0/24)には、テーブルにエントリがあり、eth0に世界の他の地域へのデフォルトルートがあります。

[root @ 
host2〜]#route-n
カーネルIPルーティングテーブルDestinationGateway Genmask Flags Metric Ref Use Iface 
192.168.1.24 0.0.0.0 255.255.255.252 U 0 0 0 eth0 
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 
192.168.25.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 
0.0.0.0 192.168.1.25 0.0.0.0 UG 0 0 0 eth0

図2:複数のネットワークを持つより複雑なルーティングテーブル。

インターフェイスeth0にあるデフォルトゲートウェイはまだ1つしかないことに注意してください。ただし、ルーターのLAN側のIPアドレスを直接指すデフォルトルートエントリに加えて、192.168.1.24 / 30ネットワーク全体のエントリもあります。ネットワークには、ルーターのLAN側用、192.168.1.25 / 30用、ホスト自体用、および192.168.1.26/30用の2つの使用可能なIPアドレスのみが含まれています。

ルーティング構成

では、ルーティングテーブルを構成する方法は?DHCPを使用してネットワークに接続するホストの場合、DHCPサーバーは、デフォルトルートの構成情報、DNS、ホストのIPアドレス、および場合によってはその他の情報(NTPサーバーのIPアドレスなど)を提供します。静的構成の場合、通常は単純ですが、少し複雑になる場合もあります。

ほとんどの場合、デフォルトルートを/ etc / sysconfig / networkファイルに追加すると、ネットワークはルーティングテーブルでデフォルトルートを構成します。このエントリは、図3の例に似ています。

GATEWAY = 192.168.0.1

図3:ネットワークファイルのゲートウェイエントリ。

ネットワークファイルを使用して構成できるのは、デフォルトゲートウェイのみです。

静的に構成された環境でデフォルトゲートウェイを構成する別の方法は、/ etc / sysconfig / network-scriptsディレクトリー内の対応するインターフェース構成ファイルにそれを追加することです。インターフェイスeth0のインターフェイス設定ファイルにゲートウェイを追加するには、上記の図3と同じ行をifcfg-eth0ファイルに追加します。これを行う場合は、ネットワークファイルからエントリを削除する必要があります。

ホストが複数のNICを使用して複数のネットワークに接続する場合など、より複雑な環境では、ルーティングテーブルに少なくとも2つ以上のルートを入力する必要がある場合は、ルーティングファイルの使用を検討する必要があります。/ etc / sysconfig / network-scripts。NIC enp7s1の場合、ファイルはroute-enp7s1になり、図4に示すエントリが含まれます。

192.168.0.1 devenp7s1経由のデフォルト

図4:enp7s1のデフォルトルートエントリ。

ルーティングインターフェイスファイルのデフォルトゲートウェイ設定は、ネットワークファイルにリストされている可能性のあるすべてのゲートウェイを上書きします。

もちろん、routeコマンドを使用して、コマンドラインからいつでもルートを追加できます。システムが起動するたびにこれを行う必要がある場合は、時間がかかることがあるため、上記の方法の使用を検討するか、起動時に実行されるスクリプトを作成することをお勧めします図5に示すように、システムの1つにスクリプトを作成しました。このスクリプトには、次の2行が含まれています。

route del default 
route add default gw 1​​92.168.0.1

図5:コマンドラインからデフォルトルートを設定するコマンド。

デバイス名はこれらすべてのコマンドでオプションであり、図5では使用されていないことに注意してください。

結論として

これらの非常に単純な例(非常に一般的)に示されているルートに加えて、ルーティングについては他にも多くのことがあります。ここの情報はあなたが始めるのに役立つはずです。より複雑な環境については、CraigHuntの「InsideTCP / IP、SecondEdition」または「TCP / IPNetworkManagement」を参照することをお勧めします。詳細については、リリースのドキュメントを参照する必要がある場合もあります。rpmベースのディストリビューション(FedoraやCentOSなど)の場合は、「Red Hat Enterprise Linux7デプロイメントガイド」を参照してください。

おすすめ

転載: blog.csdn.net/yaxuan88521/article/details/113877351