04/12/2025

Commandes et Système

Linux : comment créer un Bonding réseau sous Ubuntu ?

I. Présentation

Dans ce tutoriel, nous allons apprendre à configurer une agrégation de liens réseau, souvent appelée bonding réseau, sur un système Linux sous Ubuntu. Cette technique permet de combiner plusieurs interfaces réseau physiques en une seule interface logique, apportant ainsi de la redondance (tolérance de panne) ou une amélioration des performances réseau (répartition de la charge).

Le bonding est très utile sur les infrastructures en production pour bénéficier d'une meilleure bande-passante réseau sur un serveur. Mais, ce n'est pas tout, puisque cette technique permet aussi d'assurer la continuité de la connectivité réseau : en cas de perte d'un lien, le second lien continue de fonctionner (ou prend le relais) pour assurer la connectivité réseau.

Par exemple, un serveur avec 2 interfaces réseau 1 Gbit/s en Bonding, peut bénéficier d'une bande-passante de 2 Gbit/s en exploitant les deux interfaces simultanément (actif/actif). Plusieurs modes de configuration sont pris en charge comme nous le verrons par la suite.

Ubuntu, comme d'autres distributions Linux, fournit tous les outils nécessaires pour mettre en place cette configuration. Dans le cas d'Ubuntu, nous devrons effectuer la configuration du Bonding avec Netplan. Cet outil est aussi utilisé par Ubuntu pour la configuration réseau de base de la machine (adressage IP). Ce tutoriel s'applique aussi à la configuration du Bonding sous Debian, à partir du moment où Netplan est utilisé.

II. Les différents modes de bonding

Le bonding réseau supporte plusieurs modes, certains en mode actif/actif, d'autres en mode actif/passif, certains indépendants du commutateur, d'autres nécessitant la configuration du protocole LACP (802.3ad). Le choix du mode dépend de votre objectif : redondance, performance, ou les deux.

Voici quelques modes courants :

  • mode 0 (Round Robin) : répartit les paquets de manière circulaire entre les interfaces, via le mode baptisé Round Robin. Ce mode améliore la tolérance aux pannes et l'équilibrage de charge.
  • mode 1 (active-backup) : une interface est active, l’autre prend le relais en cas de panne.
  • mode 2 (balance XOR) : sélection de l’interface selon une opération XOR sur l’adresse MAC.
  • mode 4 (802.3ad) : agrégation dynamique via le protocole LACP (Link Aggregation Control Protocol). Nécessite une configuration adéquate du switch.
  • mode 5 (balance TLB) : équilibrage de charge à la transmission uniquement, c'est-à-dire sur le trafic sortant, en fonction de la charge des interfaces (TLB = Transmit Load Balancing).
  • mode 6 (balance ALB) : équilibrage de charge à la transmission et à la réception (ALB = Adaptive Load Balancing).

Suite à cette présentation synthétique des différents modes de Bonding réseau, passons à la mise en place !

III. Préparation du système

Avant de configurer le bonding, nous devons nous assurer que notre système est prêt pour accomplir cette tâche. Tout d'abord, même si cela peut sembler logique, vous devez disposer d'au moins 2 interfaces réseau physiques (ou virtuelles, si vous effectuez vos tests avec de la virtualisation). Ces interfaces seront attribuées au Bonding, c'est-à-dire qu'elles ne doivent pas être en cours d’utilisation dans une autre configuration réseau.

Nous allons commencer par identifier les interfaces disponibles grâce à la commande suivante :

ip link show

Cela affichera la liste de toutes les interfaces réseau. Dans mon cas, cela me permet d'identifier le nom de mes 2 interfaces réseau : ens33 et ens34.

Vous pouvez aussi visualiser les IP actuelles de ces interfaces :

ip a

Ensuite, nous devons nous assurer que le module bonding est bien chargé dans le noyau Linux. Pour cela, nous utilisons la commande suivante :

lsmod | grep bond

Si cette commande ne retourne rien, c'est que le module n'est pas chargé. Dans ce cas, vous devez l'activer avec cette commande :

sudo modprobe bonding

Puis, relancez cette commande pour vérifier que le module a bien été chargé :

lsmod | grep bonding

Ce qui donne :

Si tout est en ordre, vous pouvez passer à la configuration bonding à l'aide de Netplan.

IV. Configuration de l'agrégation de liens

