Eu tenho uma máquina configurada executando o KVM e uma ponte no eth0 com o endereço IP da máquina. A máquina tem um endereço IP em um intervalo sem mais endereços IP livres. Estou tentando disponibilizar uma segunda sub-rede para os convidados do KVM usarem para seus endereços IP.
network -- eth0 --- bridge0 --|
(x.x.x.75/26) |-- guest0:eth0 (x.x.y.213/28)
|
|-- guest1:eth0 (x.x.y.214/28)
Eu criei a ponte criando um arquivo ifcfg-bridge0 no host e geralmente parece estar funcionando, mas não consigo iniciar uma conexão do mundo externo para o convidado. O que é estranho é que o convidado tem acesso à internet, então obviamente os pacotes de retorno chegam onde estão indo, mas novas conexões não podem ser estabelecidas. O caso de exemplo para isso é que, se eu me conectar a um dos convidados com o VNC, posso executar wget http://google.com/
e obter a página.
No host e no iptables de convidado foi liberado, então não há regras de iptables. No host, a saída do comando route é
host# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
x.x.x.64 0.0.0.0 255.255.255.224 U 0 0 0 bridge0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 bridge0
0.0.0.0 x.x.x.94 0.0.0.0 UG 0 0 0 bridge0
Para tentar fazer o roteamento funcionar, tentei adicionar uma rota estática à nova sub-rede no brdge com um comando como route add --net x.x.y.208 netmask 255.255.255.240 bridge0
. Depois de adicionar a rota, minha tabela de rotas no host se parece com
host# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
x.x.y.208 0.0.0.0 255.255.255.240 U 0 0 0 bridge0
x.x.x.64 0.0.0.0 255.255.255.224 U 0 0 0 bridge0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 bridge0
0.0.0.0 x.x.x.94 0.0.0.0 UG 0 0 0 bridge0
No entanto, o host ainda não consegue acessar o convidado. Se eu tracerou o convidado, não vejo a conexão saindo, simplesmente vejo
host# traceroute x.x.y.213
traceroute to x.x.y.213, 30 hops max, 60 byte packets
1 x.x.y.213 0.639 ms 0.771 ms 0.784 ms
Mas quando tento me conectar à máquina (por exemplo, telnet x.x.y.213 22
), não obtenho nenhuma conexão (na comparação com o convidado, se eu executar telnet x.x.y.213 22
ou telnet x.x.x.75 22
, obtenho um resultado).