Bonding réseau
Linux

Configurer le bonding réseau avec nmcli sous Linux

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 :

bonding

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 :

bonding

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 :

bond

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éé :

Bonding

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"
bonding

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 ) :

bond

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"

Laisser un commentaire

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