Finalmente, encontrei a maneira correta de alcançar o objetivo da pergunta. Isso implica a ponte do Linux, porque não consegui resolver o problema com a rede libvirt.
Passos:
- Identifique interfaces da VM KVM. Provavelmente, os nomes das interfaces começam com
vnet*
Neste exemplo vnet0
evnet1
Crie uma ponte Linux com:
brctl addbr virbr1
Anexe interfaces de interface física e VMs KVM a nova ponte:
AVISO: se você estiver conectado ao servidor físico através da rede (SSH, Telnet, etc.), perderá a conexão. Use um terminal ou um método alternativo (como outra interface com conectividade).
brctl addif virbr1 vnet0
brctl addif virbr1 vnet1
brctl addif virbr1 eth0
- Configure a interface do servidor físico sem o endereço IP atribuído:
No CentOS 6.5, edite o arquivo /etc/sysconfig/network-scripts/ifcfg-eth0
com este conteúdo:
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NAME=eth0
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
- Configure a ponte do servidor físico para ter um endereço IP:
No CentOS 6.5, edite o arquivo /etc/sysconfig/network-scripts/ifcfg-virbr1
com este conteúdo:
DEVICE=virbr1
BOOTPROTO=none
ONBOOT=yes
IPADDR=<physical_server_public_ip_address>
NETMASK=<physical_server_public_ip_netmask>
GATEWAY=<physical_server_gateway_ip_address>
NAME=virbr1
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
NM_CONTROLLED=no
DNS1=<physical_server_primary_dns_server_ip_address>
DNS2=<physical_server_secondary_dns_server_ip_address>
- Reinicie a rede do servidor físico:
service network restart
NOTA: você deve recuperar a conectividade de rede do servidor físico (através da interface e da ponte)
- Configure a interface de rede das VMs KVM:
Isso depende do sistema operacional das VMs. De qualquer forma, ele deve incluir endereço IP, máscara de rede e gateway padrão, pelo menos. Obviamente, os servidores DNS concluirão a configuração.
Todas essas configurações são estáticas e podem ser substituídas pela atribuição de DHCP. Nesse caso, os endereços MAC da ponte e as interfaces KVM VM podem ser úteis.