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

推薦する

MySQL 重複インデックスと冗長インデックスの例の分析

この記事では、例を使用して MySQL の重複インデックスと冗長インデックスについて説明します。ご参...

MySQL 最適化の概要 - クエリエントリの合計数

1. COUNT(*) と COUNT(COL) COUNT(*)は通常、主キーに対してインデックス...

uniappを使用してWeChatミニプログラムでEChartsを使用する方法

今日は、uniapp を使用して Echarts を統合し、マップ チャートを表示します。 mpvu...

MySQLでよく使われる文字列関数トップ10の詳細な説明

こんにちは、みんな!技術の話ばかりで髪は切らないトニーです。データベース関数は、何らかの機能を持ち、...

Linuxで同一ファイルを見つける方法

コンピュータを使用すると、システム内に大量のゴミが生成されます。最も一般的なケースは、同じファイルが...

Linuxのlocateコマンドの使い方

01. コマンドの概要実際には、locate コマンドは find -name の別の書き方ですが、...

docker-maven-pluginはイメージをパッケージ化し、プライベートウェアハウスにアップロードします。

目次1. docker-maven-pluginの紹介2. 環境とソフトウェアの準備3. デモ例3....

CSSは親コンテナのdivをimg画像で埋め、コンテナのサイズに適応します。

ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...

Vue シングルページ アプリケーションで Markdown レンダリングを実装する

以前、Markdown をレンダリングするときに、mavonEditor のプレビュー モードを使用...

シンプルなリスト機能を実装するミニプログラム

この記事の例では、参考のために簡単なリスト機能を実装するアプレットの具体的なコードを共有しています。...

CSS BEM 記述標準の詳細な説明

BEM は、Web 開発に対するコンポーネントベースのアプローチです。ユーザー インターフェイスを独...

Mybatis マッパー動的プロキシの原理の分析

序文動的プロキシの原理を説明する前に、まず、mybatis を統合した後の dao 層の 2 つの実...

Podmanはコンテナを自動的に起動し、Dockerと比較します

目次1. podmanの紹介2. Dockerと比較した利点3. 互換性4. バックグラウンド サー...