Estou configurando algumas VMs com o libvirt (driver qemu). Uma VM deve ser o gateway e, portanto, é configurada com duas interfaces de rede. Uma interface está conectando a minha LAN real e a outra usa o encapsulamento TCP (modo de servidor):
<!-- External interface - i.e. facing the Internet -->
<interface type='direct' trustGuestRxFilters='no'>
<source dev='eth0' mode='vepa'/>
</interface>
<!-- Virtual network -->
<interface type='server'>
<source address='0.0.0.0' port='5558'/>
</interface>
Então eu tenho duas outras VMs (chamadas de test_1 e test_2) que são praticamente idênticas (exceto para UUID, MAC e hostname, é claro). Aqueles que possuem apenas interfaces de rede que usam a rede TCP-tunneled virtual:
<interface type='client'>
<source address='127.0.0.1' port='5558'/>
</interface>
Agora, a VM do gateway deve distribuir endereços IP para todas as VMs na rede virtual, mas isso só é feito na VM de teste, que é inicializada pela primeira vez. Além disso, se ambos estiverem funcionando e eu desligar o que atualmente tem um IP, o outro receberá um IP.
Não acho que seja um problema do DHCP, porque vejo que a segunda VM de teste nem mesmo envia uma solicitação DHCP ao gateway. Também definir um IP estático na segunda VM não ajuda.
Afinal, parece que só pode haver uma VM como cliente para a rede virtual e a outra VM não está conectada à rede virtual. Mas, verificando as conexões na máquina host, vejo que ambos os processos do qemu para as VMs de teste têm túneis de TCP abertos para o processo de host do gateway.
Eu estou realmente sem noção. Algum conselho sobre o que poderia estar errado ou o que eu poderia tentar em seguida?
EDITAR:
É interessante dar uma olhada nas conexões reais no sistema host:
qemu-syst 2900 libvirt-qemu 12u IPv4 22574 0t0 TCP *:5558 (LISTEN)
qemu-syst 2900 libvirt-qemu 17u IPv4 22639 0t0 TCP localhost:5558->localhost:38714 (ESTABLISHED)
qemu-syst 2946 libvirt-qemu 12u IPv4 21820 0t0 TCP localhost:38714->localhost:5558 (ESTABLISHED)
qemu-syst 2967 libvirt-qemu 12u IPv4 21835 0t0 TCP localhost:38717->localhost:5558 (ESTABLISHED)
Parece que o servidor (processo 2900) aceitou somente a conexão da primeira VM (processo 2949)