Aqui os dejo este fantástico artículo para hacer bonding con vuestras tarjetas de red. Solamente decir que con este manual se pueden juntar dos conexiones de internet en un mismo ordenador, sumando el ancho de banda de cada una de ellas y usando solamente una IP. Sin mas preambulos os dejo aqui el manual.
Introducción – bonding
El controlador bonding, originalmente creado por Donald Becker, está incluido en prácticamente todas las distribuciones de GNU/Linux y permite sumar las capacidades de varias interfaces físicas de red con objeto de crear una interfaz lógica. Esto se lleva a cabo con el objeto de contar con redundancia o bien balanceo de carga.
Procedimientos.
Fichero de configuración /etc/modprobe.conf.
Se establece el controlador bonding para crear la interfaz bond0 del siguiente modo:
alias bonding bond0
controlador puede llevar parámetros que permiten modificar su funcionamiento, de entre los cuales los más importantes son mode y miimon. A fin de obtener un buen funcionamiento confiable, es importante configurar al menos éstos dos parámetros.
Para fines generales, se puede simplemente configurar del siguiente modo:
alias bond0 bonding options bonding mode=0 miimon=0
Lo anterior establece en el parámetro mode la política de balanceo de carga y tolerancia a fallos y desactiva en el parámetro miimon la supervisión de MII, que corresponde la configuración más común.
Al terminar con el fichero /etc/modprobe.conf, es importante utilizar el mandato depmod para regenerar el fichero modules.dep y los ficheros mapa de los controladores.
depmod
Lo anterior solo debe devolver el símbolo de sistemas después de unos segundos.
Parámetro mode.
Se utiliza para establecer la política baja la cual se hará trabajar las tarjetas en conjunto. Los posibles valores son:
0 (cero): Establece una política de Round-Robin, que es un algoritmo que asigna una carga equitativa y ordenada a cada proceso, para proporcionar tolerancia a fallos y balanceo de carga entre los miembros del arreglo de dispositivos. Todas las transmisiones de datos son enviadas y recibidas de forma secuencial en cada interfaz esclava del arreglo empezando con la primera que esté disponible. Es la política predeterminada del controlador y la que funciona para la mayoría de los casos.
1 (uno): Establece una política de respaldo activo que proporciona tolerancia a fallos. Todo el tráfico se transmite a través de una tarjeta y solo se utilizará la otra en caso de que falle la primera.
2 (dos): Establece una política XOR (exclusive-or, exclusiva-o) para proporcionar tolerancia a fallos y balanceo de carga. Este algoritmo compara las solicitudes entrantes de las direcciones MAC hasta que coinciden para la dirección MAC (Media Access Control) de una de las tarjetas esclavas. Una vez que se establece el enlace, las transmisiones de datos de datos son enviadas en forma secuencial empezando con la primera interfaz disponible.
3 (tres): Establece una política de Round-Robinpara proporcionar tolerancia a fallos y balanceo de carga. Todas las transmisiones de datos son enviadas de forma secuencial en cada interfaz esclava del arreglo empezando con la primera que esté disponible.
En el siguiente ejemplo se establece la política 0 (cero):
options bonding mode=0
Parámetro miimon.
Se utiliza para especificar cada cuantos milisegundos se debe supervisar el enlace MII (Media Independent Interface). Se utiliza cuando se necesita alta disponibilidad para verificar si la interfaz está activa y verificar si hay un cable de red conectado. En el siguiente ejemplo se establecen 100 milisegundos:
options bonding mode=0
Se requiere que todos los controladores del arreglo de tarjetas tengan soporte para MII. Para verificar si el controlador de la tarjeta tiene soporte para MII, se utiliza el mandato ethtool, donde la salida debe devolver el parámetro Link Detected con el valor yes. Ejemplo:
ethtool eth0
Lo anterior debe devolver algo similar a lo siguiente:
Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Half Port: MII PHYAD: 32 Transceiver: internal Auto-negotiation: on Supports Wake-on: pumbg Wake-on: d Current message level: 0x00000007 (7) Link detected: yes
Para desactivar esta función, se utiliza el valor 0 (cero). Ejemplo:
options bonding mode=0 miimon=0
Fichero de configuración /etc/sysconfig/network-scripts/bond0.
Este se configura con los mismo parámetros que una tarjeta normal. Requiere los parámetros ONBOOT, BOOTPROTO, DEVICE, IPADDR, NETMASK y GATEWAY.
En el siguiente ejemplo se configura la interfaz bond0 con la dirección IP estática 192.168.0.1, máscara de subred 255.255.255.0, puerta de enlace 192.168.0.254 y la interfaz inicia junto con el sistema creando el fichero /etc/sysconfig/network-scripts/ifcfg-bond0 con el siguiente contenido:
DEVICE=bond0 ONBOOT=yes BOOTPROTO=static IPADDR=192-168.0.1 NETMASK=255.255.255.0 GATEWAY=192.168.0.254
Las interfaces de red a utilizar como esclavas se configuran de la siguiente forma, considerando que se tiene eth0 y eth1, el contenido del fichero /etc/sysconfig/network-scripts/ifcfg-eth0 sería:
DEVICE=eth0 BOOTPROTO=none ONBOOT=no SLAVE=yes MASTER=bond0
Y el contenido del fichero /etc/sysconfig/network-scripts/ifcfg-eth1 sería:
DEVICE=eth1 BOOTPROTO=none ONBOOT=no SLAVE=yes MASTER=bond0
Iniciar, detener y reiniciar el servicio network.
Para ejecutar por primera vez el servicio network tras configurar el acoplamiento de tarjetas, utilice:
service network start
Para hacer que los cambios hechos tras modificar la configuración surtan efecto, utilice:
service network restart
Para detener el servicio network utilice:
service network stop
Comprobaciones.
Para verificar que la interfaz lógica quedó configurada, en el caso de haber utilizado las interfaces eth0 y eth1, utilice:
ifconfig
Lo anterior debe devolver algo similar a lo siguiente:
bond0 Link encap:Ethernet HWaddr 00:01:80:41:9C:8A inet addr:192.168.1.64 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::201:80ff:fe41:9c8a/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:5128 errors:0 dropped:0 overruns:0 frame:0 TX packets:3817 errors:7 dropped:0 overruns:0 carrier:0 collisions:3 txqueuelen:0 RX bytes:3493139 (3.3 MiB) TX bytes:495025 (483.4 KiB) eth0 Link encap:Ethernet HWaddr 00:01:80:41:9C:8A inet6 addr: fe80::201:80ff:fe41:9c8a/64 Scope:Link UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:5056 errors:0 dropped:0 overruns:0 frame:0 TX packets:3781 errors:0 dropped:0 overruns:0 carrier:0 collisions:3 txqueuelen:1000 RX bytes:3474685 (3.3 MiB) TX bytes:488632 (477.1 KiB) Interrupt:11 Base address:0xc000 eth1 Link encap:Ethernet HWaddr 00:01:80:41:9C:8A inet6 addr: fe80::201:80ff:fe41:9c8a/64 Scope:Link UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:72 errors:0 dropped:0 overruns:0 frame:0 TX packets:36 errors:7 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:18454 (18.0 KiB) TX bytes:6393 (6.2 KiB) Interrupt:10 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:6138 errors:0 dropped:0 overruns:0 frame:0 TX packets:6138 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:8364864 (7.9 MiB) TX bytes:8364864 (7.9 MiB)
Para verificar que las interfaces de red están funcionando correctamente, y que hay un cable de red conectado a éstas, se utiliza el mandato ethtool del siguiente modo:
ethtool eth0 |grep "Link detected" ethtool eth1 |grep "Link detected"
Si ambas tarjetas tiene soporte para MII, lo anterior debe devolver lo siguiente:
Link detected: yes Link detected: yes
Bibliografía sobre bonding
- Thomas Davis: http://www.linuxfoundation.org/en/Net:Bonding
- Thomas Davis: http://www.kernel.org/pub/linux/kernel/people/marcelo/linux-2.4/Documentation/networking/bonding.txt