Eu tenho o KVM configurado para executar uma máquina virtual (Windows Home Server 2011 atuando como um agente de compilação) em um servidor dedicado (CentOS 6.3). Recentemente, executei atualizações no host e a máquina virtual agora não consegue se conectar à Internet.
A rede virtual está sendo executada pelo NAT, o host tem uma interface (eth0: 0) configurada com um IP estático (o virt-manager mostra a rede e seu IP corretamente) e todas as conexões com esse IP devem ser enviadas para O convidado.
O host e o convidado podem fazer ping uns aos outros, mas o convidado não pode fazer ping em nada acima do host, nem posso fazer ping do convidado de qualquer outro lugar (posso fazer ping no host). Os resultados do convidado para outro servidor sob meu controle e de um sistema externo para o convidado retornam "Porta de destino inacessível". A execução do tcpdump no host e no destino mostra o host respondendo ao ping, mas o destino nunca o vê (nem parece que o host está incomodando em enviá-lo, o que me leva a suspeitar de iptables). A saída do ping corresponde àquela, listando as respostas de 192.168.100.1.
O convidado pode resolver o DNS, no entanto, o que eu acho bastante estranho. As configurações de rede do convidado (propriedades de conexão TCP / IPv4) são configuradas com um IP local estático (192.168.100.128), máscara de 255.255.255.0 e gateway e DNS em 192.168.100.1.
Quando originalmente configurando o vm / net, eu configurei algumas regras do iptables para habilitar o bridging, mas depois que minha empresa de hospedagem reclamou da bridge, eu configurei uma nova rede virtual usando NAT e acredito ter removido todas as regras.
A rede da VM estava funcionando perfeitamente nos últimos meses, até ontem. Eu não ouvi nada da empresa de hospedagem, não mudei nada no guest, então até onde eu sei, nada mais mudou (infelizmente a lista de pacotes atualizados desde então caiu e eu não notei isso para baixo).
Atualização:
iptables -L
:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
ACCEPT tcp -- main-domain anywhere tcp dpt:mysql
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 192.168.100.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 192.168.100.0/24 anywhere
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
ACCEPT all -- anywhere 192.168.100.128
ACCEPT all -- anywhere guest-subdomain
iptables -t nat -L
:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT all -- anywhere guest-subdomain to:192.168.100.128
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE tcp -- 192.168.100.0/24 !192.168.100.0/24 masq ports: 1024-65535
MASQUERADE udp -- 192.168.100.0/24 !192.168.100.0/24 masq ports: 1024-65535
MASQUERADE all -- 192.168.100.0/24 !192.168.100.0/24
SNAT all -- 192.168.100.128 anywhere to:guest-ip