KVM: precisa de várias máquinas virtuais para compartilhar uma interface VLAN

1

Não sei como configurar meu servidor Linux, que tem uma única interface VLAN para suportar várias máquinas virtuais que quero conectar à minha rede (para que todos os seus serviços pareçam vir de várias máquinas reais na minha rede). Eu simplesmente crio uma única interface de rede em ponte br0 , vinculada ao meu dispositivo VLAN existente, e todas as VMs usam essa interface? Ou eu preciso configurar br0 , br1 , br2 , etc. para cada VM? Posso até ligar essas interfaces de ponte a uma interface VLAN? Eu suponho que eu preciso dizer VLAN="yes" no arquivo ifcfg da bridge?

É verdade, eu poderia simplesmente tentar e ver, mas neste momento eu estou tão inseguro sobre como tudo isso junta que eu gostaria de fazer um teste de sanidade antes de ter um desastre de sanidade :-).

Eu configurei um host do CentOS7:

# uname -a
Linux cha028 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

Tem uma única interface que tem uma VLAN. Então a interface de hardware em1 tem:

# cat ifcfg-em1
NAME="em1"
DEVICE="em1"
ONBOOT="yes"
TYPE="Ethernet"
BOOTPROTO="none"
HWADDR=14:fe:b5:d6:07:cc
NM_CONTROLLED=no

... e eu tenho um ifcfg-em1.144 que tem todo o endereçamento IP nele e tal. Eu instalei uma pluralidade de VMs na caixa. Agora preciso fazer a rede funcionar.

Como faço isso? Basta criar ifcfg-br0 de acordo com o link (com seu próprio endereço IP exclusivo) e simplesmente adicione uma linha ao meu arquivo ifcfg-em1.144 que diz BRIDGE=br0 ?

E, tendo feito isso, posso anexar todas as minhas VMs ao dispositivo br0?

Obrigado pela sua indulgência e pela sua ajuda.

Aqui está o meu arquivo ifcfg-em1.144 . Observe que /etc/sysconfig/network contém a linha GATEWAY:

VLAN="yes"
DEVICE="em1.144"
PHYSDEV="em1"
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
ONBOOT="yes"
IPADDR="10.144.101.28"
PREFIX="24"
NM_CONTROLLED=no
    
por Mike S 31.12.2015 / 00:04

2 respostas

3

Se você fizer a ponte para a interface vlan (em oposição à interface de hardware), os pacotes em ponte de suas VMs serão marcados à medida que forem conectados à rede. Se você fizer a ponte para a interface de hardware, todo o tráfego será interligado independentemente da tag e você terá que mover sua interface vlan para fora da bridge (a base vlan da interface agora não tem sentido). Qualquer número de VMs pode compartilhar uma ponte.

Normalmente, você lidaria com as vlans no host para que os convidados não precisem configurar manualmente as vlans. Diversas permutações diferentes disso parecem que funcionam para você.

    
por 31.12.2015 / 19:09
2

Veja o que fiz para configurar a rede em ponte na minha máquina host em uma VLAN:

  1. Dispositivo físico - o que é real. A única coisa que sabe é que é um dispositivo Ethernet e tem um endereço MAC. Ah, e tire esse maldito Network Manager da sua cara:

(arquivo == / etc / sysconfig / network-scripts / ifcfg-em1) DEVICE="em1" TYPE=Ethernet HWADDR=14:fe:b5:d6:07:cc BOOTPROTO=none ONBOOT="yes" NM_CONTROLLED=no

  1. Dispositivo de VLAN - Meu vlan aqui é numerado como 144. YMMV. Você diz à rede do CentOS / Redhat isso simplesmente sufixando o nome do dispositivo com um ponto seguido por um número; O script ifup procura isso e extrai o ID da VLAN da string. E você diz que é uma VLAN usando a diretiva VLAN=yes :

(arquivo == /etc/sysconfig/network-scripts/ifcfg-em1.144) DEVICE=em1.144 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes VLAN=yes BRIDGE=br0 NM_CONTROLLED=no

  1. Bridged device - o Bridge é o guardião do IP (tm). Isto contém as informações da camada 3 (endereço IP) ... ou seja, DNS, máscara de rede, etc. Para mim, gosto de colocar o gateway padrão em / etc / sysconfig / network. E eu gosto de manter esse endereçamento IP ZEROCONF (169.254.x.y) fora da minha tabela de roteamento. Então nós temos:

(arquivo == / etc / sysconfig / network-scripts / br0) DEVICE="br0" TYPE="Bridge" BOOTPROTO="static" DEFROUTE="yes" ONBOOT="yes" IPADDR="10.144.1.12" NETMASK=255.255.255.0 DNS1="10.144.1.101" DOMAIN="example.com" NM_CONTROLLED=no DELAY=0

(arquivo == / etc / sysconfig / network): GATEWAY=10.144.1.1 NOZEROCONF=true

Note que depois que a rede é iniciada, pode demorar de 30 a 60 segundos para que o seu switch aceite realmente os pacotes (isto é, a Cisco pode estar configurada para fazer isso). Portanto, se você vir "Host de destino inacessível" ao fazer ping no gateway, aguarde um minuto. Pode demorar um pouco para aparecer.

Editar: Uma vez que o host esteja configurado e funcionando (ou seja, você pode executar ping no gateway local, em seguida, outros hosts na rede, depois outros hosts em sua infra-estrutura ... tudo por IP preste atenção em você ... então você pode fazer ping / traceroute / telnet- into-port-22 por hostname), então você está pronto para criar redes em suas VMs.

Isso é trivialmente fácil. Você só precisa garantir que eles estejam usando o br0 como seu dispositivo de rede. Se você usa virt-install, como eu fiz, você pode fazer isso:

virt-install --name monitor0 --memory 2048 --disk /dev/vm_group0/thin_lv_monitor0  --cdrom ./CentOS-7-x86_64-Everything-1511.iso --network bridge=br0

Observe o --network bridge=br0 .

Se você estiver usando o qemu e construir o host virtual sem rede ou com o NAT, poderá corrigi-lo. Apenas traga o host para baixo. Em seguida, edite /etc/libvirt/qemu/<vm name>.xml . Procure uma seção chamada interface . Altere-o para seguir este exemplo:

<interface type='bridge'>
  <mac address='52:54:00:22:29:cc'/>
  <source bridge='br0'/>
  <model type='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

... Ou seja, você provavelmente precisará alterar a primeira linha interface e a linha source (foi o que eu fiz, depois de ter construído as máquinas sem especificar a rede [configura NAT por padrão] ).

Salve o arquivo e reinicie o libvirtd usando seu método favorito: systemctl restart libvirtd

Reinicie a VM usando virsh start <vm name> . Entre em sua VM usando seu console e edite a rede conforme apropriado. Lembre-se, sua VM agora é um membro legítimo de sua rede, portanto, você terá um endereço IP na mesma sub-rede que a interface em ponte br0 .

Eu configurei duas VMs compartilhando a VLAN com base em br0 , por isso estou feliz com um trailer!

Finalmente, mostre ao seu chefe o que você fez e como você é legal. Tendo feito isso, voe até Cancun e beba uma Pina Colada na praia. Festa por uma semana. Volte ao trabalho e configure seus servidores da web ou o que você tem nas suas VMs. Você está fora das corridas!

E ... tenha um Feliz Ano Novo!

    
por 31.12.2015 / 18:05