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

推薦する

VMware仮想マシンでのLinuxのコピー&ペーストの詳細な説明

1. VMware Workstation 上の Linux: 1. ソースの更新(オプション) v...

JavaScript で 9 グリッドのモバイル パズル ゲームを実装

この記事では、Jiugonggeモバイルパズルゲームを実装するためのJavaScriptの具体的なコ...

ファイルをアップロードするための HTML フォームの「参照」ボタンを変更する方法

コードをコピーコードは次のとおりです。 <!DOCTYPE HTML PUBLIC "...

MySQL でプロファイルを使用する方法のチュートリアル

プロフィールとは何ですか?特定の SQL のパフォーマンスを分析したい場合に使用できます。プロファイ...

Apache ソースコードのインストールと仮想ホストの設定に関する詳細なチュートリアル

ソースからApacheをインストールする1. Apacheソースコードをアップロードして必要なソフト...

グリッド共通レイアウトの実装

両側に隙間なし、各列間に隙間あり 幅: 100%; 表示: グリッド; グリッドテンプレート列: r...

Vue2 と Vue3 でウォッチ リスナーを使用する方法

watch : データの変更を監視する(特定の値の変更イベント) vue2.x データ(){ 戻る ...

MySQL 5.7 MGR シングルマスター決定マスターノード方式の詳細説明

当銀行のMGRは年末に開始されます。公式文書を読んだり、毎日テストを受けたりしなければなりません。毎...

MySQL データベース グループ クエリの group by ステートメントの詳細な説明

1: グループ化関数の記述順序 1 選択 ... 2 から ... 3 どこで ... 4 グループ...

Nest.js 認証検証方法の例

目次0x0 はじめに0x1 RBAC 実装0x2 クレームベースの承認0x3 統合 CASL 0x4...

Nginx ロケーションマッチングルールの例

1. 文法 場所 [=|~|~*|^~|@] /uri/ { ... } 2. 説明上記の構文から、...

音声キューイングシステムを実装するためのJavaScript

目次導入主な特徴エフェクト表示キーコード導入音声キューイングシステムは、銀行、レストラン、病院などの...

Vueはシンプルなスライダー検証を実装する

この記事の例では、Vueスライダー検証の実装を共有しています。コードは次のとおりです。 <テン...

CSS 配送先住所平行四辺形線スタイルの例コード

コードは次のようになります。 // 配送先住所の平行四辺形の線のスタイル <view clas...

MySQL で複数のフィールドを連結する詳細な例

MySQL クエリ結果の行フィールドの結合は、次の 2 つの関数を使用して実装できます。 1. co...