複数のNicsを使用したネットワーキング


16

4つのネットワークアダプターを搭載したUbuntu 12.04サーバーがあります。各NICを個別の機能に使用する必要があります。セットアップの説明は次のとおりです。

etho = 10.234.0.2 netmask = 255.255.255.252 gw = 10.234.0.1 This is on vlan 234
eth1 = 10.235.0.2 netmask = 255.255.255.252 gw = 10.235.0.1 This is on vlan 235
eth2 = 10.236.0.2 netmask = 255.255.255.252 gw = 10.236.0.1 This is on vlan 236
eth3 = 10.237.0.2 netmask = 255.255.255.252 gw = 10.237.0.1 This is on vlan 237

個別のWebサービスの個々のIPアドレスとの間でトラフィックを転送できる必要があります。つまり、10.235.0.2はWebサイト、10.236.0.2は別のサイト、10.237.0.2は3番目のサイトです。最初のIPはサーバーの管理用です。

この問題はルーティングの問題だと思いますが、私はLinuxに慣れていないため、ルーティング機能の詳細を十分に理解できていません。

ここに私の/etc/network/interfacesファイルにあるものがあります:

auto lo
iface lo inet loopback

# WWW Management
auto eth0
iface eth0 inet static
address 10.234.0.2
netmask 255.255.255.252
gateway 10.234.0.1
nameseervers 10.230.1.103, 10.230.70.70

# WWW
auto eth1
iface eth1 inet static
address 10.235.0.2
netmask 255.255.255.252
gateway 10.235.0.1

# WTB
#auto eth2
#iface eth2 inet static
#address 10.236.0.2
#netmask 255.255.255.252
#gateway 10.236.0.1

# Moodle
#auto eth3
#iface eth3 inet static
#address 10.237.0.2
#netmask 255.255.255.252
#gateway 10.237.0.1

混乱を避けるために、最後の2つのネットワークを無効にしました。

ヘルプとコメントと提案のすべてに事前に感謝します。

回答:


15

eth0だけの通常の構成を行った後、戻ってeth1の構成を追加しました。eth0がアップしただけで、ルートテーブルは次のようになりました。

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

しかし、eth1を起動すると、デフォルトルートステートメントの順序により、常に使用されるインターフェイスが決まります。以下に示すように、192.168.1.65ゲートウェイへのeth1ルートを選択することが起こります。

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.1.65 dev eth1 metric 100
default via 192.168.0.97 dev eth0 metric 100

1つのゲートウェイステートメントのみ

最初の問題は、余分な「via 192.168.1.65」デフォルトルートです。/ etc / network / interfacesのeth1定義に「gateway 192.168.1.65」ステートメントがある場合に表示されます。したがって、余分なゲートウェイステートメントを削除し、インターフェイスをバウンスします。

# ifdown eth1
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

新しいルーティングテーブルを設定する

eth1から流出するすべてのトラフィックに適したデフォルトルートを含む新しい個別のルーティングテーブルを作成します。ここのテーブル番号は重要ではありません。101は単にメインのルーティングテーブルではありません。これを行うには、/ etc / network / interfacesのeth1設定で「ポストアップ」コマンドを使用します。eth1に投稿を1つだけ追加します。eth1:サブインターフェースのいずれにも追加しないでください。

post-up ip route add default via 192.168.1.65 dev eth1 table 101

バウンスeth1。メインのルーティングテーブルは変更されず、eth1が起動している場合、テーブル101には192.168.1.65経由のデフォルトルートが含まれます。

# ifdown eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101   (ie, table is empty, no output)
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101
default via 192.168.1.65 dev eth1

新しいルーティングルール

ルーティングルールを追加して、テーブル101を使用して、eth1から送信されるパケットのデフォルトルートを選択します。

# ip rule add from 192.168.1.64/27 lookup 101
# ip rule show
0:     from all lookup local
32765: from 192.168.1.64/27 lookup 101
32766: from all lookup main
32767: from all lookup default

ルールも/etc/network/interfacesファイルに追加します。

post-up ip rule add from 192.168.1.64/27 lookup 101

インターフェイスがダウンしたときにルートとルールを削除するクリーンアップを追加してください:

post-down ip rule del from 192.168.1.64/27
post-down ip route del default via 192.168.1.65 table 101

[ubuntu 16.04+の編集] ここで示しように、またこのヘルプから作成したテストから、ip route2はコマンドの構造を変更しました。仕事をするためには、man ip ポイントの順番にするために少し適応する必要があるでしょう。

up ip route add default table 101 dev eth1 via 192.168.1.65
up ip rule add from 192.168.1.64/27 lookup 101
down ip rule del from 192.168.1.64/27
down ip route del default table 101 via 192.168.1.65

または、ifdown-ifupコマンド(エラーメッセージ@ifdownコマンド(周辺機器が正しく構成されていないことを示す標準メッセージ)を伴うifupコマンド)の後、テーブル101に@ifupが存在しない場合になります。


ニース、私はよりエレガントな最後のステップ..を探してい... rc.localを使用して好きではない
drAlberT

編集されたと思う:) ..
drAlberT 14年

実際に/ etc / interfacesファイルがありますか、それともタイプミスですか?
user100464

@ user100464/etc/network/interfaces
Zenexer

答えには前者への参照があります。編集できません。
user100464
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.