Linuxの仮想スイッチについて

Linuxの仮想スイッチについて

Linuxで仮想スイッチを設定する方法は混乱しています。私は次のように進みます:

ip link add name br0 type bridge
ip link set br0 up

これにより、br0という仮想スイッチが作成されます。今、私のコンピュータにeth0という物理ネットワークデバイスがあり、KVM / qemuで作成されたタブデバイスvnet0があるとしましょう。 Tapデバイスは設定を介してbr0に自動的に接続され、eth0は手動で追加できます。

ip link set eth0 master br0

これで、両方のデバイスをスイッチbr0に接続する必要があります。

eth0にはIPアドレス192.168.1.1を、仮想化内部のネットワークインタフェースには192.168.1.2を割り当てました。もちろん、タブインタフェース自体はこのアドレスに関する情報を知りません。

仮想スイッチの代わりに物理スイッチを使用してこれを設定する場合は、ホストシステムでアドレス192.168.1.2をpingできます。ただし、このIPはping経由でアクセスできません。

PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
From 192.168.1.2 icmp_seq=1 Destination Host Unreachable
...

なぜそんなことですか?

私はeth0が自分が属するすべてのイーサネットセグメントにARP要求を送信すると予想しています。これは物理的で、br0 として定義されます。 vnet0はMACアドレスを使用してARP要求に応答する必要があります。

私が見つけた解決策は、br0にもIPアドレスを割り当てることでした。

ip addr add 192.168.1.3/24 dev br0

これでpingはうまくいきます。

ベストアンサー1

eth0にIPアドレス192.168.1.1を割り当てました。

ここでこの設定は間違っています。eth0ブリッジメンバーインターフェイス(レイヤ2)に設定されているため、IP(レイヤ3)アドレスがあってはなりません。

(192.168.1.0/24 への 2 つの直接パスに関連する構成が壊れる可能性があります。)ただし、エラー設定の具体的な詳細は重要ではありません。 )

なぜそんなことですか?

私はeth0が自分が属するすべてのイーサネットセグメントにARP要求を送信すると予想しています。これは物理的で、br0 として定義されます。

eth0 は ARP を送信しません。ブリッジの一部になると、レイヤ3インターフェイスではなくなります。

  • このブリッジの(レイヤ 2)ポートは次のとおりです。
    • eth0
    • tap0
    • 橋そのもの。
  • このブリッジの(レイヤ3)参加者は(同じ順序で)
    • 通過するすべてのデバイスeth0(ほとんど:ローカルネットワークの他のデバイス)
    • 反対側に何があってもtap0(おそらく同じだろう)
    • br0相互作用

おすすめ記事