Le Bonding réseau permet de grouper deux interfaces réseau physiques ou plus pour créer une interface logique. Permettant ainsi de basculer d’une interface à une autre en cas de panne. C’est ce qu’on appel le le failover.
Dans cette article nous allons voir comment configurer le bonding réseau sur Rocky Linux 9.
Pourquoi le bonding réseau?
Imaginez que vous avez un serveur Linux connecté à un switch avec un seul câble réseau comme illustrer ci-dessous :
Si un souci a eu lieu au niveau du câble, la connexion sera donc perdu au niveau du serveur. Le bonding permet d’éviter la déconnexion au serveur en cas d’un tel panne.
Pour cela il faut avoir au moins deux interface comme illustre l’image ci-dessous pour créer ce qu’on appelle la redondance :
Pour une meilleur redondance, il faut utiliser le bonding avec deux interfaces chaqu’un connecté à un switch différent comme illuste l’image ci-dessous.
Comme ça si un des switch est perdu ( ou le câblé vers le switch est déconecté) , la connexion vers le serveurs ne sera pas perdu.
Créer l’interface de bond
Dans cet article, j’utilise un serveur dont l’OS est Rocky Linux 8 avec deux interfaces réseau :
Premier chose à faire est de crée une interface bond. C’est l’interface logique qui va lier nos deux interfaces physique.
Pour créer un interface bond, taper la commande suivante :
# nmcli connection add type bond con-name "Bond" ifname bond01
Voir si l’interface a été bien créé :
Comme vous pouvez voir, l’interface bond a été bien créé.
Pour voir le détaille de l’interface avec la commande ci-dessous :
# nmcli connection show "Bond"
Changer le mode du bond
Le mode par défaut de l’interface Bond est balance-rr
:
[root@linux ~]# nmcli con sh Bond | grep bond.options
bond.options: mode=balance-rr
balance-rr
( balance-round robin ) est le mode par défaut de l’interface bond. Il permet de faire un load balancing entre les deux inteface.
Par contre ce n’est pas ce qu’on souhaite. Notre besoin est le basculement (Failove ) c’est à dire si une interface est down l’autre devient opérationnel. La connexion est donc assuré même si l’un des interfaces est down.
Ce mode est appelé active-backup
. Pour changer le mode taper la commande suivante :
# nmcli connection modify Bond bond.options "mode=active-backup"
Vérifiez si le changement a été bien pris en charge :
[root@linux ~]# nmcli con sh Bond | grep bond.options
bond.options: mode=active-backup
Ajouter les interfaces au bond
Maintenant nous devons ajouter les deux interfaces à l’interface bond créé.
Affichez d’abord les noms des deux interfaces :
les noms de nos deux interfaces dont ens33
et ens37
. Pour les ajouter à l’interface bond taper la commande nmcli suivante :
[root@linux ~]# nmcli connection add type ethernet slave-type bond con-name bond01-if1 ifname ens33 master bond01
Connection 'bond01-if1' (65796ebf-fcde-44c9-aa41-e8fb7e865661) successfully added.
[root@linux ~]# nmcli connection add type ethernet slave-type bond con-name bond01-if2 ifname ens37 master bond01
Connection 'bond01-if2' (ff6edf70-53a6-4192-8877-b76ec511dbc1) successfully added.
Ensuite afficher les intrerfaces bond créé :
[root@linux ~]# nmcli dev
DEVICE TYPE STATE CONNECTION
ens33 ethernet connected ens33
bond01 bond connected Bond
ens37 ethernet connected bond01-if2
lo loopback connected (externally) lo
Assigner une adresse ip à l’interface bond
Pour cela taper la commande suivante :
[root@linux ~]# nmcli connection modify "Bond" ipv4.addresses '192.168.139.150/24'
[root@linux ~]# nmcli connection modify "Bond" ipv4.method manual
Vérifier si l’adresse a été bien assignée à l’interface Bond
:
[root@linux ~]# ip a s bond01
5: bond01: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether d2:c3:4e:f5:55:1b brd ff:ff:ff:ff:ff:ff
inet 192.168.139.150/24 brd 192.168.139.255 scope global noprefixroute bond01
valid_lft forever preferred_lft forever
Vu que nous somme connecté via ssh avec l’adresse de l’interface ens33, redémarrez le serveur pour que la configuration du bond soit prise en charge.
Une fois redémarré, je vais me connecter cette fois avec l’adresse IP de l’interface du bond ( à savoir l’adresse ip 192.168.139.150 ) :
Pour voir l’état du bonding taper la commande suivante :
[root@linux ~]# cat /proc/net/bonding/bond01
Ethernet Channel Bonding Driver: v5.14.0-427.31.1.el9_4.x86_64
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: ens33
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0
Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 3
Permanent HW addr: 00:0c:29:e0:24:5f
Slave queue ID: 0
Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 2
Permanent HW addr: 00:0c:29:e0:24:69
Slave queue ID: 0
Comme vous pouvez le voir, la commande affiche le détaille du bonding, y compris l’état des deux interface.
Supprimer l’interface de Bond
Pour supprimer l’interface du Bond, il faut d’abord supprimer les liens d’interface qui lui sont connectés, dans notre cas il s’agit de bond01-if1
et bond01-if2
.
Ainsi utilisez les deux commandes :
# mcli connection delete bond01-if1
# mcli connection delete bond01-if2
Ensuite utilisez la commande suivante pour vérifier si les interfaces ont été déconnecté :
# nmcli device
DEVICE TYPE STATE CONNECTION
bond01 bond connected Bond
ens33 ethernet disconnected --
ens37 ethernet disconnected --
Après, désactivez l’interface bond avec la commande suivante :
# nmcli connection down "Bond01"
Ensuite désactivez-la :
# nmcli connection delete "Bond01"
nmap : les 12 commandes que vous devez connaître
Résoudre l’erreur : WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
Comment vérifier la version d’apache
Comment désactiver SElinux sur CentOS 7 et RHEL7
Fail2Ban : How to protect Linux services