複数のネットワークカードを備えた Linux システムでのルーティング構成の詳細な説明

複数のネットワークカードを備えた Linux システムでのルーティング構成の詳細な説明

Linux でのルーティング設定コマンド

1. ホストルーティングを追加する

ルートを追加 -host 192.168.1.11 dev eth0
ルート追加 -host 192.168.1.12 gw 1​​92.168.1.1

2. ネットワークルーティングを追加する

ルートを追加 -net 192.168.1.11 ネットマスク 255.255.255.0 eth0
ルート追加 -net 192.168.1.11 ネットマスク 255.255.255.0 gw 1​​92.168.1.1
ルートを追加 -net 192.168.1.0/24 eth0
ルート追加 -net 192.168.1.0/24 gw 1​​92.168.1.1

3. デフォルトゲートウェイを追加する

ルート追加デフォルトGW 192.168.1.1

4. ルートを削除する

ルートdel -host 192.168.1.11 dev eth0

5. デフォルトルートを削除する

ルート del デフォルト GW 192.168.1.1

Linuxで永続的なルーティングを設定するいくつかの方法

1. /etc/rc.localにルーティング情報を追加する

ルートを追加 -net 192.168.1.0/24 dev eth0
# またはルートを追加 -net 192.168.1.0 ネットマスク 255.255.255.0 gw 1​​92.168.1.1

2. /etc/sysconfig/networkに追加する

GATEWAY=[ゲートウェイIPまたはゲートウェイネットワークカード名]

3. /etc/sysconfig/static-routes

任意のネット 192.168.1.0/24 GW 192.168.1.1
# または任意のネット 192.168.1.0 ネットマスク 255.255.255.0 gw 1​​92.168.1.1

4. IP転送を有効にする

1. 臨時開館

エコー "1" > /proc/sys/net/ipv4/ip_forward

2. 常時オープン

vim /etc/sysctl.conf

net.ipv4.ip_forward=1を変更します。

実験: イントラネットとインターネットの両方を使用するようにデュアル NIC ホストを構成する

この実験の背景は、筆者が実際に遭遇した問題であり、当時のネットワーク環境を復元しようとするものである。メモを取り、この問題に遭遇したクラスメートと共有してください。

残念ながら今はハードウェアを持っていません(T_T)...VMware WorkstationとeNSPを使って実験環境をシミュレートするしかありません。

背景

以下のトポロジに示すように、 clientノードが削除されると、イントラネットとエクストラネットは分離されたネットワークになります。

しかし、実際の状況では、 clientノードは外部ネットワーク リソースと内部ネットワーク リソースの両方にアクセスする必要があり、 client 1 つのデフォルト ルートしか構成できません。外部ネットワーク カードにデフォルト ルートが設定されている場合、 client 172.16.2.0/24ネットワークと外部ネットワークのリソースにアクセスできますが、残りの内部ネットワーク リソースにはアクセスできません。また、内部ネットワーク カードにデフォルト ルートが設定されている場合、 client内部ネットワーク リソースに完全にアクセスできますが、外部ネットワーク リソースにはアクセスできません。
どうすれば解決できるでしょうか?

実験環境

  • VMware ワークステーション プロ
  • 最小限にインストールされた CentOS 7.3 仮想マシン 4 台
  • Huawei eNSP シミュレーター

実験的トポロジー

clientノードを削除すると、イントラネットとエクストラネットは分離されたネットワークになります。

外部ネットワークは10.0.0.0/16で、オペレータのアクセス ネットワークを表します。

イントラネット ネットワークは172.16.0.0/16であり、イントラネット部分を表します (セキュリティ上の理由から、この部分ではインターネットへの直接アクセスは許可されません)。

で:

  • clientは 2 つのネットワーク カードを備えたホストであり、2 つのネットワーク カードのネットワーク セグメントはそれぞれ10.0.0.0/16172.16.2.0/24です。
  • server2172.16.2.0/24ネットワーク セグメント内のサーバーです。
  • server3172.16.3.0/24ネットワーク セグメント内のサーバーです。
  • server4は、 172.16.4.0/24ネットワーク セグメント内のサーバーです。

ネットワーク計画

IP 割り当て

