Eu tenho um servidor instalado Debian Xen 4.1. Vou me referir a este servidor mais tarde com a letra A. O servidor tem dois servidores virtuais em execução. Vamos chamar esses servidores com as letras B e C.
Todos os servidores A (host), B (vm) e C (vm) possuem ips públicos (eles têm apenas ips públicos, nada mais) Servidor A: x.x.x.82 Servidor B: x.x.x.83 Servidor C: x.x.x.84
Todos eles têm a mesma máscara de rede e o mesmo gateway. O servidor A possui interfaces xenbr0, vif2.0 e vif3.0. O servidor B possui uma interface eth0 (vinculada a vif2.0). O servidor C possui uma interface eth0 (vinculada a vif3.0). Eu verifiquei rotas e gateways e as máscaras de rede estão corretas. E a configuração funciona.
route -n (on server A)
Destination Gateway Genmask Flags Metric Ref Use
Iface
0.0.0.0 x.x.x.81 0.0.0.0 UG 0 0 0 xenbr0
x.x.x.80 0.0.0.0 255.255.255.240 U 0 0 0 xenbr0
route -n (on server B and C)
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 x.x.x.81 0.0.0.0 UG 0 0 0 eth0
x.x.x.80 0.0.0.0 255.255.255.240 U 0 0 0 eth0
Isso pode funcionar dias, semanas, meses, mas então algo acontece. Apenas aleatoriamente o servidor virtual B não pode mais acessar o gateway, e ninguém pode acessar o servidor B via IP público. Todas as interfaces estão ativas, as rotas ainda estão corretas. O servidor A e C podem fazer o ping B, e o B pode fazer o ping deles. O gateway está inacessível. Eu verifiquei o iptables no host (servidor A), e está absolutamente correto e nada não mudou. Eu li o dmesg, o syslog e todos os arquivos de log que eu poderia imaginar no servidor A e na máquina virtual B - mas não consigo encontrar nenhum erro relatado. Roteamento simplesmente não funciona mais como deveria! E nada foi alterado também!
Tanto quanto eu sei, a única solução é reiniciar a máquina virtual. Depois disso, funciona perfeitamente nos próximos meses.
Eu li talvez centenas de fóruns e discussões, mas não encontrei a solução - geralmente eles têm algo errado com a configuração ou recebem alguma mensagem de erro. Quando o servidor B não pode mais se conectar ao gateway, o servidor C funciona perfeitamente e suas configurações de rede são idênticas (exceto diferentes ip, é claro).
Eu verifiquei também brctl e ele afirma que o STP ativado é "não". Isso pode ter alguma coisa a ver com isso? É difícil acreditar, porque a VM C ainda está funcionando perfeitamente.
Gostaria de receber sugestões sobre onde começar a procurar a razão para isso. Eu verifiquei o iptables, ifconfig, brctl, dmesg, logs etc tantas vezes que eu estou sem ideias.