Configurar endereços IP públicos nas VMs KVM

12

Eu tenho um servidor físico executando o CentOS 6.5 com uma interface conectada à Internet (com um endereço IP público). Dentro deste servidor, tenho duas VMs criadas com o KVM através da libvirt com uma interface cada. Desejo atribuir um endereço IP público a cada VM e continuar usando a conexão com o servidor físico.

Esta imagem ilustra o que eu tenho em preto e o que eu quero em azul: Topologia de rede.

Tentei de várias maneiras, como adicionar uma ponte Linux brctle anexar a interface física do servidor e as interfaces virtuais das VMs, mas não funcionou e perdi a conectividade com o servidor físico.

Estou aberto a usar pontes Linux ou redes libvirt.

Como posso obter endereços IP públicos nas VMs e no servidor físico?

sair
fonte
Tente adicionar o segundo adaptador às máquinas virtuais e conectá-los à rede interna do servidor.
Shcherbak
qual rede interna de servidores? de qualquer maneira eu quero a configuração da pergunta, se possível.
Logoff
Suponha que isso ajude: [KVM - Crie uma máquina virtual com 2 interfaces de pontes] ( askubuntu.com/questions/581771/… ), [ponte de rede KVM com duas placas de rede] ( serverfault.com/questions/130134/… )
shcherbak
mais uma vez, eu preferiria ter apenas uma interface por VM, se possível.
logoff
Eu respondi uma pergunta semelhante sobre o debian kvm host & guest ontem. unix.stackexchange.com/questions/245073/… - além de pequenos detalhes da configuração da interface, deve ser semelhante no centos.
cas

Respostas:

4

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:

  1. Identifique interfaces da VM KVM. Provavelmente, os nomes das interfaces começam comvnet*

Neste exemplo vnet0evnet1

  1. Crie uma ponte Linux com:

    brctl addbr virbr1

  2. 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
  1. 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-eth0com este conteúdo:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NAME=eth0
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
  1. 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-virbr1com 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>
  1. 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)

  1. 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.

sair
fonte