--- title: "Cómo configurar bonding de red en Ubuntu 24.04 con Netplan" description: "Agrupa dos interfaces en un bond con Netplan en Ubuntu 24.04, en modo active-backup o LACP 802.3ad, y prueba el failover. Incluye nmcli para Rocky Linux 9." category: "Redes Avanzadas" language: es source: https://cubepath.com/es/docs/redes-avanzadas/bonding-y-teaming-de-red-en-linux updated: 2026-09-25 --- # Cómo configurar bonding de red en Ubuntu 24.04 con Netplan 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: ```bash ip -br link ``` ```output lo UNKNOWN 00:00:00:00:00:00 eno1 UP 3c:ec:ef:12:34:56 eno2 UP 3c:ec:ef:12:34:57 ``` Comprueba que ambas tienen enlace físico: ```bash sudo ethtool eno1 | grep -E "Speed|Link detected" sudo ethtool eno2 | grep -E "Speed|Link detected" ``` ```output 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: ```bash 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: ```bash sudo mkdir -p /root/netplan-backup sudo cp /etc/netplan/*.yaml /root/netplan-backup/ ls /etc/netplan/ ``` ```output 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: ```bash echo "network: {config: disabled}" | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg ``` Edita el archivo de Netplan: ```bash 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: ```yaml 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-delay` y `down-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 de `mii-monitor-interval`. Netplan exige que el archivo no sea legible por otros usuarios. Ajusta los permisos y comprueba la sintaxis: ```bash 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: ```bash sudo netplan try ``` ```output 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/`: ```bash cat /proc/net/bonding/bond0 ``` ```output 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: ```bash ip -br addr show bond0 ping -c 3 1.1.1.1 ``` ```output 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: ```bash ping 203.0.113.10 ``` En el servidor, desde la consola remota, desactiva la interfaz activa: ```bash sudo ip link set eno1 down grep "Currently Active Slave" /proc/net/bonding/bond0 ``` ```output Currently Active Slave: eno2 ``` En el ping del otro equipo deberías perder como mucho uno o dos paquetes. Vuelve a activar la interfaz: ```bash 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: ```text 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`: ```bash sudo nano /etc/netplan/50-cloud-init.yaml ``` ```yaml parameters: mode: 802.3ad lacp-rate: fast transmit-hash-policy: layer3+4 mii-monitor-interval: 100 ``` - `lacp-rate: fast` envía las tramas LACP cada segundo en lugar de cada 30, así que detecta antes un enlace roto. - `transmit-hash-policy: layer3+4` reparte 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-delay` y `down-delay` no aplican a LACP en esta configuración, por eso se eliminan. Aplica el cambio con la misma red de seguridad: ```bash 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: ```bash grep -E "Bonding Mode|Transmit Hash|Aggregator ID|Partner Mac" /proc/net/bonding/bond0 ``` ```output 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`: ```bash 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: ```bash 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. > Nota: el teaming con `teamd` era 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: ```bash 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: ```bash 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.