Crear una interfaz virtual de capa 2, vinculada mediante un puente virtual a eth0

Crear una interfaz virtual de capa 2, vinculada mediante un puente virtual a eth0

Buenas noches,

Tengo un problema complicado, ya que necesito crear una interfaz virtual para usar con una VM, pero tiene que ser solo de capa 2: la VM se comunicará con una dirección MAC preestablecida (cualquiera de las dos se puede configurar para el adaptador, que será utilizado por la VM, o la VM enmascarará otra dirección MAC preestablecida).

La mayoría de las soluciones que ya he encontrado se relacionan con el uso de la capa 3 (es decir, direcciones IP) y, desafortunadamente, esas soluciones no funcionarán para mí: la configuración de la capa 3 debe realizarse dentro de la VM, y la NIC virtual y el conmutador virtual deben configurarse solo para tráfico L2.

Por razones operativas y de seguridad, no necesito ninguna configuración de dirección IP (es decir, enlace local solo para IPv4 e IPv6, o capa 3 completamente deshabilitada).

En pocas palabras, necesito una topología como esta:

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

Necesito crear un adaptador virtual, llamado vnic0, conectado (junto con el adaptador real eth0) a un puente virtual, llamado vbr0. Preferiblemente, busco archivos de configuración para RHEL 7.4/CentOS 7.4 que permitan que la configuración funcione automáticamente, sin la interacción de un administrador del sistema, después de reiniciar. Es posible que también necesite crear vnic1, vnic2, vnic3, etc., todos conectados a vbr0, en el futuro.

El uso de VLAN no es estrictamente necesario (se puede suponer que todo está en una VLAN no VLAN/nativa), pero si algún genio puede mostrarme cómo configurar, digamos, el tráfico dot1q etiquetado, con la VLAN 50 nativa activada. vnic0, VLAN 51 nativa en vnic1, etc., con eth0 funcionando como troncal (con todas o un subconjunto de VLAN permitidas para viajar a lo largo de él), usted debería tener serios problemas. :)

Ya he probado lo siguiente:

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

El mayor problema es que mi red vnic0 transmite paquetes, pero nunca los recibe. Mi red no es muy conversadora, pero esperaría ver al menos algunos paquetes de transmisión recibidos por vnic0 a través de vbr0. Sin embargo, eso no está sucediendo. Los intentos de ejecutar DHCP dentro de la máquina virtual conectada a vnic0 generan un tiempo de espera, aunque hay un servidor DHCP que funciona perfectamente conectado a eth0.

Respuesta1

No utilices dispositivos ficticios

Esto aparece con regularidad, no sé por qué la gente insiste en usarlos. Los dispositivos ficticios sólo son útilespara permitir que las aplicaciones de larga duración se vinculen a una dirección IP específica, de modo que los dispositivos falsos se pueden mover y, en caso necesario, conectar con otros dispositivos de menor duración.

Lo que quieres es unmacvlano varios que reemplazan tu vnic*. A pesar del nombre, los macvlan no tienen nada que ver con el etiquetado VLAN. Macvlan funcionará en la capa 2, ya estará conectado a la interfaz maestra ( eth0) y puede seleccionar uno de varios modos que posiblemente restrinjan la interacción de los dispositivos conectados en puente, si lo necesita.

Respuesta2

Las interfaces virtuales de Ethernet son interfaces virtuales, creadas en pares, que actúan como un cable de conexión:

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

Debería terminar con una vnic0dirección MAC suelta con una 00:11:22:33:44:55 que puede asignar a su VM. Se discuten en elmacvlanpágina mencionada anteriormente. No sé mucho sobre macvlan, pero esto también debería funcionar y no usarías el puente vbr0.

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

información relacionada