Quelle est la manière correcte de configurer un pont collé sur Centos 6 pour les invités de KVM?

Quelle est la manière correcte de configurer un pont collé sur Centos 6 pour les invités de KVM?

Je jouais actuellement avec une configuration de deux hôtes KVM qui accueilleraient plusieurs invités. J'ai deux HP DL380: s avec 4 nics chacun. J'aimerais utiliser deux nics (eth0, eth1) dans une binding de sauvegarde active (mode = 1), pour des raisons de basculement, face à Internet. Ensuite, j'aimerais avoir les deux autres nics (eth2, eth3) également dans une binding de sauvegarde active, face à un admin / back net.

En plus du lien, j'ai besoin d'un pont que les invités KVM utilisent pour accéder au réseau avant ou arrière.

Sur l'interwebz, j'ai trouvé de nombreuses façons différentes de configurer ceci. Certains mentionnent simplement le lien, certains se limitant à un pont et certains tentent de le combiner. Aucun que j'ai trouvé n'a mentionné ce qui se passera si j'utilise un réseau avant et arrière avec de nombreux hôtes.

Certains de mes problèmes / questions sont.

  • J'ai eu un fétich sur les files de configuration corrects, la façon dont les développeurs pensaient qu'ils devraient être, et pas seulement les files de configuration.
  • J'ai eu une erreur "kernel: bond0: package reçu avec son propre adresse comme adresse source". À la fois pour bond0 et bond1.
  • Le trafic automatisé sera-t-il transmis de l'arrière-réseau au front-net. Devrais-je utiliser ebtables / iptables ou quelque chose pour désactiver le trafic d'apathement?
  • Dois-je utiliser Spanning Tree Protocol (STP)?
  • Ai-je besoin de routes spécifiques?

Voici une belle image de l'environnement (au less une partie de celle-ci).

Schéma de réseau

Voici mes files de configuration pertinents.

/ etc / sysconfig / network

NETWORKING=yes HOSTNAME=host1 GATEWAYDEV=br0 NETWORKING_IPV6=no 

/ etc / sysconfig / network-scripts / 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 / network-scripts / ifcfg-bond0 – ifcfg-bond1

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

/ etc / sysconfig / network-scripts / ifcfg-br0

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

/ etc / sysconfig / network-scripts / ifcfg-br1

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

Mise à jour 1

  • Ajouté /etc/sysctl.conf
  • Supprimé ip de ifcfg-br0. L'hôte ne doit pas être accessible depuis Internet, uniquement depuis admin net.

* Mise à jour 2 *

  • Changements supprimés dans /etc/sysctl.conf. Il n'est pas nécessaire d'activer iptables.

Pas sûr de CentOS 6, mais sur Fedora, le module de binding n'est pas ajouté au kernel Linux par défaut et, par conséquent, vous devez créer un file /etc/modprobe.d/bonding.conf avec du contenu

 alias bond0 bonding 

Redémarrez, et vous devriez voir le module de binding chargé pendant le démarrage.

Puisque vous avez deux interfaces liées, vous devrez peut-être append une autre ligne d'alias pour bond1. Cependant, je n'ai jamais essayé cela.

Suggérez-vous d'avoir un travail, puis vous inquiétez de la mise en place de la seconde.

Autre problème que vous avez soulevé au sujet du pont, d'autres points à noter, ces configurations fonctionnent avec le démon réseau, mais je ne crois pas qu'ils travaillent avec NetworkManager . Diorez-vous le réseau ou le démon NetworkManager?

Et enfin, il existe différentes façons de configurer netfilter pour gérer les interfaces pontées. Au less sur Fedora 12+, la valeur par défaut est de désactiver netfilter sur les ponts. Cependant, vous pouvez modifier cela en modifiant /etc/sysctl.conf et en configurant

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

Faites de même pour arp et ipv6 et dans ce file, vous devez également configurer

 net.ipv4.ip_forward=1 

Rincez votre string FORWARD et remplacez-la par une règle iptables

 iptables -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT 
  1. la transmission vers iptables fonctionnera, mais pour quoi? Cela créera certainement des frais généraux supplémentaires
  2. le schéma de réseau semble correct, mais j'essayerais d'utiliser le mode d'utilisation du mode 4 au lieu de 1 pour être sûr et d'agréger le trafic
  3. n'ayant pas d'adresses IP sur br0 et br1, avez-vous d'autres NIC auxquels vous pouvez accéder? Vous ne voulez vraiment pas vous enfermer (sauf si vous avez également un iLO bien sûr)
  4. le message du kernel que vous avez posté est habituellement lié à l'utilisation de modes de binding incompatibles avec les ponts (0 et 6). Pouvez-vous vous assurer que vous êtes en mode-1 (/ proc / net / bonding / …) contient généralement une indication
  5. le renvoi entre les sous-réseaux ne devrait pas se produire sans une configuration spécifique, cependant, le kernel des hôtes devrait être en mesure de déterminer quel package est destiné où, en br0 et br1 sont sur des sous-réseaux différents, donc une VM sur br0 devrait pouvoir parler sur le réseau br0 , et si vous voulez qu'il soit en mesure de communiquer sur br1, ajoutez une autre NIC virtuelle et joignez-la là-bas