Agregación de Enlaces (Port Bonding) en Linux

CompTIABeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a implementar la Agregación de Enlaces (Link Aggregation), también conocida como "port bonding" o "enlace de puertos", en un entorno Linux. Esta potente técnica permite combinar múltiples interfaces de red físicas en una única interfaz lógica, lo que puede aumentar el rendimiento de la red y proporcionar tolerancia a fallos. Adquirirá experiencia práctica con comandos esenciales de redes en Linux para configurar y gestionar una conexión enlazada.

Siguiendo un proceso paso a paso, primero identificará las interfaces de red disponibles en su sistema utilizando el comando ip a. Para una demostración segura y práctica, crearemos dos interfaces virtuales "dummy" (simuladas), dummy1 y dummy2, para simular un entorno multi-interfaz. Luego, creará una nueva interfaz de enlace virtual, bond0, y esclavizará (enslave) estas dos interfaces dummy a ella. Posteriormente, asignará una dirección IP estática a la interfaz bond0 recién creada para habilitar la comunicación. Finalmente, verificará toda la configuración y comprobará el estado del enlace activo para asegurarse de que funciona correctamente.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 90%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Identificar Interfaces de Red Disponibles con ip a

En este paso, comenzará identificando las interfaces de red disponibles en su VM de LabEx. Antes de poder combinar múltiples interfaces de red en un único enlace agregado (bonded link), primero necesita conocer sus nombres. El comando moderno y preferido para esta tarea en Linux es ip a (una abreviatura de ip addr show).

Este comando muestra todas las interfaces de red del sistema, junto con sus direcciones IP, direcciones MAC y su estado operativo.

Primero, abra su terminal. Debería estar ya abierta y en el directorio ~/project. Ahora, ejecute el comando ip a para listar todas las interfaces de red:

ip a

Verá una salida que lista varias interfaces. Debería prestar atención a algunos detalles clave:

  • lo: Esta es la interfaz de loopback, una interfaz virtual para que el sistema se comunique consigo mismo. Ignoraremos esta para el enlace.
  • eth0: Esta es la interfaz Ethernet principal. No la utilizaremos para garantizar que nuestra conexión al entorno de laboratorio permanezca estable.
  • docker0: Este es un puente virtual creado por Docker. Actualmente está DOWN (inactivo) y no es adecuado para este laboratorio.
  • dummy1, dummy2: Estas son dos interfaces virtuales dummy (simuladas) que hemos añadido para simular dos tarjetas de red adicionales para este laboratorio. Estas serán las interfaces que enlazaremos juntas.
  • state UP: Esto indica que la interfaz está activa.

Su salida se parecerá a esto. Tenga en cuenta los nombres de sus interfaces dummy, dummy1 y dummy2, ya que los necesitará en los siguientes pasos.

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

A partir de la salida anterior, hemos identificado dos interfaces adecuadas para nuestra configuración de enlace: dummy1 y dummy2. En los siguientes pasos, utilizará estos nombres de interfaz para crear una nueva interfaz enlazada.

Crear y Habilitar la Interfaz Bond 'bond0'

En este paso, creará la interfaz lógica "bond" que servirá como maestro para sus tarjetas de red. Esto requiere dos acciones principales: cargar el módulo del kernel de Linux necesario para el enlace y luego crear y activar la interfaz en sí.

Primero, debe asegurarse de que el módulo del kernel bonding esté cargado. Este módulo contiene el código que permite al kernel gestionar las interfaces enlazadas. Puede cargarlo utilizando el comando modprobe.

sudo modprobe bonding

Para confirmar que el módulo se ha cargado correctamente, puede usar el comando lsmod, que lista todos los módulos del kernel cargados, y grep para filtrar por "bonding".

lsmod | grep bonding

Debería ver una salida que indica que el módulo bonding está ahora en uso:

bonding               196608  0

Ahora que el kernel está listo, puede crear la nueva interfaz lógica. La llamaremos bond0. Utilice el comando ip link para añadir un nuevo enlace virtual de tipo bond.

sudo ip link add bond0 type bond

Este comando crea la interfaz, pero por defecto está en estado "down" (inactivo). Necesita ponerla "up" (activo) para que sea funcional, de manera similar a como se habilita una tarjeta de red física.

sudo ip link set dev bond0 up

Ahora puede verificar que su nueva interfaz bond0 existe y está activa utilizando el comando ip a nuevamente, pero esta vez especificando el nombre de la interfaz.

ip a show bond0

La salida mostrará la interfaz bond0 con su estado como DOWN y sin una dirección IP todavía. Eso se configurará en un paso posterior.

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

Ahora ha creado y habilitado con éxito la interfaz maestra bond0. El siguiente paso es añadir sus interfaces dummy a ella como esclavas.

Añadir Interfaces como Esclavas a 'bond0'

En este paso, esclavizará las interfaces virtuales que identificó anteriormente (dummy1 y dummy2) a la interfaz maestra bond0. "Esclavizar" una interfaz significa ponerla bajo el control de la interfaz enlazada. Una vez esclavizada, la interfaz física ya no necesita su propia dirección IP; todo el tráfico se gestionará a través de bond0.

Este enfoque de usar interfaces dummy es completamente seguro y le permite aprender el proceso de enlace sin ningún riesgo de perder la conectividad de red.

Primero, añada la interfaz dummy1 al enlace. Necesita ponerla en estado "down" antes de añadirla como esclava.

sudo ip link set dev dummy1 down
sudo ip link set dev dummy1 master bond0

