Qual é a maneira correta de configurar uma ponte vinculada no Centos 6 para convidados do KVM?

4

Qual é a maneira correta de configurar uma ponte no Centos 6 para convidados KVM?

Eu atualmente estava brincando com uma configuração de dois hosts KVM, que hospedarão vários convidados. Eu tenho dois HP DL380: s com 4 nics cada. Eu gostaria de usar dois nics (eth0, eth1) em um vínculo ativo (modo = 1), por razões de failover, voltado para a internet. Então eu gostaria de ter os outros dois nics (eth2, eth3) também em um vínculo de backup ativo, enfrentando um admin / back net.

No topo da ligação, preciso de uma ponte que os convidados do KVM usem para acessar a rede da frente ou de trás.

No interwebz eu encontrei muitas maneiras diferentes de configurar isso. Alguns estão apenas mencionando a ligação, alguns apenas fazendo uma ponte e alguns estão tentando combiná-lo. Nenhuma que eu tenha encontrado já mencionou o que acontecerá se eu usar uma rede de frente e verso com muitos hosts.

Alguns dos meus problemas / dúvidas são.

  • Eu tenho um fetich nos arquivos de configuração corretos, da maneira que os desenvolvedores pensavam que deveriam ser, não apenas trabalhando com arquivos de configuração.
  • Recebi o erro "kernel: bond0: pacote recebido com endereço próprio como endereço de origem". Ambos para bond0 e bond1.
  • O tráfego será automaticamente encaminhado da back-net para a rede frontal? Devo usar ebtables / iptables ou algo para desativar o tráfego de encaminhamento?
  • Preciso usar o Spanning Tree Protocol (STP)?
  • Preciso de rotas específicas?

Aqui está uma boa imagem do aspecto do ambiente (pelo menos uma parte dele).

Aquiestãoosmeusarquivosdeconfiguraçãorelevantes.

/etc/sysconfig/network

NETWORKING=yesHOSTNAME=host1GATEWAYDEV=br0NETWORKING_IPV6=no

/etc/sysconfig/scriptsderede/ifcfg-eth0-ifcfg-eth3

DEVICE="ethX"
NM_CONTROLLED="no"
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
SLAVE=yes
MASTER=bondX
HOTPLUG=no
BOOTPROTO=none

/ etc / sysconfig / scripts de rede / ifcfg-bond0 - ifcfg-bond1

DEVICE=bondX
BONDING_OPTS="miimon=100 mode=1"
ONPARENT=yes
BOOTPROTO=none
BRIDGE=brX

/ etc / sysconfig / scripts de rede / ifcfg-br0

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
DELAY=0
BOOTPROTO=none

/ etc / sysconfig / scripts de rede / ifcfg-br1

DEVICE=br1
TYPE=Bridge
ONBOOT=yes
DELAY=0
BOOTPROTO=static
IPADDR=10.0.1.100
NETMASK=255.255.255.0

Atualização 1

  • Adicionado /etc/sysctl.conf
  • ip removido do ifcfg-br0. O host não deve ser acessível da Internet, apenas da admin net.

* Atualização 2 *

  • Removidas as alterações no /etc/sysctl.conf. Não precisa ativar o iptables.
por Arlukin 29.09.2011 / 01:38

2 respostas

2

Não tenho certeza sobre o CentOS 6, mas no Fedora o módulo de ligação não é adicionado ao kernel do Linux por padrão e, portanto, você precisa criar um arquivo /etc/modprobe.d/bonding.conf com conteúdo

alias bond0 bonding

Reinicialize e você verá o módulo de ligação carregado durante a inicialização.

Como você tem duas interfaces conectadas, talvez seja necessário adicionar outra linha de alias para bond1 também. No entanto, eu nunca tentei isso.

Sugira que você tenha uma trabalhando e depois se preocupe com a configuração da segunda.

Outra questão levantada sobre a ponte, outros pontos a observar, essas configurações funcionam com o daemon rede , mas não acredito que funcionem com o NetworkManager . Você está executando a rede ou o daemon do NetworkManager?

E, finalmente, existem maneiras diferentes de configurar o netfilter para lidar com interfaces em ponte. Pelo menos no Fedora 12+, o padrão é desabilitar o netfilter em pontes. No entanto, você pode mudar isso editando /etc/sysctl.conf e definindo

net.bridge.bridge-nf-call-iptables=1

Faça o mesmo para arp e ipv6 e neste arquivo você também precisa definir

net.ipv4.ip_forward=1

Enxague sua corrente FORWARD e substitua pela regra iptables

iptables -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT
    
por 29.09.2011 / 02:27
2
    O
  1. encaminhamento para o iptables funcionará, mas para que? isso definitivamente criará sobrecarga extra
  2. o esquema de rede parece correto, embora eu tente fazer com que o hardware use o modo 4 em vez de 1 para estar no lado seguro e agregar também o tráfego
  3. não tendo um endereço de IP em br0 e br1, você tem outras placas de rede que podem ser acessadas pelo host? Você realmente não quer se trancar (a menos que você também tenha um iLO, claro)
  4. a mensagem do kernel que você postou geralmente está relacionada ao uso de modos de ligação incompatíveis com a ponte (0 e 6). Você pode ter certeza de que está realmente no modo 1 (/ proc / net / bonding / ...) geralmente contém uma indicação
  5. O
  6. encaminhamento entre sub-redes não deve acontecer sem uma configuração específica, no entanto, o kernel dos hosts deve ser capaz de determinar qual pacote está destinado onde, em br0 e br1 estão em sub-redes diferentes, então uma VM em br0 deve ser capaz de falar a rede br0, e se você quiser também poder se comunicar no br1, adicione outro NIC virtual e anexe-o lá
por 29.09.2011 / 18:30