Estou tentando conseguir algo simples.
Eu tenho uma máquina que possui uma única porta física enp89s0
. isso está conectado à VLAN nativa ( VLAN=1
).
Preciso criar VMs e colocá-las em um arquivo VLAN=166
.
Para não especificar o nome da interface das máquinas na rede systemd, criei uma ponte e conectei VMs lá.
Esta ponte tem como uplink uma interface vlan eth.166
que está conectada à ponte principal.
o design ficaria parecido com o seguinte
------------- -------------
enps890 | | eth.166 | |
-------------| br0 |-------------| br166 |
| | | |
-------------- --------------
as VMs são conectadas ao br166
.
As VMs não marcam o tráfego, portanto o tráfego chega sem marcação e a interface eth.166
deve marcá-lo e passá-lo para o switch. Meu switch está configurado com porta de tronco, então não acho que seja um problema do switch. Passei algum tempo nisso, mas não consegui encontrar o caminho.
Aqui minha configuração
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
Responder1
Este é meu primeiro uso do systemd-networkd, mas claramente parecia ser a ferramenta certa para host libvirt sem cabeça, interface física única, hospedando convidados em várias VLANs. Tenho lutado com isso, mas acabei de fazer funcionar, então compartilharei o que funcionou para mim. Host e convidados podem usar suas respectivas redes e Internet. Qualquer tráfego host-convidado teria que atravessar redes físicas e roteador (externo ao host).
(1) INF físico: enp4s0f0
(2) VLANs: f0.2 , f0.613
(2) Pontes para conexão de convidado: brV2, brV613
Host obtendo endereço DHCP de VLAN 1 não marcada
O tráfego do convidado não é marcado para o convidado e marcado entre o host e interruptor a montante. Os convidados usam a interface Bridge brV2
ou brV613
.
Bridges destinadas apenas a convidados, todas as <key>=no
entradas na seção [Rede] evitam ver um status 'degradado' de networkctl list
.
Para a primeira entrada no systemd-networkd, achei um desenho útil.
/etc/systemd/network files:
10-enp4s0f0.rede
[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.rede
[Match]
Name=f0.2
[Network]
Bridge=brV2
30-vlan613.rede
[Match]
Name=f0.613
[Network]
Bridge=brV613
30-br2.netdev
[NetDev]
Name=brV2
Kind=bridge
30-br613.netdev
[NetDev]
Name=brV613
Kind=bridge
30-V2-brNET.rede
[Match]
Name=brV2
[Network]
DHCP=no
LinkLocalAddressing=no
LLDP=no
EmitLLDP=no
IPv6AcceptRA=no
IPv6SendRA=no
30-V613-brNET.rede
[Match]
Name=brV613
[Network]
DHCP=no
LinkLocalAddressing=no
LLDP=no
EmitLLDP=no
IPv6AcceptRA=no
IPv6SendRA=no