Net bonding / teaming en Linux

Este artículo explica cómo asociar bocas físicas de tarjetas de red (eth0, eth1, eth2…) en interfaces de red lógicos (bond0, bond1) que se comportan como un interface de red estándar con la salvedad de que seguirían funcionando ante la pérdida de cualquiera enlace físico que las forme, siempre que quede un enlace funcional y activo.

Lo normal es realizar el bonding en modo failover (sólo uno de los 2 enlaces está en uso, y el otro permanece pasivo hasta que cae el enlace activo).

Distribuciones basadas en Redhat Linux

Configuramos las 2 interfaces de red eth0 y eth1 como esclavas de un nuevo interfaz de red llamado "bond0":

# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=no
MASTER=bond0
SLAVE=yes
USERCTL=no

# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=no
MASTER=bond0
SLAVE=yes
USERCTL=no

# cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.8
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
USERCTL=no

A continuación indicamos al sistema que cargue el módulo bond en memoria:

# grep bond /etc/modprobe.conf
alias bond0 bonding
options bond0 mode=1 miimon=100

Cargamos el módulo manualmente y reiniciamos los servicios de red:

# modprobe bonding
# service network restart

Distribuciones basadas en Debian (Debian/Ubuntu)

En Debian se utiliza el binario ifenslave:

# apt-get install ifenslave

A continuación, igual que en el caso de RedHat, pedimos al sistema que cargue en el arranque el módulo de bonding con las opciones adecuadas:

# grep bond /etc/modprobe.d/arch-aliases
alias bond0 bonding
options bonding mode=1 miimon=100 downdelay=200 updelay=200

# modprobe bonding

Finalmente, configuramos la red con los nuevos interfaces:

# cat /etc/network/interfaces

# Comentar entradas de las ethernets que formaran parte de bond0:
#auto eth0
#iface eth0 inet static
# address 192.168.1.13
# netmask 255.255.255.0
# gateway 192.168.1.1

auto bond0
iface bond0 inet static
   pre-up modprobe bond0
   address 192.168.1.8
   netmask 255.255.255.0
   network 192.168.1.13
   gateway 192.168.1.1
   #hwaddress ether 00:0A:11:11:22:33
   up /sbin/ifenslave bond0 eth0 eth1
   down /sbin/ifenslave -d bond0 eth0 eth1

# /etc/init.d/networking restart

Verificar estado del bonding

Es posible verificar el estado de los enlaces de bonding a través de /proc:

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.2.3 (December 6, 2007)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0 eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:1d:92:72:16:47



<Volver a la sección de GNU/Linux>