He resuelto esto.
Resulta ser iptables que deja caer paquetes en el puente. Los paquetes viajan a través de FORWARD cadena del filter tabla, sin coincidir con ninguna regla de la misma, por lo que la política predeterminada DROP aplica.
Para probar si es causado por iptables, podemos probar
echo 0 > /proc/sys/net/bridge/bridge-nf-call-iptables
luego mira si el puente funciona.
Este fue exactamente mi problema al solucionar un puente creado manualmente para usar con lxd. Agregué las siguientes reglas a /etc/iptables/rules.v4:
-A FORWARD -o br0 -m comment --comment "allow packets to pass from lxd lan bridge" -j ACCEPT
-A FORWARD -i br0 -m comment --comment "allow input packets to pass to lxd lan bridge" -j ACCEPT