Interfaces basadas en Macvlan desde el host pero no desde el espacio de nombres

10

[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:

  1. Red privada vboxnet110.0.7.0/24
  2. 1 host, escritorio ubuntu
  3. 1 VM, servidor ubuntu (VirtualBox)

Diseño de direccionamiento:

  1. Anfitrión: 10.0.7.1
  2. VM: 10.0.7.101
  3. 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.

yadutaf
fuente
44
No entiendo por qué esta pregunta se ha marcado como fuera de tema. Definitivamente es una pregunta sysadmin / netadmin, relevante para múltiples entornos de virtualización, y no es trivial (o, si lo es, el 90% de las preguntas en StackOverflow también están fuera de tema). Me encantaría que las personas que lo marcaron como "fuera de tema" se molestaran en explicar por qué, en lugar de copiar y pegar una regla que obviamente no se aplica aquí. ¡Gracias!
jpetazzo
@jpetazzo Esto no está fuera de tema, y ​​solo puedo suponer que las personas que cerraron lo hicieron en función de la mala organización / presentación de la pregunta (probablemente debido a que el OP no es un administrador del sistema / red). Además, el alcance de Server Fault (no solo el tema) es diferente de Stack Overflow : su argumento me hace pensar que no ha visitado nuestro centro de ayuda, ya que no tiene sentido.
Chris S

Respuestas:

13

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 principalMAC

Sin 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 promisc

Espero que ayude !

yadutaf
fuente
¿Supongo que también tenía que desmarcar "modo no promisc" en esa máquina virtual?
Nils
De hecho, no está marcado.
yadutaf