16 enero 2010

Enlazar dos tarjetas de red: "bonding"

Este tema llevaba tiempo queriendo escribirlo y queriendo probar alguna cosa más, pero empezaremos por el principio. Vamos a enlazar dos interfaces de red (dos tarjetas de red, vamos) para que funcionen como una sola.

¿Que se consigue enlazando dos tarjetas? Cosas bastante interesantes. La primera, que si una tarjeta casca, no nos quedamos sin red. Esto, si estás en casa con tu ordenador no tiene demasiada importancia, pero si se trata de un equipo que usemos de servidor, puede ser un asunto crítico.

La segunda cosa que conseguimos es duplicar el ancho de banda de red. Si tenemos dos equipos que suelen intercambiar muchos datos (o tenemos un disco duro en red -con dos tarjetas-), a lo mejor queremos que vaya más rápido aun. Si tenemos dos tarjetas enlazadas, podremos conseguir una velocidad de transferencia doble, en teoría. Con dos tarjetas gigabit en cada equipo (y sus dos cables), tendríamos 2 Gbit.

Vamos a ello. Todos los pasos van a hacerse por consola, aunque el editor que pongo es gedit. Si te mueves bien con vi, o usas nano, lo mismo es.
Lo primero que hay que hacer es instalar ifenslave. Éste se encarga de asignar interfaces de red al módulo que las enlaza, bonding. Instalamos:
sudo apt-get install ifenslave
Ahora podemos crear un archivo que indique la configuración del enlace. En lugar de indicarlo aquí, puede hacerse en el propio archivo de configuración de red. No importa.
sudo gedit /etc/modprobe.d/bonding.conf
Le añadimos las lineas:

alias bond0 bonding
options bonding mode=0 miimon=100

El modo 0 permite balanceo de carga y tolerancia a fallos, como comentaba antes. Pueden usarse otros modos que sólo se destinen a una de las tareas, o lo hagan de forma más avanzada. El otro parámetro, es el tiempo entre comprobaciones del estado de la interfaz.

Sería adecuado desinstalar mi querido "NetworkManager", para que no se pelee con nuestra configuración. Ahora vamos a configurar la red por fin. Editamos:
sudo gedit /etc/network/interfaces
Comentamos las lineas (poniendo # delante) que impliquen a ethX, donde X es el número de interfaz. Sólo tendría que quedar
auto lo
iface lo inet loopback

Y debajo añadimos:
auto bond0
iface bond0 inet static
address 192.168.1.33
gateway 192.168.1.1
netmask 255.255.255.0
slaves eth0 eth1
bond-mode 0
bond-miimon 100

Cambiaremos la dirección "address" por la que tengamos nosotros realmente, y "gateway" por la dirección del "router" que tengamos, aunque la mayoría de gente tiene estas direcciones.
Las dos últimas lineas sólo las ponemos en el caso en que no hayamos creado el archivo /etc/modprobe.d/bonding.conf.

Y ya lo tenemos. Para ponerlo en marcha ya en lugar de esperar a la próxima vez que encendamos la máquina:
sudo modprobe bonding
sudo /etc/init.d/networking restart

2 comentarios:

Anónimo dijo...

Hola 64 una pregunta eth0 y eth1 deben perteneser a la red de bond0 o pueden ser todas redes distintas osea:

bond 192.168.1.0
eth0 192.168.2.0
eth1 192.168.3.0

El 64 dijo...

Sólo se configura red en la bond0, tal como indiqué en el artículo.