Estou tentando configurar uma ponte por VLAN (sem filtragem de VLAN) para systemd-networkd
facilitar a configuração de VMs libvirt no Debian 12.
Isso funciona conforme o esperado sem VLAN e funciona com VLAN com alguma ajuda manual ( ip link set master ...
). O sintoma do problema é que systemd-networkd
cria a ponte e as interfaces VLAN, mas não as conecta:
2: onbunten: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master brlan state UP group default qlen 1000
link/ether 04:92:26:b7:a9:9f brd ff:ff:ff:ff:ff:ff
4: brlan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether c6:50:f5:f2:22:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.2.222/24 brd 192.168.2.255 scope global brlan
valid_lft forever preferred_lft forever
5: brvlan2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 46:ba:f7:a8:3d:d7 brd ff:ff:ff:ff:ff:ff
6: brvlan3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 26:96:9b:cc:69:af brd ff:ff:ff:ff:ff:ff
7: onbunten.4@onbunten: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 04:92:26:b7:a9:9f brd ff:ff:ff:ff:ff:ff
8: onbunten.2@onbunten: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 04:92:26:b7:a9:9f brd ff:ff:ff:ff:ff:ff
9: onbunten3@onbunten: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 04:92:26:b7:a9:9f brd ff:ff:ff:ff:ff:ff
A diferença do padrão onbunten.2
/ onbunten3
é intencional; para testar se isso fazia alguma diferença.
Encontrei descrições na Internet que parecem afirmar que o que fiz foi a solução. Também encontrei a declaração
Esta configuração está obsoleta e não é mais suportada
neste site ( a resposta ); infelizmente, sem uma explicação clara do que exatamente deveria estar obsoleto (não encontrei nenhuma dica nas páginas de manual do Systemd).
Estou executando systemd-networkd
em modo debug ( SYSTEMD_LOG_LEVEL=debug
) mas entre as 500 linhas de log não percebo nenhuma que esteja relacionada às interfaces VLAN e bridge simultaneamente. Nenhuma mensagem de erro.
os arquivos de configuração
isso é o que funciona
==> 31-brlan.netdev <==
[NetDev]
Name=brlan
Kind=bridge
==> 32-brvlan2.netdev <==
[NetDev]
Name=brvlan2
Kind=bridge
==> 33-brvlan3.netdev <==
[NetDev]
Name=brvlan3
Kind=bridge
==> 41-onbunten-vlans.network <==
[Match]
Type=ether
Name=onbunten
[Network]
LinkLocalAddressing=no
VLAN=onbunten.2
VLAN=onbunten3
VLAN=onbunten.4
Bridge=brlan
==> 61-brlan-onbunten.network <==
[Match]
Name=onbunten
[Network]
Bridge=brlan
==> 71-brlan.network <==
[Match]
Name=brlan
[Network]
LinkLocalAddressing=no
ConfigureWithoutCarrier=yes
IgnoreCarrierLoss=yes
[Address]
Address=192.168.2.222/24
isso é o que NÃO funciona
==> 62-brvlan2-onbunten2.network <==
[Match]
Name=onbunten.2
[Network]
Bridge=brvlan2
==> 63-brvlan3-onbunten3.network <==
[Match]
Name=onbunten3
[Network]
Bridge=brvlan3
==> 72-brvlan2.network <==
[Match]
Name=brvlan2
[Network]
DHCP=no
LinkLocalAddressing=no
# Gateway=192.168.115.1
# NTP=
ConfigureWithoutCarrier=yes
IgnoreCarrierLoss=yes
[Address]
Address=192.168.115.222/24
DuplicateAddressDetection=ipv4
Scope=global
==> 73-brvlan3.network <==
[Match]
Name=brvlan3
[Network]
DHCP=no
LinkLocalAddressing=no
Gateway=192.168.116.1
# NTP=
ConfigureWithoutCarrier=yes
IgnoreCarrierLoss=yes
[Address]
Address=192.168.116.222/24
DuplicateAddressDetection=ipv4
Scope=global
Finalmente encontrei isso na saída de depuração:
( Die Datei existiert bereits significa em alemão O arquivo já existe )
Isso me levou a tentar adicionar
MACAddress=
ao[NetDev]
bloco osnetdev
arquivos das interfaces VLAN (que não mostrei acima porque não esperava um problema lá enquanto as interfaces eram criadas – masDOWN
).Presumo que alguma mudança no Systemd ou no kernel tornou isso um requisito depois que ele funcionou antes sem essa entrada também. Depois de toda a documentação afirmar explicitamente que isso não precisa ser fornecido...