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.166
que 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.166
debe 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 brV2
o brV613
.
Puentes destinados únicamente a invitados, todas las <key>=no
entradas 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.
/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