[BEARBEITEN]
Das Produktionssystem ist derzeit ein gemischtes physisches und ESXi-basiertes System. Wir würden virtualbox natürlich niemals verwenden, auch nicht für eine Vorproduktionsumgebung! Es wurde hier nur verwendet, um das Problem schnell direkt auf meinem Desktop einzugrenzen.
Vielen Dank für die Erklärung für das "on hold" auf Meta!
[/BEARBEITEN]
Mein Setup:
- Privates Netzwerk
vboxnet1
10.0.7.0/24 - 1 Host, Ubuntu-Desktop
- 1 VM, Ubuntu-Server (VirtualBox)
Adressierungslayout:
- Host: 10.0.7.1
- VM: 10.0.7.101
- VM MAC NAMESPACE : 10.0.7.102
Auf dem habe VM
ich die folgenden Befehle ausgeführt:
ip netns add mac # create a new nmespace
ip link add link eth0 mac0 type macvlan # create a new macvlan interface
ip link set mac0 netns mac
Im mac
Namespace innerhalb der VM:
ip link set lo up
ip link set mac up
ip addr add 10.0.7.102/24 dev mac0
Damit wir im Grunde genommen am Ende Folgendes haben: (Like Inception?)
+------------------------+
| Host: 10.0.7.1 |
| |
| +--------------------+ |
| | VM: 10.0.7.101 | |
| | | |
| | +----------------+ | |
| | | NS: 10.0.7.102 | | |
| | | | | |
| | +----------------+ | |
| +--------------------+ |
+------------------------+
Was funktioniert:
- Ping zwischen
Host
undVM
- Ping zwischen
NS
undNS
- dhclient von
NS
Was funktioniert nicht:
- Ping zwischen
NS
undVM
- Ping zwischen
NS
undHost
Wo ich anfing verrückt zu werden:
- tcpdump on
host
(die reale Maschine) zeigt tatsächlich ARP-Anfrage UND Antworten an - tcpdump on
NS
zeigt ARP-Anforderungen an, die an den Host gesendet wurden - Mit tcpdump on
VM
funktioniert das ganze Durcheinander (!) -> ping erhält Antworten, wenn tcpdump auf der VM gestartet wird?!?
Ich wette, Sie waren gespannt darauf. Meine Frage lautet: Wie kann ich dafür sorgen, dass es funktioniert? Ich vermute, dass etwas mit ARP auf dem Macvlan in der NS nicht stimmt, kann aber nicht herausfinden, was genau ...
Übrigens habe ich die gleichen Experimente mit der mac0
Schnittstelle direkt auf der VM durchgeführt (kein Namespace) und es hat einwandfrei funktioniert.
quelle
Antworten:
OK, für die Nachwelt hätte mich die Tatsache, dass tcpdump plötzlich funktioniert, auf den richtigen Weg bringen sollen. Intern wird
eth0
in den Promiscuous-Modus gewechselt. Das heißt, eseth0
wird der gesamte Netzwerkverkehr ausgegeben, nicht nur der mit dem Hauptverkehr des ServersMAC
Genau so
macvlan
funktioniert es jedoch: Es wird eine neue sekundäre virtuelle MAC-Adresse hinzugefügt, die der "physische" (das ist eine VM) Netzwerkadapter nicht kennt.Die einfache Problemumgehung besteht also darin, manuell:
ifconfig eth0 promisc
Ich hoffe, es hilft !
quelle