El bonding de Linux agrupa varias interfaces de red físicas en una sola interfaz lógica (bond0). Según el modo, sirve para tener redundancia (si cae un cable, puerto o switch, el tráfico sigue por el otro enlace) o para sumar ancho de banda con LACP. En este tutorial configurarás un bond con Netplan en Ubuntu 24.04, primero en modo active-backup y después en modo LACP (802.3ad), y comprobarás que el failover funciona. Al final verás el equivalente con NetworkManager para Rocky Linux 9.
Requisitos previos
Para seguir esta guía necesitas:
- Un servidor con Ubuntu 24.04 LTS con al menos dos interfaces de red conectadas a la misma red, normalmente un servidor dedicado o bare metal. Un VPS con una única interfaz no sirve para bonding.
- Un usuario no root con privilegios
sudo. - Acceso por consola remota (IPMI, iDRAC, iLO o KVM) al servidor. Vas a cambiar la configuración de la interfaz por la que te conectas, y un error puede dejarte sin acceso SSH.
- Para el modo LACP, un switch que lo soporte y acceso a su configuración (o que tu proveedor configure el port-channel).
Paso 1: Elegir el modo de bonding
El kernel ofrece varios modos. Estos son los que se usan en la práctica:
| Modo | Nombre | Qué hace | Configuración en el switch |
|---|---|---|---|
| 1 | active-backup | Solo un enlace transmite; el otro entra si el primero cae | Ninguna |
| 4 | 802.3ad (LACP) | Agrega los enlaces y reparte las conexiones entre ellos; negocia con el switch | Port-channel LACP |
| 6 | balance-alb | Reparte la carga sin ayuda del switch manipulando ARP | Ninguna |
| 0 | balance-rr | Reparte paquete a paquete en turnos | Grupo estático; puede desordenar paquetes TCP |
Como regla general: usa active-backup si solo buscas redundancia o no controlas el switch, y 802.3ad si el switch soporta LACP y quieres usar el ancho de banda de ambos enlaces. Con LACP, una sola conexión TCP nunca supera la velocidad de un enlace: lo que se reparte son conexiones distintas.
Paso 2: Identificar las interfaces
Lista las interfaces del servidor y su estado:
ip -br link
lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
eno1 UP 3c:ec:ef:12:34:56 <BROADCAST,MULTICAST,UP,LOWER_UP>
eno2 UP 3c:ec:ef:12:34:57 <BROADCAST,MULTICAST,UP,LOWER_UP>
Comprueba que ambas tienen enlace físico:
sudo ethtool eno1 | grep -E "Speed|Link detected"
sudo ethtool eno2 | grep -E "Speed|Link detected"
Speed: 10000Mb/s
Link detected: yes
Si ethtool no está instalado, instálalo con sudo apt install ethtool. En esta guía las interfaces son eno1 y eno2; sustitúyelas por las tuyas.
Anota también la configuración IP actual (dirección, puerta de enlace y DNS), porque pasará de la interfaz física al bond:
ip -br addr show eno1
ip route show default
Paso 3: Configurar un bond active-backup con Netplan
Ubuntu 24.04 gestiona la red con Netplan, que genera la configuración para systemd-networkd. Primero haz una copia de los archivos actuales:
sudo mkdir -p /root/netplan-backup
sudo cp /etc/netplan/*.yaml /root/netplan-backup/
ls /etc/netplan/
50-cloud-init.yaml
Si el archivo lo genera cloud-init (lo indica un comentario al inicio), evita que lo regenere en el siguiente arranque:
echo "network: {config: disabled}" | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
Edita el archivo de Netplan:
sudo nano /etc/netplan/50-cloud-init.yaml
Sustituye su contenido por esta configuración, con tus propios valores de IP, puerta de enlace y DNS en lugar de los de ejemplo:
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: false
eno2:
dhcp4: false
bonds:
bond0:
interfaces: [eno1, eno2]
addresses:
- 203.0.113.10/24
routes:
- to: default
via: 203.0.113.1
nameservers:
addresses: [1.1.1.1, 9.9.9.9]
parameters:
mode: active-backup
primary: eno1
mii-monitor-interval: 100
up-delay: 200
down-delay: 200
Qué significan los parámetros del bond:
primary: eno1: enlace preferido. Cuando esté disponible, el tráfico irá por él.mii-monitor-interval: 100: comprueba el estado del enlace de cada interfaz cada 100 ms.up-delayydown-delay: milisegundos que espera antes de activar un enlace que vuelve o de dar por caído uno que falla. Evitan cambios continuos si un enlace parpadea. Deben ser múltiplos demii-monitor-interval.
Netplan exige que el archivo no sea legible por otros usuarios. Ajusta los permisos y comprueba la sintaxis:
sudo chmod 600 /etc/netplan/50-cloud-init.yaml
sudo netplan generate
Si netplan generate no muestra nada, la sintaxis es correcta. Aplica el cambio con netplan try, que revierte la configuración automáticamente si no confirmas en 120 segundos. Así, si pierdes la conexión, recuperarás el acceso sin tocar nada:
sudo netplan try
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in 118 seconds
Desde otra terminal, abre una nueva sesión SSH al servidor. Si funciona, vuelve a la primera y pulsa Enter para confirmar.
Paso 4: Verificar el estado del bond
El kernel publica el estado detallado del bond en /proc/net/bonding/:
cat /proc/net/bonding/bond0
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eno1 (primary_reselect always)
Currently Active Slave: eno1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 200
Down Delay (ms): 200
Slave Interface: eno1
MII Status: up
Speed: 10000 Mbps
Link Failure Count: 0
Slave Interface: eno2
MII Status: up
Speed: 10000 Mbps
Link Failure Count: 0
Comprueba también que la IP está ahora en bond0 y que tienes salida a Internet:
ip -br addr show bond0
ping -c 3 1.1.1.1
bond0 UP 203.0.113.10/24
Paso 5: Probar el failover
Un bond que nunca se ha probado no es redundancia. Desde otro equipo, lanza un ping continuo contra la IP del servidor y déjalo en marcha:
ping 203.0.113.10
En el servidor, desde la consola remota, desactiva la interfaz activa:
sudo ip link set eno1 down
grep "Currently Active Slave" /proc/net/bonding/bond0
Currently Active Slave: eno2
En el ping del otro equipo deberías perder como mucho uno o dos paquetes. Vuelve a activar la interfaz:
sudo ip link set eno1 up
Tras el up-delay, eno1 vuelve a ser la interfaz activa porque es la primaria. El contador Link Failure Count de eno1 en /proc/net/bonding/bond0 habrá aumentado en uno.
La prueba más realista es desconectar el cable o desactivar el puerto en el switch, porque también comprueba que la segunda interfaz está bien cableada y configurada en el switch.
Paso 6: Cambiar a LACP (802.3ad)
Con LACP, el servidor y el switch negocian un grupo de enlaces y ambos se usan a la vez. Configura primero el switch: los dos puertos deben pertenecer al mismo port-channel en modo LACP activo. Como referencia, en un switch con sintaxis tipo Cisco o Arista:
interface Port-Channel1
description bond0 servidor
switchport access vlan 100
!
interface Ethernet1
channel-group 1 mode active
!
interface Ethernet2
channel-group 1 mode active
Después, en el servidor, cambia el bloque parameters de bond0 en /etc/netplan/50-cloud-init.yaml:
sudo nano /etc/netplan/50-cloud-init.yaml
parameters:
mode: 802.3ad
lacp-rate: fast
transmit-hash-policy: layer3+4
mii-monitor-interval: 100
lacp-rate: fastenvía las tramas LACP cada segundo en lugar de cada 30, así que detecta antes un enlace roto.transmit-hash-policy: layer3+4reparte el tráfico saliente según IP y puerto, de modo que distintas conexiones pueden ir por enlaces distintos. Con el valor por defecto (layer2) todo el tráfico hacia la misma puerta de enlace usaría un solo enlace.primary,up-delayydown-delayno aplican a LACP en esta configuración, por eso se eliminan.
Aplica el cambio con la misma red de seguridad:
sudo netplan generate
sudo netplan try
Verifica que LACP ha negociado con el switch. Ambas interfaces deben compartir el mismo Aggregator ID y el Partner Mac Address debe ser la MAC del switch, no ceros:
grep -E "Bonding Mode|Transmit Hash|Aggregator ID|Partner Mac" /proc/net/bonding/bond0
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer3+4 (1)
Aggregator ID: 1
Partner Mac Address: 28:99:3a:aa:bb:cc
Aggregator ID: 1
Aggregator ID: 1
Si una interfaz aparece con un Aggregator ID distinto o el Partner Mac Address es 00:00:00:00:00:00, el switch no está negociando LACP en ese puerto.
Equivalente con NetworkManager en Rocky Linux 9
En Rocky Linux 9, AlmaLinux 9 y RHEL 9 la red la gestiona NetworkManager. El bond active-backup equivalente se crea con nmcli:
sudo nmcli connection add type bond con-name bond0 ifname bond0 \
bond.options "mode=active-backup,primary=eno1,miimon=100,updelay=200,downdelay=200" \
ipv4.method manual ipv4.addresses 203.0.113.10/24 \
ipv4.gateway 203.0.113.1 ipv4.dns "1.1.1.1 9.9.9.9"
sudo nmcli connection add type ethernet slave-type bond con-name bond0-eno1 ifname eno1 master bond0
sudo nmcli connection add type ethernet slave-type bond con-name bond0-eno2 ifname eno2 master bond0
Desactiva la conexión que tenía antes la IP en eno1 (consulta su nombre con nmcli connection show) y activa el bond, desde la consola remota:
sudo nmcli connection down "your_old_connection"
sudo nmcli connection up bond0
cat /proc/net/bonding/bond0
Para LACP, cambia las opciones a mode=802.3ad,lacp_rate=fast,xmit_hash_policy=layer3+4,miimon=100 con sudo nmcli connection modify bond0 bond.options "..." y reactiva la conexión.
Notael teaming con
teamdera una alternativa al bonding en RHEL 7 y 8, pero Red Hat lo marcó como obsoleto en RHEL 9 y lo ha retirado en RHEL 10. Para configuraciones nuevas usa bonding, que ofrece los mismos modos y lo soporta cualquier distribución.
Solución de problemas
netplan try revierte o pierdes la conexión. Revisa desde la consola remota los logs de systemd-networkd y el estado de las interfaces:
sudo journalctl -u systemd-networkd --since "10 min ago"
networkctl status bond0
Los errores más habituales son una IP o puerta de enlace mal escritas y que la interfaz física siga teniendo su propia IP en otro archivo de /etc/netplan/.
Solo una interfaz aparece en el bond. Comprueba con ethtool que la otra tiene enlace y que no está definida en otro archivo de Netplan con su propia configuración.
LACP no negocia. Confirma en el switch que los dos puertos están en el mismo port-channel y en modo active, y que ambos llegan al mismo switch (o a un par de switches con MLAG). Los mensajes del kernel indican el motivo:
sudo dmesg | grep -i bond
El ancho de banda no supera el de un enlace con LACP. Es lo esperado para una sola conexión. Para comprobar el reparto, lanza varias conexiones en paralelo, por ejemplo con iperf3 -P 8, y observa los contadores de cada interfaz con ip -s link show eno1.
Conclusión
Has agrupado dos interfaces en un bond con Netplan en Ubuntu 24.04, lo has verificado en /proc/net/bonding/bond0, has probado el failover en modo active-backup y has pasado a LACP con reparto por IP y puerto. Como siguientes pasos, puedes crear VLAN sobre el bond con la sección vlans de Netplan, repetir la prueba de failover desactivando puertos en el switch y añadir alertas cuando aumente el Link Failure Count de cualquier interfaz.
