GNU/Linux >> Tutoriels Linux >  >> Cent OS

CentOS / RHEL 7 :Comment créer un Network Bonding (NIC teaming) en utilisant nmcli

Qu'est-ce que la liaison d'interface ?

La liaison (ou liaison de canaux) est une technologie activée par le noyau Linux et Red Hat Enterprise Linux, qui permet aux administrateurs de combiner deux ou plusieurs interfaces réseau pour former une seule interface logique « liée » pour la redondance ou un débit accru. Le comportement des interfaces liées dépend du mode; d'une manière générale, les modes fournissent des services de secours automatique ou d'équilibrage de charge. De plus, ils peuvent fournir une surveillance de l'intégrité des liens.

Pourquoi utiliser la liaison d'interface ?

Les deux raisons importantes pour créer une liaison d'interface sont :
1. Pour fournir une bande passante accrue
2. Pour assurer la redondance face à une panne matérielle

L'une des conditions préalables pour configurer une liaison est d'avoir le commutateur réseau qui prend en charge EtherChannel (ce qui est vrai dans le cas de presque tous les commutateurs).

Modes de liaison

Selon vos besoins, vous pouvez définir le mode de liaison sur l'un des 7 modes ci-dessous.

Mode Politique Comment ça marche Tolérance aux pannes Équilibrage de charge
0 Tournoi à la ronde les paquets sont séquentiellement transmis/reçus via chaque interface une par une. Oui Oui
1 Sauvegarde active une carte réseau active pendant qu'une autre carte réseau est endormie. Si la carte réseau active tombe en panne, une autre carte réseau devient active. pris en charge uniquement dans les environnements x86. Oui Non
2 XOR [OU exclusif] Dans ce mode, l'adresse MAC du NIC esclave est comparée au MAC de la demande entrante et une fois cette connexion établie, le même NIC est utilisé pour transmettre/recevoir pour le MAC de destination. Oui Oui
3 Diffusion Toutes les transmissions sont envoyées sur tous les esclaves Oui Non
4 Agrégation de liens dynamiques les cartes réseau agrégées agissent comme une seule carte réseau, ce qui se traduit par un débit plus élevé, mais fournit également un basculement en cas de défaillance d'une carte réseau. L'agrégation de liens dynamiques nécessite un commutateur prenant en charge IEEE 802.3ad. Oui Oui
5 Équilibrage de charge de transmission (TLB) Le trafic sortant est distribué en fonction de la charge actuelle sur chaque interface esclave. Le trafic entrant est reçu par l'esclave actuel. Si l'esclave récepteur tombe en panne, un autre esclave reprend l'adresse MAC de l'esclave défaillant. Oui Oui
6 Équilibrage de charge adaptatif (ALB) Contrairement à l'agrégation de liens dynamiques, l'équilibrage de charge adaptatif ne nécessite aucune configuration de commutateur particulière. L'équilibrage de charge adaptatif n'est pris en charge que dans les environnements x86. Les paquets de réception sont équilibrés en charge via la négociation ARP. Oui Oui

Création de la liaison réseau à l'aide de nmcli

1. Création de l'interface de liaison

1. Utilisez la commande nmcli connection sans aucun argument pour afficher les connexions réseau existantes. Vous pouvez raccourcir la "connexion ” argument à “contre “. Exemple :

# nmcli connection 
NAME                UUID                                  TYPE            DEVICE 
ens33               59b61d18-90ed-4c3c-97e0-6c9e0528f25f  802-3-ethernet  ens33  
ens37               c09f18e1-793b-4d60-9107-98762cf593a7  802-3-ethernet  ens37

2. Inclure le "ajouter un lien de type ” arguments et toute information supplémentaire pour créer une connexion de liaison réseau. L'exemple suivant crée une interface liée nommée bond0, définit l'interface comme bond0, définit le mode sur "active-backup ", et attribue une adresse IP à l'interface liée.

# nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ip4 192.168.219.150/24
Connection 'bond0' (1a75eef0-f2c9-417d-81a0-fabab4a1531c) successfully added.

La commande nmcli con affiche la nouvelle connexion de liaison.