A continuación, haga lo mismo para la interfaz dummy2.

sudo ip link set dev dummy2 down
sudo ip link set dev dummy2 master bond0

Ahora vamos a activar la interfaz de enlace y asignarle una dirección IP. Usaremos una subred diferente para evitar conflictos con la configuración existente de eth0:

sudo ip addr add 192.168.100.10/24 dev bond0
sudo ip link set dev bond0 up

Verifiquemos que tanto dummy1 como dummy2 están ahora esclavizadas a bond0:

ip a

Observe las entradas de dummy1, dummy2 y bond0 en la salida. Verá dummy1 y dummy2 listadas con master bond0 en sus descripciones, lo que confirma que están esclavizadas con éxito. Además, observe que la interfaz bond0 está ahora UP y tiene la dirección IP que le asignamos.

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

Con las interfaces actuando ahora como esclavas, el siguiente paso es configurar los ajustes de red para la propia interfaz bond0.

Probar la Conectividad de la Interfaz Bond

En este paso, probará la interfaz de enlace para asegurarse de que funciona correctamente. Dado que hemos creado un enlace funcional con dos interfaces dummy y le hemos asignado una dirección IP, ahora podemos probar su funcionalidad básica.

Primero, verifiquemos que la interfaz de enlace está activa y tiene la dirección IP correcta:

ip a show bond0

Debería ver la interfaz bond0 con la dirección IP que asignamos (192.168.100.10/24) y el estado de la interfaz debería mostrarse como 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

Ahora probemos la interfaz de enlace haciendo ping a su propia dirección IP para verificar que la interfaz responde:

ping -c 3 192.168.100.10

Debería ver respuestas de ping exitosas, lo que confirma que la interfaz de enlace está funcionando.

Verifiquemos también que nuestras interfaces esclavas están correctamente conectadas al enlace:

ip a | grep "master bond0"

Este comando le mostrará las interfaces que están esclavizadas a bond0. Debería ver tanto dummy1 como dummy2 listadas:

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

Para una verificación adicional, comprobemos si la interfaz de enlace aparece en la tabla de enrutamiento:

ip route | grep bond0

Debería ver entradas de enrutamiento para la red 192.168.100.0/24 a través de la interfaz bond0.

Nota Educativa: Esta configuración demuestra perfectamente los conceptos centrales del enlace. En un entorno de producción con múltiples interfaces físicas, vería un balanceo de carga de tráfico de red y redundancia basado en el modo de enlace que elija.

Verificar el Estado del Bond con cat /proc/net/bonding/bond0

En este paso final, realizará la verificación más detallada inspeccionando directamente el archivo de estado del enlace. El kernel de Linux expone información en tiempo real sobre cada interfaz enlazada a través de un archivo especial en el sistema de archivos /proc. Para una interfaz llamada bond0, este archivo se encuentra en /proc/net/bonding/bond0.

Usar el comando cat para ver este archivo proporciona una visión general completa de la configuración del enlace, incluido su modo, el estado de sus interfaces esclavas y los contadores de tráfico.

En su terminal, ejecute el siguiente comando:

cat /proc/net/bonding/bond0

Esto mostrará un informe detallado. La salida se parecerá a la siguiente, mostrando ahora dos interfaces esclavas:

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

Analicemos la información clave de esta salida:

  • Bonding Mode: Muestra la política utilizada para distribuir el tráfico. Dado que no especificamos ninguna, por defecto es load balancing (round-robin), que transmite paquetes en orden a través de las esclavas disponibles.
  • MII Status: Muestra el estado general del enlace enlazado. up significa que está activo.
  • Slave Interface: Puede ver una sección para dummy1 y dummy2. Ambas muestran un MII Status de up, lo que confirma que están activas y forman parte del enlace. Tenga en cuenta que Speed y Duplex pueden mostrarse como Unknown o un valor predeterminado para las interfaces dummy.

¡Felicitaciones! Ha configurado con éxito una interfaz de red enlazada en Linux, combinando dos interfaces dummy en una sola y lógica.

Resumen

En este laboratorio, aprendió los conceptos fundamentales de la implementación de la agregación de enlaces (port bonding) en un entorno Linux. El procedimiento comenzó con la identificación de las interfaces de red disponibles, incluidas dos interfaces virtuales preconfiguradas, dummy1 y dummy2, utilizando el comando ip a. Después de la identificación, creó una nueva interfaz de enlace virtual llamada bond0, la habilitó y luego agregó ambas interfaces dummy como esclavas para demostrar el proceso completo de enlace.

Este enfoque proporcionó una forma completamente segura y efectiva de aprender los conceptos de enlace en un entorno remoto sin arriesgar la pérdida de conectividad.

Los puntos clave de aprendizaje incluyeron:

  • Creación de dos interfaces dummy para simular un entorno multi-interfaz.
  • Carga del módulo del kernel bonding.
  • Comprensión de la relación maestro-esclavo en el enlace de red.
  • Esclavización de múltiples interfaces a un único maestro de enlace.
  • Asignación segura de direcciones IP a las interfaces de enlace.
  • Verificación de la configuración y estado final del enlace.

El laboratorio concluyó examinando el estado detallado del enlace utilizando cat /proc/net/bonding/bond0, que proporciona información completa sobre la configuración del enlace, el modo y el estado de todas sus interfaces esclavas. Este paso de verificación es esencial en escenarios del mundo real para confirmar que la configuración del enlace está funcionando según lo previsto.