Respondendo a minha própria pergunta ...
Acontece que há um arquivo /etc/systemd/network/50-cloud-init-eth0.link
Continha
[Match]
MACAddress=b8:27:eb:5c:8f:cc
[Link]
Name=eth0
Quando mudei a eth0 para br0, tudo funciona como esperado.
Estou tentando configurar uma bridge com minha placa ethernet (enxb8 ...), aqui está o arquivo de interfaces
auto lo
iface lo inet loopback
auto br0
iface br0 inet dhcp
bridge_ports enxb827eb5c8fcc
auto enxb827eb5c8fcc
iface enxb827eb5c8fcc inet manual
Mas o que acabo depois de uma reinicialização é duas pontes
br0 sem interfaces
eth0 com interface enxb8 ...
Quando eu faço brctl delbr eth0
e atribuo enx ... interface para br0, tudo funciona.
O que eu encontrei no log é que o kernel faz alguma mágica
kernel: smsc95xx 1-1.1:1.0 enxb827eb5c8fcc: renamed from eth0 -> this is how enxX appears, ok
kernel: eth0: renamed from br0 -> this is the culprit
Eu não entendo porque cria a ponte eth0 (!). Não tenho regras em /etc/udev
.
Respondendo a minha própria pergunta ...
Acontece que há um arquivo /etc/systemd/network/50-cloud-init-eth0.link
Continha
[Match]
MACAddress=b8:27:eb:5c:8f:cc
[Link]
Name=eth0
Quando mudei a eth0 para br0, tudo funciona como esperado.