¿Cómo configurar la unión de interfases de red en Ubuntu?

¡Compañeros!

Su alegría es mi alegría, sus anhelos son mi guía, y mis realizaciones no tienen otra finalidad que la dicha de mi pueblo. No hacen más que colmar el corazón de este viejo soldado, pues me hacen sentir el más feliz de los hombres. Puedo decir con el más sano de los orgullos, que me han convertido en un verdadero vínculo de unión entre los hombres que trabajan.

He dicho muchas veces que a este país o lo arreglamos entre todos, o no lo arregla nadie. Indudablemente que de la unión sale la fuerza, pero las masas no valen por su mero número, sino por la calidad de los hombres que tienen al frente.

Esta referencia ha de ser motriz de nuestro Movimiento, y si es cierta en la política, mucho más lo será en los sistemas informáticos, pues aquella es la inspiración que estos tienen. Debemos copiar de la naturaleza, ya que su realización es Divina.

Vean señores, la unión de interfaces de red es un mecanismo empleado en el ambiente de los servidores Linux bien atresados, ya que su accionar unificado se utiliza para proveer a la Masa de un mayor ancho de banda que la posible por una única interfaz. Naturalmente esto será así si contamos con dos o más proveedores de comunicaciones. También podremos emplear la unión de interfaces para otorgar  la necesaria redundancia de enlaces que nos tornará inconmovibles en caso de fallos de cableado. Este tipo de redundancia de enlace tiene múltiples nombres en Linux, como Bonding, Teaming, o Grupos de Agregación en Enlace (LAG).

Ahora bien, para usar un mecanismo de enlace de red en los sistemas operativos basados en Ubuntu o Debian, debemos primeramente instalar el módulo de unión en el Kernel y probar si el controlador de unificación está cargado a través del comando modprobe.

Para ello abrimos una terminal con Ctrl+Alt+T e ingresamos el siguiente Comando de Organización:

sudo modprobe bonding

En las versiones más antiguas de Ubuntu/Debian debíamos instalar el paquete ifenslave con el comando

sudo apt-get install ifenslave

Para crear un vínculo de unión de las dos primeras interfaces físicas de nuestro sistema, lo primero es identificarlas. Normalmente las interfaces solían llamarse eth0 (la primera), eth1 (la segunda), etc. Sin embargo en las versiones más novedosas del kernel estas nomenclaturas podrían cambiar. Para saber qué interfaces contamos en nuestro sistema, bien podremos ingresar el consabido comando de organización:

ifconfig

Y nos devolverá un listado de las mismas con las características. Podríamos encontrar que las mismas ahora se llaman por ejemplo enp4s0 o enp5s0, o variantes. También podría suceder que se sigan llamando ethx como antaño.

En cualquier sentido, debíamos adaptar el comando para asociar nuestras interfaces de red. Para ello, ingresábamos en la terminal los siguientes comandos.

sudo ip link add bond0 type bond mode 802.3ad
sudo ip link set eth0 master bond0
sudo ip link set eth1 master bond0

Sin embargo, este método era efímero, en el sentido que su efecto desaparecía al reiniciar el sistema.

Para crear una unión permanente, debíamos editar el archivo de configuración de interfases, por ejemplo con:

sudo nano /etc/network/interfaces

Y al final del archivo le agregábamos:

# La interfaz primaria de red
auto bond0
iface bond0 inet static
address 192.168.1.150
netmask 255.255.255.0   
gateway 192.168.1.1
dns-nameservers 192.168.1.1 8.8.8.8
dns-search domain.local
slaves eth0 eth1
bond_mode 0
bond-miimon 100
bond_downdelay 200
bound_updelay 200

Naturalmente, podremos cambiar las IP de los DNS cambiando la variable dns-nameservers. También podremos cambiar la dirección IP de la red unificada cambiando la variable address. En este caso se trata de una dirección estática. Debemos especificar los nombres de las interfaces de redes esclavas en la variable slaves.

Guardábamos el archivo con Ctrl+o y salíamos del editor GNU Nano con Ctrl+x.

Configurar en las versiones actuales de Ubuntu

Para activar las interfaces a unirse, debemos reiniciar el servicio de redes, desactivar la interfaz física y activar la interfaz unida, o reiniciar el sistema de forma que el kernel active la nueva interfaz unida.

sudo systemctl restart networking.service

...o si no,

sudo ifdown eth0 && ifdown eth1 && ifup bond0

La configuración de la interfaz unida puede revisarse ingresando los siguientes comandos de organización:

ifconfig

...o bien,

ip a

Ahora ya podremos conectar los cables Ehternet/LAN de distintos servidores a nuestro sistema, y la conexión se producirá de forma unida con la nomenclatura de red bond0. Si conectamos dos routers de diferentes proveedores de internet (por ejemplo, un servicio de cablemódem y otro de ADSL), las solicitudes de conexión se realizarán a ambos proveedores, y la distribución balanceada debería proveer a nuestro servidor de una velocidad de conexión mayor.

Naturalmente, esto no implica necesaria y obligatorioamente la suma matemática de ambos anchos de banda, pero si deberíamos lograr una mayor performance de funcionamiento.

Pueden obtenerse los detalles de la interfaz unida al mostrar los contenidos del archivo de kernel que respecta a estas configuraciones. Para ello hacemos

cat /proc/net/bonding/bond0



Para investigar otros mensajes de interfaces unidas o revisar el estado de los NICs físicos unidos, debemos ingresar en nuestra terminal los siguientes Comandos de Organización:

tail -f /var/log/messages

También podremos usar la herramienta mii-tool para revisar los parámetros del controlador de interfaz de red (NIC), como se muestra a continuación.

mii-tool

Os listaré los tipos de unión de red.

    mode=0 (balance-rr)
    mode=1 (active-backup)
    mode=2 (balance-xor)
    mode=3 (broadcast)
    mode=4 (802.3ad)
    mode=5 (balance-tlb)
    mode=6 (balance-alb)