複数のネットワークカードを備えた 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 を暗号化および復号化する正しい方法の例

推薦する

Linux でジャンクファイルをエレガントに削除する方法

あなたも私と同じように、コンピューターのファイルを整然と整理し、不要なファイルを適宜削除するプログラ...

Vueの監視方法のケースの詳細な説明

Vueでの監視方法時計知らせ名前: 監視する属性に同じ名前を付ける必要があります。 1. 機能Vue...

ウェブページでコンテンツを引用するためによく使われるHTMLタグをマスターする

長い引用には blockquote を、短い引用には q を、参考文献には cite を使用します。...

CentOS7 上で KVM 仮想化プラットフォームを構築する (3 つの方法)

KVM はカーネルベースの仮想マシンの略で、Linux をハイパーバイザーに変換する Linux ...

アコーディオン効果を実現するJavaScript

この記事では、アコーディオン効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

MySQL スケジュールタスク (EVENT イベント) を詳細に設定する方法

目次1. イベントとは何ですか? 2. 「イベント」機能を有効にする1. 機能が有効になっているかど...

NodeサイトのForever+nginx導入方法例

私は最近、最も安い Tencent クラウド サーバーを購入しました。これは主に、Web テクノロジ...

mysql8.0 でユーザーを作成して権限を付与する際のエラーの解決方法の詳細な説明

質問1:エラーを報告する書き込み方法: GRANT OPTION を使用して、'123123...

組み込みオブジェクトに関するJavascriptの基礎

目次1. 組み込みオブジェクトの紹介1.1 数学オブジェクト1.2 数学における方法1.3 日付オブ...

dockerがredisを再起動するとmysqlデータが失われる問題を解決する

公式ドキュメント:したがって、mysql は次のように起動する必要があります。 docker run...

jQueryをベースにカルーセル効果を実現する

この記事では、カルーセルマップの効果を実現するためのjQueryの具体的なコードを参考までに共有しま...

ドキュメントの場所の比較

<br />2 年前に PPK が投稿した素晴らしいブログ記事では、contains()...

シンプルなカルーセル チャートを実装するための JavaScript の最も完全なコード分析 (ES5)

この記事では、シンプルなカルーセル効果を実現するためのJavaScriptの具体的なコードを参考まで...

HTMLテキストオーバーフローの2つの一般的な解決策は省略記号を表示することです

方法1: CSSオーバーフロー省略を使用して解決する解決策は次のとおりです。 CSSコード: ディス...

React Router 5.1.0 はページジャンプナビゲーションを実装するために useHistory を使用します

目次1. withRouterコンポーネントを使用する2. ルートタグを使用するReactRoute...