ノード名IPアドレスサブネットマスク述べる
クライアント10.0.0.101 255.255.0.0クライアントの外部ネットワークカード
172.16.2.101 255.255.255.0クライアントの内部ネットワークカード
サーバー2 172.16.2.11 255.255.255.0 172.16.2.0/24 ネットワークセグメント内のサーバー
サーバー3 172.16.3.11 255.255.255.0 172.16.3.0/24 ネットワークセグメント上のサーバー
サーバー4 172.16.4.11 255.255.255.0 172.16.4.0/24 ネットワークセグメント内のサーバー
イントラネットルーター172.16.2.254 255.255.255.0 172.16.2.0/24 のゲートウェイ
172.16.3.254 255.255.255.0 172.16.3.0/24 のゲートウェイ
172.16.4.254 255.255.255.0 172.16.4.0/24 のゲートウェイ

仮想マシンのネットワークカードの種類

ネットワーク名VMware NIC タイプネットワーク範囲
キャリアネットワーク橋渡し10.0.0.0/16
VMnet2ホストのみ172.16.2.0/24
VMnet3ホストのみ172.16.3.0/24
VMnet4ホストのみ172.16.4.0/24

イントラネットルーターを実装するにはどうすればいいですか?

VMnet2、VMnet3、VMnet4 はすべてホストオンリー モードです。通常の状況では、ネットワーク内のコンピューターのみが通信できます。3 つのネットワーク間で通信を実現するにはどうすればよいでしょうか。

答えは、Huawei eNSP シミュレーターでクラウドを使用することです。クラウド デバイスを使用して、eNSP 内のルーターと VMware 仮想マシンのネットワーク カードを接続できます。

イントラネット環境を構成する

eNSPのルーターの設定

インタフェースIPアドレスサブネットマスク
0/0/0 172.16.2.254 255.255.255.0
0/0/1 ... 172.16.3.254 255.255.255.0
0/0/2 ... 172.16.4.254 255.255.255.0

<huawei>システムビュー
[huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]IPアドレス172.16.2.254 255.255.255.0
[Huawei-GigabitEthernet0/0/0]終了
[ファーウェイ]int g0/0/1
[Huawei-GigabitEthernet0/0/1]IPアドレス172.16.3.254 255.255.255.0
[Huawei-GigabitEthernet0/0/1]終了
[huawei]int g0/0/2
[Huawei-GigabitEthernet0/0/2]IPアドレス172.16.4.254 255.255.255.0
[Huawei-GigabitEthernet0/0/2]終了
[ファーウェイ]

仮想マシンのIPアドレスを変更する

クライアント

ネットワークカード名IPアドレスサブネットマスクデフォルトゲートウェイ述べる
ens33 10.0.0.101 255.255.0.0 10.0.0.1外部ネットワークカード
ens37 172.16.2.101 255.255.255.0イントラネット ネットワーク カード

サーバー2

ネットワークカード名IPアドレスサブネットマスクデフォルトゲートウェイ述べる
ens33 172.16.2.11 255.255.255.0 172.16.2.254

サーバー3

ネットワークカード名IPアドレスサブネットマスクデフォルトゲートウェイ述べる
ens33 172.16.3.11 255.255.255.0 172.16.3.254

サーバー4

ネットワークカード名IPアドレスサブネットマスクデフォルトゲートウェイ述べる
ens33 172.16.4.11 255.255.255.0 172.16.4.254

サーバー上にHTTPサービスを構築する

server2例に挙げます。

Python を使用したシンプルな HTTP サービスの作成

cd ~
echo "server2" > index.html
python -m シンプルHTTPサーバー 8080

対照試験

client上の外部ネットワークにアクセスする

ping www.baidu.com -c 4 

client上のserver2にアクセスする

172.16.2.11にping -c 4 

client上のserver3にアクセスする

172.16.3.11にping -c 4 

client上のserver4にアクセスする

172.16.4.11にping -c 4 

制御テストでは、 client外部ネットワーク カードにデフォルト ゲートウェイを設定すると、デュアル ネットワーク カードを持つclient外部ネットワークと内部ネットワークの172.16.2.0/24部分に正常にアクセスできますが、 172.16.3.0/24 24 と172.16.4.0/24にはアクセスできないことがわかります。

client 172.16.2.0/24ネットワークにアクセスできるのに、 172.16.0.0/16ネットワークの残りの部分にはアクセスできないのはなぜですか?
client172.16.2.0/24ネットワーク内にあるため、通信はネットワーク内で行われ、データ パケットを他のネットワークに送信する必要はありません。もちろん、デフォルト ゲートウェイは機能しません。
client 172.16.0.0/16内のネットワークの残りの部分と通信する場合、 clientのルーティング テーブルには宛先アドレスへのパスが記録されないため、 clientデータ パケットをデフォルト ゲートウェイにのみ送信できます。それ以降、データ パケットと実際の宛先アドレスは「反対方向」に進みます。もちろん、ping の結果はネットワークに到達できないということです。

