Introduction
Dans ce laboratoire, vous apprendrez comment implémenter l'agrégation de liens (Link Aggregation), également connue sous le nom de "port bonding", dans un environnement Linux. Cette technique puissante permet de combiner plusieurs interfaces réseau physiques en une seule interface logique, ce qui peut augmenter le débit réseau et offrir une tolérance aux pannes. Vous acquerrez une expérience pratique avec les commandes réseau Linux essentielles pour configurer et gérer une connexion agrégée.
En suivant un processus étape par étape, vous identifierez d'abord les interfaces réseau disponibles sur votre système à l'aide de la commande ip a. Pour une démonstration sûre et pratique, nous créerons deux interfaces virtuelles "dummy" (factices), dummy1 et dummy2, pour simuler un environnement multi-interfaces. Vous créerez ensuite une nouvelle interface de liaison virtuelle, bond0, et y asservirez ces deux interfaces dummy. Par la suite, vous attribuerez une adresse IP statique à l'interface bond0 nouvellement créée pour permettre la communication. Enfin, vous vérifierez la configuration complète et contrôlerez l'état de la liaison active pour vous assurer qu'elle fonctionne correctement.
Identifier les interfaces réseau disponibles avec ip a
Dans cette étape, vous commencerez par identifier les interfaces réseau disponibles sur votre VM LabEx. Avant de pouvoir combiner plusieurs interfaces réseau en une seule liaison agrégée (bonded link), vous devez d'abord connaître leurs noms. La commande moderne et préférée pour cette tâche sous Linux est ip a (un raccourci pour ip addr show).
Cette commande affiche toutes les interfaces réseau du système, ainsi que leurs adresses IP, leurs adresses MAC et leur état opérationnel.
Tout d'abord, ouvrez votre terminal. Il devrait déjà être ouvert et dans le répertoire ~/project. Exécutez maintenant la commande ip a pour lister toutes les interfaces réseau :
ip a
Vous verrez une sortie listant plusieurs interfaces. Vous devrez prêter attention à quelques détails clés :
lo: Il s'agit de l'interface de bouclage (loopback), une interface virtuelle permettant au système de communiquer avec lui-même. Vous l'ignorerez pour l'agrégation.eth0: Il s'agit de l'interface Ethernet principale. Nous ne l'utiliserons pas afin de garantir la stabilité de notre connexion à l'environnement du laboratoire.docker0: Il s'agit d'un pont virtuel créé par Docker. Il est actuellementDOWN(inactif) et ne convient pas à ce laboratoire.dummy1,dummy2: Ce sont deux interfaces virtuelles factices que nous avons ajoutées pour simuler deux cartes réseau supplémentaires pour ce laboratoire. Ce seront les interfaces que nous allons agréger ensemble.state UP: Cela indique que l'interface est active.
Votre sortie ressemblera à ceci. Notez les noms de vos interfaces factices, dummy1 et dummy2, car vous en aurez besoin dans les étapes suivantes.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:16:3e:00:20:a3 brd ff:ff:ff:ff:ff:ff
altname enp0s5
altname ens5
inet 172.16.50.188/24 metric 100 brd 172.16.50.255 scope global dynamic eth0
valid_lft 1892159680sec preferred_lft 1892159680sec
inet6 fe80::216:3eff:fe00:20a3/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:2c:eb:c9:91 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
4: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 2a:47:04:07:1a:ea brd ff:ff:ff:ff:ff:ff
inet6 fe80::5caf:4ff:fe97:69bd/64 scope link
valid_lft forever preferred_lft forever
5: dummy2: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 2e:5f:12:08:3a:eb brd ff:ff:ff:ff:ff:ff
inet6 fe80::5caf:4ff:fe97:69be/64 scope link
valid_lft forever preferred_lft forever
D'après la sortie ci-dessus, nous avons identifié deux interfaces appropriées pour notre configuration d'agrégation : dummy1 et dummy2. Dans les étapes suivantes, vous utiliserez ces noms d'interface pour créer une nouvelle interface agrégée.
Créer et activer l'interface Bond 'bond0'
Dans cette étape, vous allez créer l'interface logique "bond" qui servira de maître pour vos cartes réseau. Cela nécessite deux actions principales : le chargement du module du noyau Linux nécessaire pour l'agrégation et la création et l'activation de l'interface elle-même.
Tout d'abord, vous devez vous assurer que le module du noyau bonding est chargé. Ce module contient le code qui permet au noyau de gérer les interfaces agrégées. Vous pouvez le charger à l'aide de la commande modprobe.
sudo modprobe bonding
Pour confirmer que le module a été chargé avec succès, vous pouvez utiliser la commande lsmod, qui liste tous les modules du noyau chargés, et grep pour filtrer sur "bonding".
lsmod | grep bonding
Vous devriez voir une sortie indiquant que le module bonding est maintenant en cours d'utilisation :
bonding 196608 0
Maintenant que le noyau est prêt, vous pouvez créer la nouvelle interface logique. Nous l'appellerons bond0. Utilisez la commande ip link pour ajouter un nouveau lien virtuel de type bond.
sudo ip link add bond0 type bond
Cette commande crée l'interface, mais elle est par défaut dans un état "down" (inactif). Vous devez la mettre "up" (actif) pour la rendre opérationnelle, de manière similaire à l'activation d'une carte réseau physique.
sudo ip link set dev bond0 up
Vous pouvez maintenant vérifier que votre nouvelle interface bond0 existe et est active en utilisant à nouveau la commande ip a, mais en spécifiant cette fois le nom de l'interface.
ip a show bond0
La sortie affichera l'interface bond0 avec son état DOWN et sans adresse IP pour le moment. Celle-ci sera configurée dans une étape ultérieure.
6: bond0: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
Vous avez maintenant créé et activé avec succès l'interface maître bond0. L'étape suivante consiste à y ajouter vos interfaces factices en tant qu'esclaves.
Ajouter les interfaces comme esclaves à 'bond0'
Dans cette étape, vous allez "asservir" les interfaces virtuelles que vous avez identifiées précédemment (dummy1 et dummy2) à l'interface maître bond0. "Asservir" une interface signifie la placer sous le contrôle de l'interface agrégée. Une fois asservie, l'interface physique n'a plus besoin de sa propre adresse IP ; tout le trafic sera géré via bond0.
Cette approche consistant à utiliser des interfaces factices est totalement sûre et vous permet d'apprendre le processus d'agrégation sans aucun risque de perdre la connectivité réseau.
Tout d'abord, ajoutez l'interface dummy1 au bond. Vous devez la désactiver avant de l'ajouter en tant qu'esclave.
sudo ip link set dev dummy1 down
sudo ip link set dev dummy1 master bond0
Ensuite, faites de même pour l'interface dummy2.
sudo ip link set dev dummy2 down
sudo ip link set dev dummy2 master bond0
Maintenant, activons l'interface bond et attribuons-lui une adresse IP. Nous utiliserons un sous-réseau différent pour éviter les conflits avec la configuration existante de eth0 :
sudo ip addr add 192.168.100.10/24 dev bond0
sudo ip link set dev bond0 up
Vérifions que dummy1 et dummy2 sont maintenant asservies à bond0 :
ip a
Examinez les entrées pour dummy1, dummy2 et bond0 dans la sortie. Vous verrez dummy1 et dummy2 listées avec master bond0 dans leurs descriptions, confirmant qu'elles sont bien asservies. Notez également que l'interface bond0 est maintenant UP et possède l'adresse IP que nous lui avons attribuée.
4: dummy1: <BROADCAST,NOARP,SLAVE,UP,LOWER_UP> mtu 1500 qdisc noqueue master bond0 state UP group default qlen 1000
link/ether 2a:47:04:07:1a:ea brd ff:ff:ff:ff:ff:ff
5: dummy2: <BROADCAST,NOARP,SLAVE,UP,LOWER_UP> mtu 1500 qdisc noqueue master bond0 state UP group default qlen 1000
link/ether 2e:5f:12:08:3a:eb brd ff:ff:ff:ff:ff:ff
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 2a:47:04:07:1a:ea brd ff:ff:ff:ff:ff:ff
inet 192.168.100.10/24 scope global bond0
valid_lft forever preferred_lft forever
inet6 fe80::2847:4ff:fe07:1aea/64 scope link
valid_lft forever preferred_lft forever
Les interfaces agissant maintenant comme esclaves, l'étape suivante consiste à configurer les paramètres réseau de l'interface bond0 elle-même.
Tester la connectivité de l'interface Bond
Dans cette étape, vous allez tester l'interface bond pour vous assurer qu'elle fonctionne correctement. Puisque nous avons créé un bond fonctionnel avec deux interfaces factices et lui avons attribué une adresse IP, nous pouvons maintenant tester sa fonctionnalité de base.
Tout d'abord, vérifions que l'interface bond est active et possède la bonne adresse IP :
ip a show bond0
Vous devriez voir l'interface bond0 avec l'adresse IP que nous avons attribuée (192.168.100.10/24) et l'état de l'interface devrait indiquer UP :
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 2a:47:04:07:1a:ea brd ff:ff:ff:ff:ff:ff
inet 192.168.100.10/24 scope global bond0
valid_lft forever preferred_lft forever
Testons maintenant l'interface bond en pingant sa propre adresse IP pour vérifier que l'interface répond :
ping -c 3 192.168.100.10
Vous devriez voir des réponses de ping réussies, confirmant que l'interface bond fonctionne.
Vérifions également que nos interfaces esclaves sont correctement attachées au bond :
ip a | grep "master bond0"
Cette commande vous montrera les interfaces qui sont asservies à bond0. Vous devriez voir dummy1 et dummy2 listées :
4: dummy1: <BROADCAST,NOARP,SLAVE,UP,LOWER_UP> mtu 1500 qdisc noqueue master bond0 state UP group default qlen 1000
5: dummy2: <BROADCAST,NOARP,SLAVE,UP,LOWER_UP> mtu 1500 qdisc noqueue master bond0 state UP group default qlen 1000
Pour une vérification supplémentaire, vérifions si l'interface bond apparaît dans la table de routage :
ip route | grep bond0
Vous devriez voir des entrées de routage pour le réseau 192.168.100.0/24 via l'interface bond0.
Note pédagogique : Cette configuration démontre parfaitement les concepts fondamentaux de l'agrégation de liens (bonding). Dans un environnement de production avec plusieurs interfaces physiques, vous verriez un équilibrage de charge du trafic réseau et une redondance basés sur le mode d'agrégation que vous choisissez.
Vérifier le statut du Bond avec cat /proc/net/bonding/bond0
Dans cette dernière étape, vous effectuerez la vérification la plus détaillée en inspectant directement le fichier de statut du bond. Le noyau Linux expose des informations en temps réel sur chaque interface agrégée via un fichier spécial dans le système de fichiers /proc. Pour une interface nommée bond0, ce fichier se trouve à /proc/net/bonding/bond0.
En utilisant la commande cat pour afficher ce fichier, vous obtiendrez un aperçu complet de la configuration du bond, y compris son mode, le statut de ses interfaces esclaves et les compteurs de trafic.
Dans votre terminal, exécutez la commande suivante :
cat /proc/net/bonding/bond0
Cela affichera un rapport détaillé. La sortie ressemblera à ce qui suit, montrant maintenant deux interfaces esclaves :
Ethernet Channel Bonding Driver: vX.X.X (Month Day, Year)
Bonding Mode: load balancing (round-robin)
Primary Slave: None
Currently Active Slave: dummy1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0
Slave Interface: dummy1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 2a:47:04:07:1a:ea
Slave queue ID: 0
Slave Interface: dummy2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 2e:5f:12:08:3a:eb
Slave queue ID: 0
Analysons les informations clés de cette sortie :
- Bonding Mode (Mode d'agrégation) : Ceci indique la politique utilisée pour distribuer le trafic. Comme nous n'en avons pas spécifié, il utilise par défaut
load balancing (round-robin)(équilibrage de charge en tour de rôle), qui transmet les paquets en séquence sur les esclaves disponibles. - MII Status (Statut MII) : Ceci indique le statut global du lien agrégé.
upsignifie qu'il est actif. - Slave Interface (Interface Esclave) : Vous pouvez voir une section pour
dummy1etdummy2. Elles indiquent toutes deux unMII Statusdeup, confirmant qu'elles sont actives et font partie du bond. Notez queSpeed(Vitesse) etDuplex(Duplex) peuvent apparaître commeUnknown(Inconnu) ou une valeur par défaut pour les interfaces factices.
Félicitations ! Vous avez configuré avec succès une interface réseau agrégée (bonded) sous Linux, combinant deux interfaces factices en une seule interface logique.
Résumé
Dans ce laboratoire, vous avez appris les concepts fondamentaux de la mise en œuvre de l'agrégation de liens (port bonding) dans un environnement Linux. La procédure a commencé par l'identification des interfaces réseau disponibles, y compris deux interfaces virtuelles pré-configurées, dummy1 et dummy2, à l'aide de la commande ip a. Après identification, vous avez créé une nouvelle interface de bond virtuelle nommée bond0, l'avez activée, puis ajouté les deux interfaces factices comme esclaves pour démontrer le processus complet d'agrégation.
Cette approche a fourni un moyen totalement sûr et efficace d'apprendre les concepts de l'agrégation de liens dans un environnement distant sans risquer de perte de connectivité.
Les points clés appris comprenaient :
- La création de deux interfaces factices pour simuler un environnement multi-interfaces.
- Le chargement du module noyau
bonding. - La compréhension de la relation maître-esclave dans l'agrégation de liens réseau.
- L'asservissement de plusieurs interfaces à un seul maître de bond.
- L'attribution sécurisée d'adresses IP aux interfaces de bond.
- La vérification de la configuration et du statut finaux du bond.
Le laboratoire s'est conclu par l'examen du statut détaillé du bond à l'aide de cat /proc/net/bonding/bond0, qui fournit des informations complètes sur la configuration du bond, son mode et le statut de toutes ses interfaces esclaves. Cette étape de vérification est essentielle dans les scénarios réels pour confirmer que la configuration de l'agrégation fonctionne comme prévu.