Depuis Ubuntu 18.04, le système Ubuntu utilise Netplan pour la gestion du réseau. De ce fait, nous allons modifier la configuration de Netplan pour déclarer notre interface de bonding et préciser qu'elle doit s'appuyer sur les interfaces réseau précédemment identifiées.

Dans cet exemple, nous allons créer une interface bond0 en mode active-backup. Pour rappel, ce mode signifie qu'une seule interface est active à la fois : la seconde interface est une interface de secours, elle sera automatiquement activée si l'interface principale tombe en panne.

Toujours à partir du terminal, ouvrez le fichier de configuration /etc/netplan/01-network-manager-all.yaml. Actuellement, ce fichier contient le contenu suivant :

 Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

Il s'agit du contenu du fichier Netplan sur une machine Ubuntu fraichement installée, avec les interfaces réseau en DHCP. Il est possible que vous ayez un contenu différent, notamment avec des adresses IP statiques.

Quoi qu'il en soit, nous allons de voir faire évoluer cette configuration. Éditez le fichier :

sudo nano /etc/netplan/01-network-manager-all.yaml

Utilisez une configuration similaire à celle-ci, avec un bloc bonds :

network:
  version: 2
  renderer: NetworkManager

  ethernets:
    ens33:
      dhcp4: no
    ens34:
      dhcp4: no

  bonds:
      bond0:
       interfaces: [ens33, ens34]
       addresses:
            - 192.168.14.130/24
       routes:
            - to: default
              via: 192.168.14.2
       parameters:
            mode: active-backup
            primary: ens33
            mii-monitor-interval: 100
       nameservers:
            addresses:
                - "192.168.14.2"

Quelques explications :

  • interfaces: [ens33, ens34] : liste des interfaces qui seront ajoutées au bond0.
  • mode : définit le mode du Bonding, ici active-backup.
  • mii-monitor-interval : définit l'intervalle de vérification de l’état des interfaces, en millisecondes.
  • primary : définit le nom de l'interface réseau primaire.

Dès que votre configuration est prête, sauvegardez et fermez le fichier. Vous devez appliquer la nouvelle configuration avec ces commandes :

sudo netplan apply
sudo systemctl restart systemd-networkd

# Afficher la configuration de Netplan
sudo netplan get

Ensuite, nous pouvons maintenant vérifier que le bonding est actif avec cette commande :

cat /proc/net/bonding/bond0

Ce fichier nous donne des informations détaillées sur l'état du lien, les interfaces membres et le mode actif. L'occasion de constater que nous sommes bien dans un mode actif/passif : l'interface ens33 est active, tandis que l'interface ens34 est en veille.

Vous pouvez aussi voir l'interface réseau bond0 sur votre machine. Elle dispose bien de l'adresse IP attendue. Les autres interfaces, quant à elles, n'ont plus leur adresse IP ! C'est un point important.

Maintenant que notre interface bonding est configurée, voyons si le basculement d'une interface à l'autre s'effectue correctement...

V. Vérification du basculement du Bonding

Il est important de s'assurer que tout fonctionne comme prévu. Étant donné que nous sommes en mode actif/backup (soit de l'actif/passif), si nous simulons une panne sur l'interface réseau active, l'interface réseau passive devrait prendre le relais automatiquement.

Nous pourrions déconnecter un câble réseau, éteindre le port sur le commutateur, ou tout simplement éteindre (down) l'interface réseau principale :

sudo ip link set ens33 down

Note : si vous effectuez le test en environnement virtuel, désactivez plutôt l'interface primaire dans les paramètres de la machine virtuelle.

Mais, avant de lancer la commande ci-dessus, depuis une autre machine, initiez un ping vers l'adresse IP du bond de votre serveur. Ceci vous permettra de voir si la coupure réseau est visible ou non !

Désormais, l'interface active est ens34 et nous pouvons voir que le compteur de liaison défaillante (Link Failure Count) est passé à 1 pour l'interface ens33. Lorsque l'interface ens33 sera de nouveau opérationnelle, elle reprendra sa place d'interface active.

VI. Conclusion

Nous avons vu comment configurer une agrégation de liens réseau (bonding) sous Ubuntu en utilisant Netplan. Nous avons mis en place une configuration indépendante de la configuration du commutateur, c'est-à-dire sans la mise en place du protocole LACP. Cette technique permet de renforcer la tolérance aux pannes ou d'améliorer la bande passante réseau sur votre serveur.

Si vous désirez effectuer la même configuration sur Windows Server, consultez ce chapitre de notre cours :

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.