Mi Blog
👉 Cómo configurar un bonding de interfaces en GNU/Linux Debian

Cómo configurar un bonding de interfaces en GNU/Linux Debian

 
(16 votos)

Hoy en día, todos los sistemas informáticos están redundados con el fin de garantizar un >99,9% de disponibilidad. Al igual que un RAID garantiza el acceso y salvaguarda la información de la información de los discos, un Bonding de interfaces de red, garantiza que un sistema esté siempre accesible a través de una red informática. Si alguna vez te has preguntado como se hace esto, os enseñaré con este pequeño tutorial como se consigue tener HA (high availability) en un servidor con 2 interfaces de red físicas las cuales haremos que formen parte de un Bond.

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

El bonding de interfaces de red es la solución para tener alta disponibilidad y redundancia en los servidores donde realmente la conectividad sea un factor crítico, como en servidores que ofrecen servicios a clientes (servidores web, ftps, bases de datos etc...). Gracias al bonding, podremos agrupar varias interfaces de red físicas en una para conseguir un HA o incrementar el throughput de red.

En este pequeño tutorial os enseñaré como configurar dos interfaces de red para formar un bond en un sistema GNU/Linux Debian. Usaremos el software ifenslave el cual se encargará de añadir/remover/gestionar las tarjetas físicas que forman el bond. Una vez que el bond se configure y se active, comenzará a trabajar como si fuera un dispositivo físico de red como puede eser eth0, eth1 ...

 

 

1.- ELEMENTOS UTILIZADOS EN ESTE TUTORIAL

  • GNU/Linux Debian 8 (Virtualizado)

 

 

2.- TIPOS DE BONDING Y SU FUNCIÓN

Lo primero que tenemos que hacer antes de proceder a realizar ninguna configuración, es determinar el tipo de bonding que necesitamos para nuestro equipo y nuestras necesidades. Existen 6 tipos de bondings soportados por el Kernel de GNU/Linux. Algunos de estos modos de "bonding" requieren solamente de una pequeña configuración en los equipos, pero otros requieren configuraciones especiales en los switches que establecen los links.

2.1.- Bond Mode 0 (balance-rr)

Este modalidad de bonding se la llama ‘Round-Robin‘. Con este método, los paquetes de red enviados son rotados entre cada una de las tarjetas que forman la interfaz del bond.

Por ejemplo, en un equipo con 4 interfaces de red eth0, eth1, eth2 y eth3 todas ellas como "esclavas" de la interfaz bond0. Cuando establecemos el bond en modo 0 (Round-Robin), el primer paquete se enviará por la interfaz eth0, el segundo por eth1, el tercero por eth2 y el 4 de nuevo por eth0.

2.2.- Bond Mode 1 (active-backup)

Con esta modalidad de bonding, solo una de las interfaces está activa mientras que la otra estará en modo de "espera" hasta que la interfaz activa falle por algún motivo. Cuando falla la interfaz de red activa, la otra interfaz que está de backup asume el rol y se pone en activa.

2.3.- Bond Mode 2 (balance-xor)

Este método evalúa el origen y el destino de los paquetes en función de la "mac address" para determinar a través de que interfaz de red del bond enviará los paquetes. Este método enviará los paquetes por la misma interfaz que tengan el mismo origen y destino. De esta forma conseguimos una especie de balanceo y tolerancia a fallos.

2.4.- Bond Mode 3 (broadcast)

Transmite todas las tramas por todas las interfaces slave. Este modo nos ofrece tolerancia a fallos

2.5.- Bond Mode 4 (802.3ad)

Se trata del estandard IEEE 802.3ad (Dynamic link aggregation) también llamado “port trunking“. Permite la definición de agregados ofreciendo alta disponibilidad y un aumento de la velocidad. Para poder configurar este modo necesitamos:

  • Soporte de ethtool para obtener la velocidad y el modo del interfaz.
  • El switch debe soportar el modo. Por ejemplo los CISCO lo soportan con el nombre port trunking.

2.6.- Bond Mode 5 (balance-tlb)

Este modo transmite balanceando la carga entre los slave en función de la carga de cada slave. En el caso que uno falle la MAC salta a otro slave. Para calcular la carga de cada interfaz es necesario disponer de ethtool.

A diferencia de 802.3ad no se necesario soporte del switch para esta configuración.

Tenemos que tener en cuenta que puede producirse que los paquetes lleguen desordenados, por lo que puede ser peor el remedio que la enfermedad, especialmente en entornos de red complejos.

2.7.- Bond Mode 6 (balance-alb)

Balanceo de carga tanto en el envío como en la recepción. Para el balanceo de carga en la recepción lo que se hace es manipulando los replies ARP para indicar una MAC en concreto de una de las interfaces slave.

Deberemos tener en cuenta que cualquier sistema de seguridad basado en las tablas ARP puede quejarse o simplemente tirar el puerto de la interfaz dejando el servidor sin conectividad.

 

 