# nmcli connection 
NAME                UUID                                  TYPE            DEVICE 
bond0               1a75eef0-f2c9-417d-81a0-fabab4a1531c  bond            bond0  
ens33               59b61d18-90ed-4c3c-97e0-6c9e0528f25f  802-3-ethernet  ens33  
ens37               c09f18e1-793b-4d60-9107-98762cf593a7  802-3-ethernet  ens37

3. La commande "nmcli con add type bond" crée un fichier de configuration d'interface dans /etc/sysconfig/network-scripts annuaire. Par exemple :

# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BONDING_OPTS=mode=active-backup
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=none
IPADDR=192.168.219.150
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=bond0
UUID=1a75eef0-f2c9-417d-81a0-fabab4a1531c
ONBOOT=yes

4. La commande ip addr affiche la nouvelle interface bond0 :

# ip addr show bond0
5: bond0: [BROADCAST,MULTICAST,MASTER,UP] mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.219.150/24 brd 192.168.219.255 scope global bond0
       valid_lft forever preferred_lft forever

2. Création des interfaces esclaves

1. Pour chaque interface que vous souhaitez lier, utilisez le 'nmcli con add type bond-slave ' commande. L'exemple suivant ajoute le ens33 interface en tant qu'esclave de liaison. La commande n'inclut pas l'argument con-name donc un nom est automatiquement généré. Vous pouvez définir le nom des interfaces esclaves avec l'argument con-name.

# nmcli con add type bond-slave ifname ens33 master bond0
Connection 'bond-slave-ens33' (79c40960-6b2c-47ba-a417-988332affed1) successfully added.

2. L'exemple suivant ajoute le ens37 interface en tant que "bond-slave ".

# nmcli con add type bond-slave ifname ens37 master bond0
Connection 'bond-slave-ens37' (46222a52-f2ae-4732-bf06-ef760aea0d7b) successfully added.

3. La commande nmcli con affiche les nouvelles connexions.

# nmcli connection 
NAME                UUID                                  TYPE            DEVICE 
bond0               1a75eef0-f2c9-417d-81a0-fabab4a1531c  bond            bond0  
ens33               59b61d18-90ed-4c3c-97e0-6c9e0528f25f  802-3-ethernet  ens33  
ens37               c09f18e1-793b-4d60-9107-98762cf593a7  802-3-ethernet  ens37  
bond-slave-ens33    79c40960-6b2c-47ba-a417-988332affed1  802-3-ethernet  --     
bond-slave-ens37    46222a52-f2ae-4732-bf06-ef760aea0d7b  802-3-ethernet  --   

4. Les commandes nmcli con add type bond-slave créent des fichiers de configuration d'interface dans /etc/sysconfig/network-scripts annuaire. Par exemple :

# cat /etc/sysconfig/network-scripts/ifcfg-bond-slave-ens33
TYPE=Ethernet
NAME=bond-slave-ens33
UUID=79c40960-6b2c-47ba-a417-988332affed1
DEVICE=ens33
ONBOOT=yes
MASTER=bond0
SLAVE=yes
# cat /etc/sysconfig/network-scripts/ifcfg-bond-slave-ens37
TYPE=Ethernet
NAME=bond-slave-ens37
UUID=46222a52-f2ae-4732-bf06-ef760aea0d7b
DEVICE=ens37
ONBOOT=yes
MASTER=bond0
SLAVE=yes

5. La commande ip addr inclut "SLAVE " pour les interfaces ens33 et ens37 et inclut également "master bond0 ".

3. Activer le lien

1. Vous pouvez utiliser la commande nmcli pour afficher les connexions. Affichez d'abord les esclaves, puis affichez l'interface de liaison. Les commandes suivantes font apparaître les esclaves :

# nmcli connection up bond-slave-ens33
# nmcli connection up bond-slave-ens37

2. La commande suivante affiche l'interface bond0 :

# nmcli con up bond0

3. La commande ip addr, ou la commande ip link, affiche maintenant l'esclave et les interfaces de liaison qui sont UP.

