Erstellen einer virtuellen Layer-2-Schnittstelle, die über eine virtuelle Brücke mit eth0 verbunden ist

Erstellen einer virtuellen Layer-2-Schnittstelle, die über eine virtuelle Brücke mit eth0 verbunden ist

Guten Abend,

Ich habe ein kniffliges Problem, da ich eine virtuelle Schnittstelle zur Verwendung mit einer VM erstellen muss, die jedoch nur Layer 2 sein darf: Die VM kommuniziert mit einer voreingestellten MAC-Adresse (entweder kann eine für den Adapter festgelegt werden, der von der VM verwendet wird – oder die VM maskiert eine andere voreingestellte MAC-Adresse.)

Die meisten der Lösungen, die ich bereits gefunden habe, beziehen sich auf die Verwendung von Layer 3 (d. h. IP-Adressen), und leider funktionieren diese Lösungen für mich nicht: Die Layer-3-Konfiguration muss innerhalb der VM erfolgen, und die virtuelle Netzwerkkarte und der virtuelle Switch müssen nur für L2-Verkehr konfiguriert werden.

Aus Sicherheits- und Betriebsgründen benötige ich überhaupt keine IP-Adresskonfiguration (d. h. nur Link-Local für IPv4 und IPv6 oder Layer 3 vollständig deaktiviert).

Vereinfacht ausgedrückt brauche ich eine Topologie wie diese:

My VM <-> vnic0 <-> vbr0 <-> eth0 <-> external network

Ich muss einen virtuellen Adapter namens vnic0 erstellen, der (zusammen mit dem realen Adapter eth0) mit einer virtuellen Brücke namens vbr0 verbunden ist. Vorzugsweise suche ich nach Konfigurationsdateien für RHEL 7.4 / CentOS 7.4, die es ermöglichen, dass die Konfiguration nach einem Neustart automatisch und ohne Interaktion eines Systemadministrators funktioniert. Möglicherweise muss ich in Zukunft auch vnic1, vnic2, vnic3 usw. erstellen, die alle mit vbr0 verbunden sind.

Die Verwendung von VLANs ist nicht unbedingt erforderlich (es kann davon ausgegangen werden, dass sich alles auf einem Nicht-VLAN / nativen VLAN befindet), aber wenn mir irgendein Genie da draußen zeigen kann, wie ich beispielsweise getaggten dot1q-Verkehr mit nativem VLAN 50 auf vnic0, nativem VLAN 51 auf vnic1 usw. konfiguriere, wobei eth0 als Trunk fungiert (und alle oder eine Untermenge von VLANs darüber laufen dürfen), würden Sie dafür ordentlich Pluspunkte sammeln. :)

Folgendes habe ich bereits versucht:

modprobe dummy
ip link set name vnic0 dev dummy0
ip link add vbr0 type bridge
ip link eth0 down
ip link set dev eth0 master vbr0
ip link set dev vnic0 master vbr0
ip link set vbr0 up
ip link set vnic0 up
ip link set eth0 up

Das größte Problem ist, dass mein vnic0-Netzwerk Pakete sendet, aber nie empfängt. Mein Netzwerk ist nicht besonders gesprächig, aber ich würde erwarten, dass vnic0 zumindest einige Broadcast-Pakete über vbr0 empfängt. Das passiert jedoch nicht. Versuche, DHCP innerhalb der mit vnic0 verbundenen VM auszuführen, führen zu einem Timeout, obwohl ein perfekt funktionierender DHCP-Server mit eth0 verbunden ist.

Antwort1

Verwenden Sie keine Dummy-Geräte

Das kommt regelmäßig vor, ich weiß nicht, warum die Leute darauf bestehen, sie zu verwenden. Dummy-Geräte sind nur nützlichum langlebigen Anwendungen die Bindung an eine bestimmte IP-Adresse zu ermöglichen, sodass die Dummy-Geräte verschoben und bei Bedarf mit anderen, kurzlebigeren Geräten überbrückt werden können.

Was Sie wollen, ist eineAbonnierenoder mehrere, die Ihren ersetzen vnic*. Trotz des Namens haben Macvlans nichts mit VLAN-Tagging zu tun. Der Macvlan wird auf Schicht 2 betrieben, ist bereits quasi mit der Master-Schnittstelle verbunden ( eth0) und Sie können einen von mehreren Modi auswählen, die möglicherweise die Interaktion der überbrückten Geräte einschränken, falls Sie das benötigen.

Antwort2

Virtuelle Ethernet-Schnittstellen sind paarweise erstellte virtuelle Schnittstellen, die wie ein Patchkabel funktionieren:

ip link add name nic0 type veth peer name vnic0 address 00:11:22:33:44:55
ip link set dev eth-VM master vbr0
ip link set nic0 up
ip link set vnic0 up

Sie sollten am Ende eine lose vnic0MAC-Adresse mit der Adresse 00:11:22:33:44:55 haben, die Sie Ihrer VM zuweisen können. Diese werden imAbonnierenSeite oben erwähnt. Ich weiß nicht so viel über Macvlan, aber das sollte auch funktionieren und Sie würden die Brücke nicht verwenden vbr0.

ip link add link eth0 name vnic0 address 00:11:22:33:44:55 type macvlan mode bridge
ip link set vnic0 up

verwandte Informationen