3.- CONFIGURANDO EL BONDING

El primer paso se centra en instalar el paquete "ifenslave", encargado de funcionar como parte mediadora entre el bonding y el kernel de GNU/Linux. Lo instalaremos con usuario root ó con otro usuario con permisos de sudo:

# apt-get update
# apt-get install ifenslave

Una vez hemos terminado de instalar el paquete ifenslave, necesitamos configurar nuestro equipo para que una vez que se reinicie, el Kernel cargue el módulo necesario para gestionar el bonding. Para ello, bastará con añadir la palabra "bonding" al fichero /etc/modules:

# echo "bonding" >> /etc/modules

Activamos el módulo a mano para proceder a configurar el bonding en los pasos posteriores:

# modprobe bonding

Comprobamos que el módulo está cargado:

# lsmod | grep bonding

Ahora necesitamos crear la configuración necesaria para activar nuestro bonding de interfaces de red. En este ejemplo crearé un bonding de tipo 1, es decir activo-pasivo y probaremos que funciona correctamente. La configuración de red en GNU/Linux Debian se realiza en el fichero /etc/network/interfaces y las 2 interfaces que formarán el bonding son eth0 y eth1. La parte de configuración del bond0 en el fichero de configuración queda de la siguiente forma:

iface bond0 inet static
address 192.168.0.187
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.0.1
slaves eth0 eth1
bond_mode 1
bond_miimon 100
bond_downdelay 200
bond_updelay 200

 

 


Una vez hemos realizado los cambios en el fichero de configuración, reiniciaremos la red con el comando:

# /etc/init.d/networking restart

Ahora listaremos las interfaces de red y veremos como tenemos: eth0, eth1, bond0 y el loopback:

# ifconfig -a

Bonding

Listado de interfaces

El estado del bonding podemos comprobarlo a través del fichero /proc/net/bonding/bond0:

# cat /proc/net/bonding/bond0

Bonding

Estado del bond0

 

 

4.- COMPROBANDO EL FUNCIONAMIENTO DEL BONDING

Abriremos una consola Shell y haremos ping de forma continua hacia Google, por ejemplo:

# ping 8.8.8.8

Bonding

Ping a Google 2 interfaces UP

Ahora mismo el tráfico está saliendo por una de las 2 interfaces de red. Ambas están UP pero es el bond quién gestiona por cual de ellas sale el tráfico. Podemos indicarle una interfaz preferida en el fichero /etc/network/interfaces con la opción de bond_primary.

Lo siguiente que haremos será desconectar la interfaz de red eth0. Como estoy virtualizando el equipo GNU/Linux Debiancon VMWARE WORKSTATION 11, iré a la configuración de la VM y desconectaré la primera interfaz eth0:

Bonding

Desconectamos la interfaz de red

La interfaz que está como SLAVE RUNNING es la interfaz eth0 y como SLAVE es la eth1. Podemos verlo con el comando "ifconfig". Con el PING funcionando a Google y desconectando la interfaz eth0 (SLAVE RUNNING), veremos como la intarfaz "cae" pero el PING se recupera y el tráfico lo asume la eth1 (SLAVE ahora nueva SLAVE RUNNING):

Bonding

Ping a Google se recupera por la interfaz pasiva/slave

Si hacemos un ifconfig, podemos ver como ahora eth0 es la interfaz SLAVE y la eth1 la interfaz SLAVE RUNNING:

Bonding

Estado del bond tras la desactivación de eth0

El estado del bonding podemos comprobarlo a través del fichero /proc/net/bonding/bond0. Ahora se puede ver que eth0 está DOWN:

# cat /proc/net/bonding/bond0

Bonding

Estado del bond0

Estos mismos pasos podemos hacerlos con la interfaz eth1, pero debemos tener en cuenta que al estar en modo 1 (activo-pasivo), al menos una de las 2 interfaces de red debe estar UP&RUNNING para que la conectividad funcione correctamente.

ENJOY!


Acerca de Mi

RPF

Soy Ingeniero Téc. Industrial Mecánico, Administrador de Sistemas Informáticos, Desarrollador de Aplicaciones Informaticas Web, Técnico Superior en PRL, Experto en Energías Renovables... y trabajo actualmente como Senior DevOPS en HP SCDS.

Contactar conmigo

Dirección: León, España

E-Mail: Contactar

Web: https://www.raulprietofernandez.net

Skype: raul.lnx

APÚNTATE GRATIS

VIP RPF
Entra en la Comunidad VIP y consigue acceso a las descargas en PDF, Trucos y Videotutoriales ocultos y mucho más... ¡Muy Pronto!
AVISO DE COOKIES

Esta página web utiliza cookies propias y de terceros para fines funcionales (permitir la navegación web), para optimizar la navegación y personalizarla según tus preferencias asícomo para mostrarte publicidad en base a tu perfil de navegación (p.e páginas visitadas).

Privacidad