# ip link
2: ens33: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff
3: ens37: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff
4: bond0: [BROADCAST,MULTICAST,MASTER,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff

Affichage des informations de liaison réseau

1. Chaque interface réseau contient un répertoire dans le répertoire /sys/class/net. Par exemple :

# ls /sys/class/net
bond0  bonding_masters  ens33  ens36  ens37  lo

2. Dans cet exemple, une liaison réseau nommée « bond0 » existe. Un répertoire du même nom existe et contient des informations de configuration pour cette liaison. Par exemple :

# ls /sys/class/net/bond0
addr_assign_type  bonding    carrier_changes  dormant  gro_flush_timeout  iflink       lower_ens37   operstate     queues      subsystem     uevent
address           broadcast  dev_id           duplex   ifalias            link_mode    mtu           phys_port_id  speed       tx_queue_len
addr_len          carrier    dev_port         flags    ifindex            lower_ens33  netdev_group  power         statistics  type

3. Dans ce répertoire se trouve un répertoire de liaison qui contient des informations pour l'interface bond0. Par exemple :

# ls /sys/class/net/bond0/bonding
active_slave       ad_aggregator   ad_select          arp_interval   fail_over_mac  mii_status    num_unsol_na       queue_id        updelay
ad_actor_key       ad_num_ports    ad_user_port_key   arp_ip_target  lacp_rate      min_links     packets_per_slave  resend_igmp     use_carrier
ad_actor_sys_prio  ad_partner_key  all_slaves_active  arp_validate   lp_interval    mode          primary            slaves          xmit_hash_policy
ad_actor_system    ad_partner_mac  arp_all_targets    downdelay      miimon         num_grat_arp  primary_reselect   tlb_dynamic_lb

4. Il existe également des répertoires qui contiennent des informations pour chacun des esclaves. Par exemple :

# ls /sys/class/net/bond0/lower_ens33
addr_assign_type  bonding_slave  carrier_changes  dev_port  flags              ifindex    master        operstate     queues      subsystem     uevent
address           broadcast      device           dormant   gro_flush_timeout  iflink     mtu           phys_port_id  speed       tx_queue_len  upper_bond0
addr_len          carrier        dev_id           duplex    ifalias            link_mode  netdev_group  power         statistics  type

5. Voici quelques exemples d'affichage de fichiers dans le répertoire /sys/class/net.

# cat /sys/class/net/bonding_masters
bond0
# cat /sys/class/net/bond0/operstate
up
# cat /sys/class/net/bond0/address
00:0c:29:54:f7:20
# cat /sys/class/net/bond0/bonding/active_slave
ens33
# cat /sys/class/net/bond0/bonding/mode
active-backup 1
# cat /sys/class/net/bond0/bonding/slaves
ens33 ens37

6. Voici un exemple d'affichage du fichier /proc/net/bonding/bond0.

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

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

Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:54:f7:20
Slave queue ID: 0

Slave Interface: ens37
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:54:f7:34
Slave queue ID: 0

Comment désactiver IPv4 ou IPv6 sur une interface liée

Ces étapes ne sont nécessaires que si bond1 n'utilise pas d'adresse ipv4 ou ipv6

# nmcli connection modify bond1 ipv4.method disabled

et/ou

# nmcli connection modify bond1 ipv6.method ignore


Cent OS
  1. Comment attribuer plusieurs adresses IP à une seule interface réseau sur CentOS 8

  2. CentOS / RHEL 7 :Comment modifier les noms d'interface réseau

  3. CentOS / RHEL 5 :Comment configurer la liaison d'interface (association de cartes réseau)

  4. CentOS / RHEL 4 :Comment configurer la liaison d'interface (NIC teaming)

  5. Comment configurer l'association réseau dans CentOS/RHEL 7

Comment configurer la liaison d'interface réseau sur RHEL 8 / CentOS 8 Linux

Configurer la liaison NIC (carte d'interface réseau) dans CentOS 7/RHEL 7

Comment configurer l'association de cartes réseau sur CentOS 8 / RHEL 8

Comment configurer les interfaces réseau à l'aide de NMCLI sur Centos 7.6

Comment gérer le réseau à l'aide de l'outil nmcli dans RedHat/CentOS 7

Comment changer le nom de l'interface réseau en eth0 sur CentOS 8 / RHEL 8