web-dev-qa-db-ja.com

複数のIPを使用したネットワークデバイスのブリッジ

単一のNICで、KVMを実行できるようにブリッジを機能させようとしている小さなサーバーがあります。これでNIC静的に割り当てられたカップルIP:

eth0 = 192.168.1.1
eth0:1 = 192.168.1.2
eth0:2 = 192.168.1.3
eth0:3 -> Assign the bridge to this

次の手順を使用してブリッジを設定しようとしています。

Sudo brctl addbr br0
Sudo brctl addif br0 eth0:3
Sudo ifconfig br0 192.168.1.120 netmask 255.255.255.0 up
Sudo route add -net 192.168.1.0 netmask 255.255.255.0 br0
Sudo route add default gw 192.168.1.1 br0
Sudo tunctl -b -u root -t tap0 > /dev/null
Sudo ifconfig tap0 up
Sudo brctl addif br0 tap0

ただし、2番目のコマンドを実行すると:

Sudo brctl addif br0 eth0:3

Eth0デバイス全体を無差別モードにします。これにより、サーバーがオフラインになり、ローカル以外からはアクセスできなくなります。

JUST eth0:3をbr0にブリッジし、デバイス全体を無差別モードにしない方法はありますか?

4
Andy

簡単な答えは、私が知る限り、いいえです。

長い答え:ブリッジはレイヤー2デバイスです。仮想スイッチと考えてください。ネットワークカードと内部デバイスの間をブリッジするには、ネットワークカードに入ってくるすべてのデータを取得して、ブリッジに配置する必要があります(.1q VLANなどのレイヤー2フィルタリングを除く)。説明するために絵を描きましょう:

これがあなたがそれをどのように機能させたいかです(ルーティングシナリオ):

<vif> ---- <br0> --- <eth0:3> ---- <peth0> --- <internet>

しかし実際には、仮想ブリッジは常にレイヤー2でブリッジします。

<br0> --- <peth0>-------<internet>
  |          |
<vif0>    <eth0>
          <eth0:2>

ここで、peth0は物理デバイスであり、eth0は論理デバイス(アドレスなどを含む)です。

必要なシナリオを取得するには、ブリッジの代わりにルーティングを使用する必要があります。 peth0がプロミスキャスモードに設定される理由は、ブリッジ上のデバイスに向かうデータをフィルターで除外する可能性があるためです。ブリッジ上のデバイスが何をリッスンするかはわかりません。

7
pehrs

いいえ、そのようには機能しないと確信しています。 eth0デバイス全体をブリッジに配置し、代わりにbr0:1などのサブインターフェイスをブリッジインターフェイスに追加する必要があります。

br0インターフェースに追加のIPがバインドされるのを避けようとしている理由はありますか?

1
violet