El tráfico sin etiquetar debe convertirse en tráfico etiquetado después de pasar por el puente.

El tráfico sin etiquetar debe convertirse en tráfico etiquetado después de pasar por el puente.

Estoy tratando de lograr algo simple.

Tengo una máquina que tiene un solo puerto físico enp89s0. esto está conectado a la VLAN nativa ( VLAN=1).

Necesito crear máquinas virtuales y colocarlas en un archivo VLAN=166.

Para no especificar el nombre de la interfaz de las máquinas en systemd networkd, creé un puente y conecté las máquinas virtuales allí.

Este puente tiene como enlace ascendente una interfaz vlan eth.166que está conectada al puente principal.

el diseño se vería como el siguiente

              -------------               -------------
  enps890    |             |     eth.166 |              |
-------------|   br0       |-------------|    br166     | 
             |             |             |              |
             --------------               --------------

Las máquinas virtuales se conectan al br166.

Las máquinas virtuales no etiquetan el tráfico, por lo que el tráfico llega sin etiquetar y la interfaz eth.166debe etiquetarlo y pasarlo al conmutador. Mi conmutador está configurado con un puerto troncal, por lo que no creo que sea un problema del conmutador. Le dediqué algún tiempo pero no pude encontrar la manera.

Aquí mi configuración.

br0.netdev

[NetDev]
Name=br0
Kind=bridge

[Bridge]
VLANFiltering=yes

br0.network

[Match]
Name=br0

[Network]
DHCP=yes

[Network]
VLAN=eth.166

enps890.network

[Match]
Name=enp89s0
[Network]
Bridge=br0
[BridgeVLAN]
VLAN=166

br166.netdev

[NetDev]
Name=br166
Kind=bridge

[Bridge]
VLANFiltering=yes

br166.network

[Match]
Name=br166

[Network]
DHCP=no

eth.166.network

[Match]
Name=eth.166

[Network]
Bridge=br166
DHCP=no

[BridgeVLAN]
VLAN=166
PVID=166
EgressUntagged=166

eth.166.netdev

[NetDev]
Name=eth.166
Kind=vlan

[VLAN]
Id=166
$ bridge vlan

port              vlan-id
enp89s0           1 PVID Egress Untagged
                  166
br0               1 PVID Egress Untagged
br166             1 PVID Egress Untagged
eth.166           1 Egress Untagged
                  166 PVID Egress Untagged
virbr0            1 PVID Egress Untagged

Respuesta1

Este es el primer uso de systemd-networkd, pero claramente parecía ser la herramienta adecuada para un host libvirt sin cabeza, una única interfaz física y alojamiento de invitados en múltiples VLAN. He estado luchando con eso, pero recién lo logré, así que compartiré lo que funcionó para mí. El anfitrión y los invitados pueden utilizar sus respectivas redes e Internet. Cualquier tráfico host-huésped tendría que atravesar redes físicas y enrutadores (externos al host).

(1) INF físico: enp4s0f0
(2) VLAN: f0.2, f0.613
(2) Puentes para conexión de invitado: brV2, brV613
El host obtiene la dirección DHCP de la VLAN 1 sin etiquetar.
El tráfico del invitado no está etiquetado para el invitado y se etiqueta entre el host y interruptor aguas arriba. Los invitados utilizan la interfaz Bridge brV2o brV613.
Puentes destinados únicamente a invitados, todas las <key>=noentradas en la sección [Red] evitan ver un estado "degradado" de networkctl list.

Para ingresar por primera vez a systemd-networkd, encontré útil un dibujo.
Dibujo de configuración: systemd.networkd con VLAN para invitados libvirt

/etc/systemd/network files:  

10-enp4s0f0.red

[Match]
Name=enp4s0f0

[Network]
DHCP=ipv4
VLAN=f0.2
VLAN=f0.613

[DHCPv4]
UseDNS=no

28-vlan2.netdev

[NetDev]
Name=f0.2
Kind=vlan

[VLAN]
Id=2

28-vlan613.netdev

[NetDev]
Name=f0.613
Kind=vlan

[VLAN]
Id=613

30-vlan2.red

[Match]
Name=f0.2

[Network]
Bridge=brV2  

30-vlan613.red

[Match]
Name=f0.613

[Network]
Bridge=brV613

30-br2.netdev

[NetDev]
Name=brV2
Kind=bridge

30-br613.netdev

[NetDev]
Name=brV613
Kind=bridge

Red 30-V2-brNET.

[Match]
Name=brV2

[Network]
DHCP=no
LinkLocalAddressing=no
LLDP=no
EmitLLDP=no
IPv6AcceptRA=no
IPv6SendRA=no

30-V613-brNET.red

[Match]
Name=brV613

[Network]
DHCP=no
LinkLocalAddressing=no
LLDP=no
EmitLLDP=no
IPv6AcceptRA=no
IPv6SendRA=no

información relacionada