Ich möchte wissen, ob es eine andere Möglichkeit als die Verwendung von Linux-Bridges gibt, um Schnittstellen von zwei virtuellen Maschinen miteinander zu verbinden?
Da ich versuche, eine private Spanning Tree-Implementierung in virtuellen Maschinen auszuführen, werden die BPDUs von der zugrunde liegenden Linux-Brücke gelöscht, die die beiden virtuellen Maschinen verbindet.
VirtualBox löst das Problem, indem es eine interne Netzwerkoption bereitstellt.
Gibt es eine ähnliche Option, wenn ich KVM verwende?
Aktualisierung-01:Durch die Aktivierung von STP würde eine Topologie mit 3 Bridges (2 VMs und 1 Linux-Bridge, die beide VMs verbindet) anstelle von 2 Bridges (2 VMs) erstellt.
Antwort1
Sieht so aus, als könnten Sie hier die Option von QEMU verwenden -netdev socket
, wahrscheinlich passt die UDP-Version besser.
Funktioniert möglicherweise auch -netdev vde
, ist jedoch komplizierter und erfordert die Konfiguration des VDE-Switch-Daemons.
Aber ich würde trotzdem versuchen, das Problem mit der Linux Bridge zu lösen, mit aktivierter STP-Option, wie von @Martin vorgeschlagen. Dies ist eine einfache und sehr gängige Einrichtung.
Antwort2
Sie können versuchen, den Macvtap-Treiber zu verwenden. Beachten Sie, dass dies mit einigen Einschränkungen verbunden ist. Lesen Sie unbedingt die Libvirt-Dokumentation dazu.
Antwort3
QEmu/KVM bietet die Möglichkeit zur Verwendung einesKLOPFENSchnittstelle in Ihrem Host:
Wenn Ihr Host einen Ethernet-Frame an diese Schnittstelle sendet, wird er an die Schnittstelle Ihres Gastes gesendet.
Wenn Ihr Gast einen Ethernet-Frame an seine Schnittstelle sendet, wird dieser an die TAP-Schnittstelle in Ihrem Host weitergeleitet.
Sie können beide VMS mit TAP-Schnittstellen erstellen. Nun müssen Sie die Frames zwischen den beiden TAP-Schnittstellen austauschen: Dies können Sie möglicherweise tun, indem Sie ein Programm schreiben, das Ethernet-Frames zwischen den Schnittstellen weiterleitet (mithilfe von AF_PACKET
, SOCK_RAW
Sockets), indem SieEmpfangen von Framesvon einer Schnittstelle aus undVersendungsie zum anderen.
Antwort4
Die Leute, die ein TAP-Gerät vorgeschlagen haben, waren auf dem richtigen Weg, aber Sie brauchen noch etwas anderes:
Erstellen Sie zunächst eineveth Paar. Dabei handelt es sich um ein Paar virtueller Schnittstellen, von denen jede den empfangenen Datenverkehr einfach an die andere weiterleitet.
Als Nächstes verbinden Sie eine Ihrer beiden VMs über macvtap mit einer der Veth-Schnittstellen im Paar und verbinden die andere VM mit der anderen Veth-Schnittstelle.
Senden Sie abschließend etwas Verkehr.