Consegui fazê-lo funcionar. Não é 100% tão limpo quanto eu quero que seja, mas pelo menos é funcional.
Minha solução consiste basicamente em iniciar a ponte com uma máscara de rede / 24 e sem um endereço IP. Quando a ponte está ativa, adiciono manualmente uma rota para o bloco / 29 IP que atribuí ao meu servidor. No domUs, inicio a interface com o IP correto e uma máscara de rede / 24, sem um gateway. Quando a interface está ativa, adiciono manualmente uma rota ao endereço eth0 do meu dom0 e faço disso o gateway padrão. Obviamente, o dom0 é configurado para rotear pacotes IP entre as redes.
dom0 /etc/network/interfaces
### The primary adapter ###
# These settings are provided by the dServer host
auto eth0
iface eth0 inet static
address a.b.c.d
netmask 255.255.255.0
network a.b.c.0
broadcast a.b.c.255
gateway a.b.c.254
### Network bridges ###
auto xenbr0
iface xenbr0 inet manual
bridge_ports none
network e.f.g.0
netmask 255.255.255.0
gateway a.b.c.254
### Static routes ###
# No route for e.f.g.0/24 was automatically set
# I assume that's due to the bridge not having an IP address assigned
up ip route add e.f.g.h/29 dev xenbr0
down ip route delete e.f.g.h/29
domU /etc/network/interfaces
# The primary network interface
auto eth0
iface eth0 inet static
address e.f.g.h
netmask 255.255.255.0
# Static routing
up ip route delete e.f.g.0/24
up ip route add a.b.c.d dev eth0
up ip route add default via a.b.c.d
down ip route delete default via a.b.c.d
dow ip route delete a.b.c.d
Habilite o roteamento de pacotes certificando-se de que isso esteja configurado em /etc/sysctl.d/xen-routing.conf
(o nome do arquivo é arbitrário, mas deve terminar em .conf)
net.ipv4.ip_forward=1
Depois de fazer isso, você pode habilitar a configuração reinicializando ou fazer online com
sysctl -w net.ipv4.ip_forward=1