Saudações
Estou tentando criar uma rede de ponte com o KVM e não estou chegando a lugar nenhum. Há docs e tutoriais sobre o assunto, mas todos parecem entrar em conflito ou não fornecem informações suficientes. Eu queria saber se alguém pode me dar uma visão geral de alto nível de como fazer isso funcionar. Eu provavelmente posso trabalhar os detalhes sozinho (configurando as interfaces, adicionando rotas, etc), eu só preciso de ajuda no quadro geral: como tudo está interconectado.
Eu tenho um servidor RHEL5 com o KVM instalado e em execução. Possui duas NICs físicas, eth0 e eth1 na mesma VLAN. Eu gostaria de usar eth1 para todo o tráfego entre os convidados e o resto da rede e reservar eth0 para gerenciamento de host, migrações de convidados, etc., se possível. Eu não sou exigente sobre qual deles obtém a rota padrão, embora seria bom se pudéssemos torná-lo eth0. Todos os convidados terão IPs estáticos. Eu preferiria que quando um novo convidado fosse adicionado, a configuração de rede só precisaria ser definida de dentro do próprio convidado. Basicamente, eu quero isso:
eth0: todo o tráfego de host |
eth1: todo o tráfego de visitantes
Aberto a qualquer outra sugestão, se isso não for possível ou se for difícil / difícil. Ponteiros para documentação existente podem não ser úteis, já que eu já trabalhei com tudo o que existe.
Obrigado por qualquer ajuda.
Atualizar
Ok, aqui está o que eu tenho até agora:
- eth0 é configurado com um endereço IP estático de acordo com o normal. Não há surpresas lá.
- br0 é criado como uma ponte sem endereço IP
- eth1 é criado sem endereço IP. É adicionado à ponte br0.
- a instância da VM está configurada para usar br0 e tem um endereço IP estático configurado
Usando essa configuração, posso conectar-me a máquinas externas de dentro do guest, mas os pacotes destinados ao convidado nunca o fazem. Aqui está o que minha configuração parece até agora:
# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=YES
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# host-only interface
DEVICE=eth0
TYPE=Ethernet
HWADDR=00:23:7D:E1:1F:22
IPADDR=10.8.91.18
NETMASK=255.255.252.0
GATEWAY=10.8.91.254
BOOTPROTO=none
ONBOOT=yes
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
# guest-only interface
DEVICE=eth1
TYPE=Ethernet
BRIDGE=br0
HWADDR=00:23:7d:e1:1f:26
BOOTPROTO=NONE
ONBOOT=YES
(virbr0 is the default kvm/libvirt NAT bridge, it's not being used here)
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00237de11f26 no vnet0
eth1
virbr0 8000.000000000000 yes
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
10.8.88.0 * 255.255.252.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 10.8.91.254 0.0.0.0 UG 0 0 0 eth0
Aqui está a seção relevante da definição XML libvirt do convidado:
<interface type='bridge'>
<mac address='54:52:00:76:94:73'/>
<source bridge='br0'/>
</interface>
Atualização 2
Ok, acho que estou pronto. Fui enganado pelo fato de meu sistema operacional convidado (SLES 11, que não estou familiarizado) ter um conjunto bastante restritivo de regras de firewall por padrão. Uma vez que o firewall foi esvaziado, posso fazer conexões para dentro e para fora.