Cuando tenemos un router conectado a internet, hay ocasiones en las que no es suficiente con realizar el encaminamiento a través de un solo proveedor de acceso a internet, sino que es necesario realizar un balanceo de carga entre varias líneas de conexión a internet, como por ejemplo dos lí­neas ADSL. Te contamos como hacer balanceo de carga en Linux.

Al balancear la carga entre varias líneas podemos decidir qué parámetro tener en cuenta para realizar ese balanceo: podemos realizarlo en base a las direcciones IP origen, la dirección IP destino, el puerto origen o destino u otros factores. La configuración que se muestra a continuación balancea la carga de forma aleatoria entre los dos accesos a internet en base al peso que se otorgue a cada enlace. Con esto se consigue repartir la carga entre los dos enlaces en base a su disponibilidad de ancho de banda, por ejemplo.

Realizar un balanceador de carga es una tarea que se puede realizar de forma muy sencilla utilizando un router con GNU/Linux siguiendo los siguientes pasos:

Datos previos para implementar el balanceo de carga en Linux

Suponemos que tenemos los siguientes datos:

eth0: Interfaz conectado a un ADSL
eth1: Interfaz conectado a otro ADSL
IP0: Dirección IP de la máquina en eth0
IP1: Dirección IP de la máquina en eth1
GW0: Dirección IP del gateway en el interfaz eth0
GW1: Dirección IP del gateway en el interfaz eth1
NET0: Subred de la salida ADSL 0
NET1: Subred de la salida ADSL 1

Definir tablas de rutas

Definir dos tablas de routing auxiliares en el fichero /etc/iproute2/rt_tables, simplemente añade estas dos lí­neas:

2 T0
3 T1

Añadir rutas de encaminamiento

Añadir información a las dos tablas auxiliares con información de routing de cada una de las dos salidas:

ip route add default via GW0 dev table T0
ip route add NET0 dev eth0 src IP0 table T0
ip route add default via GW1 dev table T1
ip route add NET1 dev eth1 src IP1 table T1

Añadir las reglas de encaminamiento

Añadir las reglas necesarias para utilizar cada una de las dos tablas auxiliares:

ip rule add from IP0/32 table T0
ip rule add from IP1/32 table T1

Añadir la ruta por defecto

Añadir la ruta por defecto en la tabla principal, que se encarga de repartir la carga. Puedes cambiar el peso de cada enlace después del parámetro weight:

ip route add default scope global nexthop via GW0 dev eth0 weight 1
nexthop via GW1 dev eth1 weight 1

Más información sobre balanceo de carga en Linux

Y esto es básicamente lo que hay que hacer. Aunque recomiendo echar un vistazo a las siguientes direcciones donde lo explican más en detalle:

Howto del LARTC y en especial al apartado que hablan sobre balanceo de carga.

Y como siempre lo mejor es hacer uso de tcpdump y comprobar lo que está pasando por cada interfaz.

Por Byte

11 comentarios en «Balanceo de carga en Linux»
  1. estoy usando un software balanceador en linux en una pentium iv asrok de 3000 mhz con 256 ram cada 2 dias se bloquea … SERA HARDWARE la cpu o que podra ser que recomienda ud ?????

    hasta ahora estoy comenzado a usar servidores linux me han parecido excelentes excepto el problemilla del bloqueo del balanceador ????

  2. Hola, quiero unir 3 lineas ADSL, en una de ellas tengo una IP fija, como puedo conectar y balancear estos tres anchos de banda? todo esto lo puedo hacer desde windows?

    Gracias y saludos!

  3. quisiera saber como se llama ese que usas porque busco uno para eso, uso brazilfw bajo linux pero el balanceo no me funciona…gracias

  4. Hola amigo. posiblemente no lo estes configurando correctamente., yo e usado algunos, te recomiendo usar ClarckConnect. yo e usado 4 lineas ADSL., es unad istribucion de linux y funciona con pocos recursos, pero si te recomiendo utilizar equipos de computo de muy alto rendimiento para cargar el sistema o en su defecto adquirir un servidor jeje aun ke su costo es algo alto, pero el rendimiento es mejor.

  5. Tengo 50 maquinas conectadas a un modem con dirección de IP fijas, adquiri otro modem si compro un balanceador de cargas debo tener direcciones automáticas en los dos modem ya que el nuevo no le puedo colocar ip fija.

    Como hago amigos?

    Mireya Goncalves

  6. Buenos dias, tengo un red 172.16.4.0/22 y quiero reenviar cierto rango de ips por una interfaz de salida y otro rango por otra interfaz (172.16.4.0/23 por eth0 y 172.16.6.0/23 por eth1) no quiero balancear la carga solamente que cada rango salga por su interfaz ya definida, me podrian ayudar.

    1. TE APORTO ALGO QUE ME FUNCIONA.
      DESACTIVA EL DHCP DE LA REDES 4.0 Y 6.0 Y A CADA PC PONLE IP FIJA POR EJEMPLO PC1= 172.16.4.1, PC2=172.16.4.2, ……. PC25= 172.16.26 Y LAS OTRAS 25 PC’S PONLAS EN LA RED 172.16.6.1 A LA 6.26 ESPERO TE FUNCIONE ES MUY IMPORTANTE EL DESACTIVAR EL DHCP DE TUS MODEMS O ROUTERS SALUDOS

  7. Tengo que realizar un a0proyecto que a0es un bancdaealor de carga, el cual es un softwarecapaz de balancear la carga de una red LAN hacia mfaltiples WAN. El proyecto consiste enuna aplicacif3n que sere1 capaz de sumar la velocidad de varias WAN ya sean ADSL, cableMODEM, Wireless WAN, etc. Lo que quiere decir que los usuarios que se encuentren dentrode la red LAN tendre1n la sensacif3n que estare1n navegando desde una misma WAN debidoa que las velocidades de dichos links estare1n sumados. Ademe1s de balancear la carga entrediversas WAN el administrador de la red podre1 configurar desde una interfaz gre1fica o GUItodos los pare1metros que podre1 manejar dicha aplicacif3n los cuales sere1n: balancear cargaspor puertos(HTTP traffic (port 80)SSL traffic (port 443)POP3 traffic (port 110)SMTP traffic (port 25)P2P traffic (various port)Unknown traffic (various port)). Ya0queredaa0saber si me puede ayudar a0con algunos consejos , ya que quiero realizar todo esto como unaa0aplicacif3na0para unaa0distribucif3na0de linux a0(ubuntu a0por ejemplo).

    1. Hola Carlos,

      Claro, puedes comprobarlo analizando el tráfico de salida a través de cada uno de tus proveedores de acceso a Internet, para ver cómo se reparte el tráfico entre cada uno de ellos.

      También puedes comprobarlo desde los equipos que hacen uso de esa salida a Internet, verificando la IP de salida, para ver por cuál de las conexiones están saliendo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.