Está en la página 1de 12

Cómo configurar bondign la vinculación

LACP en Ubuntu 18.04


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.
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.
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.
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.
Bond Mode 3 (broadcast)

Transmite todas las tramas por todas las interfaces slave. Este modo nos ofrece tolerancia
a fallos
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.
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.
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 interfaces que formarán el bonding son
ns161, ens192, ens224, ens256. La parte de configuración del bond IPTV en el fichero de
configuración queda de la siguiente forma:

# This file describes the network interfaces available on your system


# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface


auto lo
iface lo inet loopback

# The primary network interface

#ens160 configuration
auto ens160
iface ens160 inet manual
bond-master IPTV

#ens192 configuration
auto ens192
iface ens192 inet manual
bond-master IPTV

#ens224 configuration
auto ens224
iface ens224 inet manual
bond-master IPTV

#ens256 configuration
auto ens256
iface ens256 inet manual
bond-master IPTV

# IPTV is the bonded NIC and can be used like any other normal NIC.
# IPTV is configured using static network information.
auto IPTV
iface IPTV inet static
address 192.168.30.250
netmask 255.255.255.0
network 192.168.30.0
broadcast 192.168.30.255
gateway 192.168.30.254

# IPTV uses standard IEEE 802.3ad LACP bonding protocol


bond-mode 4
bond-miimon 100
bond-lacp-rate fast
bond-slaves ens160 ens192 ens224 ens256
bond-downdelay 0
bond-updelay 0
bond-xmit_hash_policy 1

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

# sudo systemctl restart networking.service


Ahora listaremos las interfaces de red y veremos como tenemos: ens161, ens192, ens224,
ens256, IPTV y el loopback:

# ifconfig -a

Listado de interfaces

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

# cat /proc/net/bonding/IPTV
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

Ping a Google 2 interfaces UP


Ahora mismo el tráfico está saliendo por una de las interfaces de red. todas 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:

Desconectamos la interfaz de red

La interfaz que está como SLAVE RUNNING es la interfaz ens161 y como SLAVE es la
ens12, ens224, ens256. Podemos verlo con el comando "ifconfig". Con el PING
funcionando a Google y desconectando la interfaz ens161 (SLAVE RUNNING), veremos
como la intarfaz "cae" pero el PING se recupera y el tráfico lo asume la ens192 y sucesivo
(SLAVE ahora nueva SLAVE RUNNING):
Ping a Google se recupera por la interfaz pasiva/slave

Si hacemos un ifconfig, podemos ver como ahora ens161 es la interfaz SLAVE y la ens192
la interfaz SLAVE RUNNING:
Estado del bond tras la desactivación de ens161

El estado del bonding podemos comprobarlo a través del fichero /proc/net/bonding/IPTV.


Ahora se puede ver que ens161 está DOWN:

# cat /proc/net/bonding/IPTV
Estado del bond IPTV

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

UBUNTU DESINTALAR NETPLAN

Hola de nuevo, en esta ocasión vamos a ver como desinstalar netplan de un ubuntu server
18.04, y utilizar el sistema antiguo de configuración de redes basado en
/etc/networ/interfaces.

lo primero a realizar el la modificación de /etc/default/grub

sudo nano /etc/default/grub


justo debajo de GRUB_CMDLINE_LINUX=""

agregamos la siguiente línea

GRUB_CMDLINE_LINUX="netcfg/do_not_use_netplan=true"

grabamos y actualizamos el grub

sudo update-grub

ahora instalamos el paquete ifupdown

sudo apt install ifupdown -y

y también eliminamos los paquetes de netlan

sudo apt purge netplan.io -y

y eliminar archivos residuales

sudo rm -vfr /usr/share/netplan /etc/netplan

a partir de aqui podemos configurar mediante el sistema antiguo.

sudo nano /etc/network/interfaces

y dejamos el fichero a nuestro gusto (en micaso algo asi)

auto lo
iface lo inet loopback

auto ens160
iface ens160 inet static
address 192.168.1.62
netmask 255.255.255.0
gateway 192.168.1.1

y grabamos

el nombre de la interfaz de red si no lo sabemos lo podemos averiguar a través de ifconfig


-a

Detalle importante, la configuración de servidores dns NO funciona en el fichero


/etc/network/interfaces, para configurar las dns debemos hacerlo de la siguiente manera.

sudo nano /etc/systemd/resolved.conf


agregamos la siguiente línea

DNS=192.168.1.X 192.168.1.Y

y grabamos

sustituir las dns que yo he puesto por las que a vosotros os venga bien, ya sean
dns internas o públicas.

Evitar que el resolv.conf cambie solo


A veces cuando se tiene una conexión por dhcp pero se quiere tener el dns diferente resulta
difícil ya que el archivo interfaces cambia automáticamente el archivo resolv.conf. Para
evitar esto hay que hacerlo inmutable.

Para empezar renombrar el archivo resolv.conf


  # mv /etc/resolv.conf /etc/resolv.conf.bak

Luego, editar el archivo con los valores que se quiera


  # nano /etc/resolv.conf

Y por último, hacer que el archivo sea inmutable.


  # chattr +i /etc/resolv.conf

También podría gustarte