web-dev-qa-db-fra.com

Bonding + Bridge: le trafic passant par la mauvaise interface

J'utilise le serveur Ubuntu 12.04 sur un serveur avec 6 cartes réseau, regroupées en 2 ensembles:

  • eth0 et eth2 sont regroupés en utilisant le mode de liaison 1, sous le nom d’interface bond0 qui a IP [réseau] .8
  • eth1, eth3, eth4 et eth5 sont regroupés en utilisant le mode de liaison 4 (802.3ad), sous le nom d'interface bond1

bond1 sera utilisé pour connecter des machines virtuelles à notre réseau: il est ponté via br0, qui a IP [réseau].

Maintenant, lorsque je lance un ping [réseau] .5 depuis notre réseau, tout semble fonctionner, mais nos ordinateurs virtuels n’ont pas d’accès réseau.

Après avoir fouillé pendant un moment, j'ai remarqué que l'adresse IP de br0 ([réseau] .5) est associée à l'adresse MAC de bond1, c'est-à-dire:

arping <[network].5>

résultats

Unicast reply from <[network].5> [<bond0's MAC address>]  0.710ms

Aussi, pendant que je cingle [réseau] .5:

tcpdump -i br0 icmp

N'affiche aucun trafic ICMP,

tcpdump -i bond1

pas de trafic non plus, mais

tcpdump -i bond0

montre les paquets ICMP que j'envoie en utilisant ping.

Il est assez évident que les paquets sont envoyés dans le mauvais tube. Ma question est la suivante: pourquoi et comment puis-je résoudre ce problème?

Voici le contenu de mon fichier/etc/network/interfaces:

# bond0 part :

auto eth0
    iface eth0 inet manual
    bond-master bond0

auto eth2
    iface eth2 inet manual
    bond-master bond0

auto bond0
    iface bond0 inet static
    address [network].8
    gateway [network].254
    netmask 255.255.254.0
    # bonding mode 1 :
    bond-mode balance-rr
    bond-slaves none

auto eth1
    iface eth1 inet manual
    bond-master bond1

auto eth3
    iface eth3 inet manual
    bond-master bond1

# bond1 and br0 part :

auto eth4
    iface eth4 inet manual
    bond-master bond1

auto eth5
    iface eth5 inet manual
    bond-master bond1

auto bond1
    iface bond1 inet manual
    # bonding mode 4 :
    bond-mode 802.3ad
    bond-slaves none
    bond-miimon 100
    bond-downdelay 200
    bond-updelay 200        
    bond_xmit_hash_policy layer2
    bond_lacp_rate fast

auto br0
    iface br0 inet static
    address [network].5
    netmask 255.255.254.0
    gateway [network].254
    bridge_ports bond1
    bridge_maxwait 5
    bridge_stp off
    bridge_fd 0

Veuillez noter que:

  • L'agrégation de liens 802.3ad a été configurée côté serveur
  • Nous avons vérifié plusieurs fois que les bons ports sont connectés
  • Le même problème se produit sur 2 serveurs avec exactement la même configuration matérielle + logicielle

[EDIT] Après plusieurs redémarrages, l'inverse se produit: bond0 est associé à l'adresse mac de bond1. Cela semble arriver au hasard. Les machines virtuelles situées derrière le pont ont alors accès à notre réseau et à Internet.

2
iodbh

Après plus de recherches, il apparaît que la racine de mon problème est ce qui est discuté ici:

Serverfault: les réponses arp sortent toujours d'une carte réseau sinle

Comme cette question est beaucoup plus précise et a plusieurs réponses, c’est là que vous devriez regarder si vous avez le même problème que moi

1
iodbh