[EDITAR]
El sistema de producción es actualmente una combinación de sistemas físicos y ESXi. ¡Obviamente nunca usaríamos virtualbox incluso para un entorno de preproducción! Se usó aquí solo para reducir rápidamente el problema directamente en mi escritorio.
¡Gracias por la explicación del "en espera" en meta!
[/EDITAR]
Mi configuración:
- Red privada
vboxnet110.0.7.0/24 - 1 host, escritorio ubuntu
- 1 VM, servidor ubuntu (VirtualBox)
Diseño de direccionamiento:
- Anfitrión: 10.0.7.1
- VM: 10.0.7.101
- VM MAC NAMESPACE : 10.0.7.102
En el VM, ejecuté los siguientes comandos:
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
En el macespacio de nombres, dentro de la VM:
ip link set lo up
ip link set mac up
ip addr add 10.0.7.102/24 dev mac0
Para que básicamente terminemos con: (¿Como inicio?)
+------------------------+
| Host: 10.0.7.1 |
| |
| +--------------------+ |
| | VM: 10.0.7.101 | |
| | | |
| | +----------------+ | |
| | | NS: 10.0.7.102 | | |
| | | | | |
| | +----------------+ | |
| +--------------------+ |
+------------------------+
Que funciona:
- Haga ping entre
HostyVM - Haga ping entre
NSyNS - dhclient de
NS
Qué no funciona:
- ping entre
NSyVM - ping entre
NSyHost
Donde empecé a volverme loco:
- tcpdump on
host(la máquina real) en realidad muestra la solicitud ARP Y responde - tcpdump on
NSmuestra las solicitudes ARP enviadas al host - tcpdump on
VMhace que todo el desastre funcione (!) -> ping comienza a obtener respuestas cuando tcpdump se inicia en la máquina virtual?!?
Entonces, apuesto a que estabas ansioso por ello, mi pregunta es: ¿cómo puedo hacer que funcione? Sospecho que algo anda mal con ARP en el macvlan dentro del NS, pero no puedo entender qué es exactamente ...
Por cierto, hice los mismos experimentos con la mac0interfaz directamente en la VM (sin espacio de nombres) y funcionó a la perfección.
fuente

Respuestas:
Bien, entonces, para la posteridad, el hecho de que tcpdump hace que todo funcione de repente debería haberme encaminado. Lo que hace internamente es cambiar
eth0al modo promiscuo. Es decir,eth0generará todo el tráfico de red, no solo el que tiene el servidor principalMACSin embargo, así es exactamente cómo
macvlanfunciona: agrega una nueva dirección MAC virtual secundaria que el adaptador de red "físico" (que es una VM) no conoce.Entonces, la solución fácil es hacer manualmente:
ifconfig eth0 promiscEspero que ayude !
fuente