2 つの仮想マシンのインターフェースを相互接続するために Linux ブリッジを使用する以外の方法があるかどうかを知りたいです。
仮想マシンでプライベート スパニング ツリー実装を実行しようとしているため、両方の仮想マシンを接続する基盤となる Linux ブリッジが BPDU をドロップしています。
VirtualBox は、内部ネットワーク オプションを提供することでこの問題を解決します。
KVM を使用する場合、同様のオプションはありますか?
アップデート-01:STP を有効にすると、2 つのブリッジ (2 つの VM) ではなく、3 つのブリッジ (2 つの VM と、両方の VM を接続する 1 つの Linux ブリッジ) を含むトポロジが作成されます。
答え1
ここではQEMU のオプションを使用できるようです-netdev socket
が、おそらく UDP バージョンの方が適しているでしょう。
動作する可能性はあります-netdev vde
が、より複雑で、VDE スイッチ デーモンを構成する必要があります。
しかし、@Martin が提案したように、STP オプションを有効にして Linux ブリッジの問題を克服しようとします。これはシンプルで非常に一般的な設定です。
答え2
macvtap ドライバーの使用を試すこともできます。ただし、これにはいくつかの制限がありますので、必ず libvirt のドキュメントをお読みください。
答え3
QEmu/KVMは、タップホストのインターフェース:
ホストがこのインターフェースにイーサネット フレームを送信すると、ゲストのインターフェースに送信されます。
ゲストがイーサネット フレームをそのインターフェイスに送信すると、そのフレームはホストの TAP インターフェイスに送信されます。
両方のVMSをTAPインターフェースで作成できます。次に、2つのTAPインターフェース間でフレームを交換する必要があります。これは、インターフェース間でイーサネットフレームを転送するプログラム(ソケットを使用)を作成することで実現できる可能性がありAF_PACKET
ますSOCK_RAW
。受信フレーム1つのインターフェースから送信それらをもう一方に移します。
答え4
TAP デバイスを提案した人たちは正しい方向に進んでいますが、他にも必要なものがあります。
まず、ベスペアこれは仮想インターフェースのペアであり、それぞれが受信したトラフィックを他方に渡すだけです。
次に、2 つの VM のうちの 1 つを macvtap 経由でペアの veth インターフェイスの 1 つに接続し、もう 1 つの VM をもう 1 つの veth インターフェイスに接続します。
最後に、トラフィックを送信します。