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