ルーティング構成

client上のルーティングテーブルを表示する

ルート

clientにルートを追加する

ルート追加 -net 172.16.0.0/16 gw 1​​72.16.2.254

永続的な設定の場合は、 /etc/rc.localにルーティング情報を追加します。

ルート追加 -net 172.16.0.0/16 gw 1​​72.16.2.254

ルーティングテーブルを表示する

ルート

実験結果

接続を確認しています

ping www.baidu.com -c 4 

172.16.2.11にping -c 4 

172.16.3.11にping -c 4 

172.16.4.11にping -c 4 

内部および外部のネットワークリソースへのアクセス

カール http://www.baidu.com/ 

カール http://172.16.2.11:8080/index.html
カール http://172.16.3.11:8080/index.html
カール http://172.16.4.11:8080/index.html 

解決策は非常に簡単で、コマンドは 1 つだけです。

ただし、このコマンドの背後にある原則、概念、理論については、さらに深く掘り下げる必要があります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux で Crontab を使用して特定のルーティング アドレスに定期的にアクセスする方法
  • Linux で IP、DNS、ルーティングのコマンドライン設定を変更する方法
  • Linuxルーティングテーブルの詳細な紹介
  • Linux で永続的な静的ルーティングを追加する方法
  • Linux でルーターを構築する
  • ハイブリッドマルチラインアクセスをサポートするLINUXソフトルータ
  • 企業ネットワークで Linux をルーターとして使用する
  • Linux で静的ルーティングを追加するための 2 つの実装方法の分析

<<:  JS を使用して要素がビューポート内にあるかどうかを確認する方法

>>:  AES_ENCRYPT() と AES_DECRYPT() を使用して MySQL を暗号化および復号化する正しい方法の例

推薦する

フロントエンドJavaScriptは関数のカリー化を完全に理解している

目次1. カレーとは何か2. カレーの用途3. カリー化ユーティリティ関数をカプセル化する方法 1....

ウェブデザインには目的、アイデア、思考、そして粘り強さがなければならない

<br />はじめに:このアイデアは、数日前に上級ウェブデザインの次の記事を考えていると...

HTML テーブル マークアップ チュートリアル (38): ヘッダーの境界線の色属性 BORDERCOLOR

テーブルを美しくするために、ヘッダーに異なる境界線の色を設定できます。基本的な構文<TH 境界...

Linux サーバー上のローカル静的リソースにアクセスするために nginx を使用する方法

1. ポート 80 が占有されているかどうかを確認します。通常、ポート 80 は Apache サー...

MySQLオンラインデータベースのデータをクリーンアップする方法

目次01 シナリオ分析02 操作方法03 結果分析01 シナリオ分析今日の午後、開発仲間がオンライン...

CentOS に Redis と MySQL をインストールする

1|0MySQL(MariaDB) 1|11. 説明MariaDB データベース管理システムは My...

Vueはランニングライトのシンプルな効果を実現

この記事では、マーキーのシンプルな効果を実現するためのVueの具体的なコードを参考までに共有します。...

テーブルレイアウトの長所と短所、そして推奨されない理由

テーブルの欠点1. テーブルは他の HTML タグよりも多くのバイトを占有します。 (ダウンロード時...

ウェブページで任意のフォントを使用する実践的な操作とデモ

以前、「Web ページにシステムに組み込まれていないフォントを埋め込む」という研究をしたことがありま...

OneProxy に基づいて MySQL の読み取り/書き込み分離と負荷分散を実装する

導入パート1: 冒頭に書いたOneProxy は、民間ソフトウェアによって完全に独立して開発された分...

NodeJS は画像テキスト分割を実現します

この記事では、画像テキストセグメンテーションを実装するためのNodeJSの具体的なコードを参考までに...

Tomcat のセッションと Cookie の詳細な説明

序文HTTP はステートレスな通信プロトコルです。各リクエストは互いに独立しており、サーバーは以前の...

MySQL マスタースレーブ遅延問題の解決方法

今日は、マスタースレーブ遅延が発生する理由とその対処方法について説明します。しっかり座って出発の準備...

Node.js コード実行をバイパスするためのヒントのまとめ

目次1. 子プロセス2. nodejsでのコマンド実行2.1 16進数エンコード2.2 ユニコードエ...

docker compose サービスの起動順序を制御する方法

まとめDocker-compose は複数の Docker コンテナ サービスを簡単に組み合わせるこ...