La vinculación de la interfaz de red consiste en la agregación de dos o más interfaces de red físicas, denominadas slaves
. , bajo una interfaz lógica llamada master
o bond
interfaz. Según el modo de vinculación, dicha configuración puede ser útil para lograr la tolerancia a fallas y/o el equilibrio de carga. En este tutorial, aprenderemos cuáles son los modos de enlace disponibles y cómo crear un enlace de red en RHEL 8/CentOS 8.
Requisitos de software y convenciones de la línea de comandos de Linux Categoría | Requisitos, convenciones o versión de software utilizada |
Sistema | RHEL 8 / CentOS 8 |
Software | La utilidad nmtui para controlar el demonio NetworkManager. La aplicación está incluida en una instalación mínima del sistema. |
Otro | Privilegios de raíz para modificar la configuración del sistema |
Convenciones | # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios |
¿Qué modo de vinculación?
Básicamente, hay 7 modos de vinculación que podemos usar:
Ronda Robin
Los paquetes se distribuyen por igual, en orden secuencial, a todas las interfaces esclavas (desde la primera hasta la última). Este modo proporciona balanceo de carga y tolerancia a fallas, pero necesita soporte en los conmutadores.
Copia de seguridad activa
Solo se utiliza la interfaz esclava principal. Si falla, se utiliza otro esclavo en su lugar. Solo proporciona tolerancia a fallas; no hay requisitos especiales.
XOR (OR exclusivo)
Los paquetes se transmiten y asignan a una de las interfaces esclavas según el hash de las direcciones MAC de origen y destino, calculado con la siguiente fórmula:
[(source MAC address XOR’d with destination MAC address) modulo slave count]
Este modo proporciona tolerancia a fallas y equilibrio de carga.
Transmitir
Cuando se usa este modo, todos los paquetes se transmiten en todas las interfaces esclavas, lo que brinda tolerancia a fallas pero no equilibrio de carga.
802.3ad
Este modo utiliza la agregación de enlaces IEEE 802.3ad que debe ser compatible con los conmutadores. Crea grupos de agregación que comparten la misma configuración de velocidad y dúplex. Transmite y recibe en todos los esclavos del grupo activo. Proporciona balanceo de carga y tolerancia a fallas.
Equilibrio de carga de transmisión adaptable
Los paquetes salientes se transmiten a través de las interfaces esclavas según su carga, y el esclavo actual recibe el tráfico entrante. Si este último falla, otro esclavo se hace cargo de su dirección MAC. Este modo proporciona tolerancia a fallas y equilibrio de carga.
Equilibrio de carga adaptativo
Funciona como el Adaptive Transmit Load Balancing
, pero también proporciona inbound
equilibrio a través de ARP
(Protocolo de resolución de direcciones) negociación.
El medio ambiente
Por el bien de este tutorial, trabajaremos en un sistema Red Hat Enterprise Linux 8 virtualizado. Para crear nuestra vinculación de red trabajaremos con nmtui
, una utilidad de interfaz de usuario de texto utilizada para controlar el NetworkManager
demonio. Sin embargo, se pueden realizar las mismas operaciones con nmcli
utilidad de línea de comandos o a través de la GUI con el Network Manager Connection Editor
.
El sistema tiene actualmente dos ethernet
enlaces, enp1s0
y enp7s0
:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:cb:25:82 brd ff:ff:ff:ff:ff:ff
3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:32:37:9b brd ff:ff:ff:ff:ff:ff
Crear la vinculación de la red
En primer lugar, eliminaremos las configuraciones existentes actualmente para las interfaces esclavas. Esto no es estrictamente necesario, ya que podríamos editar dichas configuraciones en el lugar, pero para empezar de cero procederemos de esta manera. Invoquemos nmtui
:
$ sudo nmtui
Desde el menú principal seleccionamos “Editar una conexión” y confirmamos.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042507211003.png)
Menú principal de Nmtui.
Primero seleccionamos la conexión a eliminar en la lista, y luego pasamos a <Delete>
. Finalmente confirmamos:
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042507211090.png)
Lista de conexiones Nmtui.
Finalmente, confirmamos que queremos eliminar la conexión:
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042507211093.png)
Solicitud de confirmación de Nmtui para eliminar una conexión existente.
Repetimos la operación para la otra interfaz. Una vez eliminamos todas las configuraciones existentes, podemos crear el bond
interfaz. Seleccionamos <Add>
en el menú, y de la lista de tipos de conexión, elegimos Bond
:
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042507211115.png)
Menú de selección del tipo de conexión Nmtui.
Se abrirá una nueva ventana donde podremos configurar nuestra interfaz. En este caso, aunque sea totalmente opcional, usaré bond0
como el perfil y el nombre del dispositivo. Sin embargo, la parte más importante es la selección de las interfaces esclavas que se agregarán al enlace. En los BOND Slaves
menú, haga clic en <Add>
y seleccione el tipo de conexión esclava a agregar, en este caso ethernet
.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042507211148.png)
Menú Nmtui para seleccionar el tipo de conexión esclava.
Introduzca el nombre del dispositivo, seleccione <OK>
y confirma. La operación debe repetirse para cada una de las interfaces esclavas.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042507211137.png)
Interfaz Nmtui para editar la conexión esclava.
El siguiente paso es seleccionar el bonding mode
:por el bien de este tutorial, usaremos el Active Backup
uno. Seleccionamos la opción relacionada en el menú y en el campo "Principal" especificamos el nombre de la interfaz esclava primaria. Finalmente, solo seleccionamos <OK>
para confirmar la creación de la interfaz de enlace.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042507211106.png)
La configuración de enlace de red.
Ahora podemos salir de nmtui
solicitud. Para verificar que la creación de la vinculación fue exitosa, podemos lanzar el siguiente comando:
$ ip addr show bond0
El resultado es el siguiente:
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00:cb:25:82 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.164/24 brd 192.168.122.255 scope global dynamic noprefixroute bond0
valid_lft 3304sec preferred_lft 3304sec
inet6 fe80::48:d311:96c1:89dc/64 scope link noprefixroute
valid_lft forever preferred_lft forever
El ifcfg
los archivos de configuración relacionados con nuestra configuración se han generado dentro de /etc/sysconfig/network-scripts
directorio:
$ ls /etc/sysconfig/network-scripts
ifcfg-bond0 ifcfg-enp1s0 ifcfg-enp7s0
Para ver el estado actual del bond0
interfaz tal como la ve el kernel, podemos ejecutar:
$ cat /proc/net/bonding/bond0
El resultado del comando se informa a continuación:
Ethernet Channel Bonding Driver: v3.7.1 (April
27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: enp1s0 (primary_reselect always)
Currently Active Slave: enp1s0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: enp1s0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:cb:25:82
Slave queue ID: 0
Slave Interface: enp7s0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:32:37:9b
Slave queue ID: 0
Podemos ver cómo ambas interfaces esclavas están activas, pero solo enp1s0
está activo, ya que es el que se usa como esclavo principal.
Prueba de la copia de seguridad activa
¿Cómo podemos verificar que nuestra configuración funciona? Podemos desactivar la interfaz esclava principal y ver si la máquina aún responde a los pings. Para dejar la interfaz ejecutamos:
$ sudo ip link set enp1s0 down
¿La máquina sigue respondiendo? Vamos a verificarlo:
$ ping -c3 192.168.122.164
PING 192.168.122.164 (192.168.122.164) 56(84) bytes of data.
64 bytes from 192.168.122.164: icmp_seq=1 ttl=64 time=0.385 ms
64 bytes from 192.168.122.164: icmp_seq=2 ttl=64 time=0.353 ms
64 bytes from 192.168.122.164: icmp_seq=3 ttl=64 time=0.406 ms
--- 192.168.122.164 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 88ms
rtt min/avg/max/mdev = 0.353/0.381/0.406/0.027 ms
¡Lo hace! Veamos cómo cambió el estado del bono:
Ethernet Channel Bonding Driver: v3.7.1 (April
27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: enp1s0 (primary_reselect always)
Currently Active Slave: enp7s0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: enp1s0
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 1
Permanent HW addr: 52:54:00:cb:25:82
Slave queue ID: 0
Slave Interface: enp7s0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 52:54:00:32:37:9b
Slave queue ID: 0
Como puede ver, dado que desactivamos la interfaz esclava principal (enp1s0
), el otro esclavo, enp7s0
se utilizó como copia de seguridad y ahora es el activo actualmente. Además, el Link Failure Count
para el esclavo principal aumentó, y ahora es 1
.
Conclusiones
En este tutorial aprendimos qué es un enlace de red y cuáles son las formas posibles de configurar un enlace de red. También creamos una conexión de red entre dos interfaces de ethernet utilizando Active Backup
modo. Con Red Hat Enterprise Linux 7, se ha introducido un nuevo concepto, network teaming
. En algunos aspectos, el trabajo en equipo es similar a la vinculación, pero se implementa de manera diferente y tiene más funciones. Lo cubriremos en futuros artículos.