Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

Configuración avanzada

RoadRobin

Necesito ayuda para realizar una configuración poco standard (creo). Voy a intentar explicarme):

Tengo una red interna que "sale" a internet a través de un servidor Linux. El servidor hasta ahora estaba conectado a un router de ADSL, hasta aqui sin problemas.

La cuestion es que debido a las continuas caidas de los proveedores de internet se ha decidido instalar tb un cablemodem para trabajar con dos compañias independientes. ¿Como puedo balancear las cargas entre las dos conexiones a internet? ¿Como hago para que cuando una de las dos conexiones caiga la otra se encargue de todo?

No se si me he explicado con claridad, si no es así intentaré esquematizarlo.

Ayudadme por favor !!!

Este tema está cerrado a nuevas respuestas. Abre un nuevo tema para retomar la conversación.
MaX

Doy por hecho q tanto el cablemodem como el router se conectan cada uno a una tarjeta de red en el servidor. Supongamos:
eth0 para router adsl y con ip 192.169.1.1
eth1 para cablemodem con ip 192.169.2.1

Para el balanceo de carga lo unico q se me ocurre es q dividas la red en dos subredes (192.169.1.0 y 192.169.2.0 por ejemplo) y configures el NAT para q cada subred salga por una tarjeta de red. Hay algo sobre la NAT es el post sobre enroutados.

Si encuentras otra solucion avisa ;)

En cuanto a lo otro se me ocurre que hagas dos script (en bash por ejemplo) que se ejecuten cada cierto tiempo (15min por ejemplo). Para ejecutarla cada cierto tiempo puedes usar "cron".
Esos scripts lo q deberian hacer es un ping a una IP de internet saliendo cada una por una interza distinta de red, por ejemplo:

ping -I 192.168.1.1 -c 1 bandaancha.st

con ello haces un pingeo a bandaancha.st pasando por eth0 (adsl).
Si hay respuesta, el script no debe hacer nada.
Si no hay respuesta, el script deberia cambiar las reglas del NAT para desviar el trafico a eth1.

El otro script deberia hacer lo mismo pero referido a la conexion de cable.
Si no me explicado bien hazmelo saber :)

Un saludo.

panxab

corria por ahi un how-to muy completo y bueno que trataba sobre todo eso, no se si era el network admin how-to o algo asi

siento no poder ser mas preciso XD

🗨️ 6
RoadRobin

Muchas gracias por responder.

La cosa es que yo buscaba algo mas complejo. Se que en linux hay unos paquetes como el mrtd o el zebra que pueden hacer emulaciones de routers. El problema viene cuando por una tarjeta se esta haciendo un ftp (por ejemplo) y esta consumiendo casi todo el ancho de banda, pues lo que quiero es que las peticiones de páginas web vayan por la otra (es un ejemplo). Resumiendo, lo que busco es un paquete (creo que son los que os menciono arriba) y su forma de configurarlo para que detecte el estado de las conexiones de las tarjetas y enrute hacia el gateway exterior correspondiente según la que menos carga tenga.

Bufff, que complicao es explicarlo, con lo claro que lo tengo en la cabeza. :-P

🗨️ 5
RedStar

Si tienes ambos routers configurados a través de la misma red y las dos ips virtuales del router consecutivas, puedes usar iptables para balancear la ip fuente. Si usas enrutamiento fuente puedes conseguir medio balancear la carga (sin realimentación para hacer un balanceo más real, pero al menos es efectivo).

El ejemplo de configuración de iptables es (asumo tu red local como del tipo 10.0.0.x interna y las ips de salida hacia internet son las 192.168.0.1 y 2 en eth0 o eth1, es indiferente y se controla por el comando ip route):

iptables -A PREROUTING -t nat -i eth0 -d ! 10.0.0.0/24 -j SNAT --to-source 192.168.0.1-192.168.0.2

El enrutamiento fuente se podría ver así (asumo el router 1 como 10.0.0.250 y el router 2 como 10.0.0.251):

ip rule add from 10.0.0.1 table 100
ip rule add from 10.0.0.2 table 101
ip route add default via 10.0.0.250 dev eth0 table 100
ip route add default via 10.0.0.251 dev eth0 table 101

Como puedes ver, cada router podría estar sin problemas en una tarjeta de red distinta, en Linux no existe nada que obligue a una tarjeta de red a estar solo en una red ni cosas similares como Windows.

Cuando me pase por uno de los cibers donde tengo metido balanceo te paso el script real, este es de "memoria" x) y todos saben lo bien q esta mi memoria.

PD: te recomiendo que obligues que los paquetes que llegan por una puerta de enlace sean respondidos por esa misma puerta de enlace (¡sabia que se me olvidaba algo!). Lo puedes hacer con un "default machine" como los 3com, o algo similar y que filtres los paquetes que lleguen de la IP correspondiente a la salida al otro router, así podrás depurar si has puesto bien las rutas. También puedes optar por poner cada router en una interfaz distinta.

Sé que me olvido algo. Hay otras maneras de hacer balanceo de carga, por ahí he visto una técnica que por cada ruta descubierta asigna una puerta de enlace distinta usando el atributo weight en el scope de la ruta, pero según tengo entendido, tras un tiempo puedes saturar una de las líneas, mientras que este método suele ser más "estable".

Recuerdo que tuve que hacer otra chapuza más, ya la pondré cuando la recuerde :)

RedStar

No te permitirán usar BGP4 ni en ninguna empresa de cable ni de ADSL, sobre todo porque podrías corromper sus tablas de enrutamiento con anuncios falsos (si ellos tienen mal configurados o tú mismo las políticas de anuncios de rutas).

Sería lo ideal usar un algoritmo de enrutado así, pero no es práctico en un caso real. 8-)

BocaDePez
BocaDePez

Hola,

He visto tu mensaje de ayuda, y aunque está bastante atrasado en el tiempo supongo que eso me servirá para que me puedas aclarar la solución a la que llegaste.
El problema es que a mi me ocurre algo bastante similar: tengo que balancear la carga entre tres routers ADSL de 3Com. Los tres routers están conectados a una máquina LINUX a través de las correspondientes tarjetas EThernet. Existe una cuarta tarjeta de red donde está la Ethernet de la empresa. Lo que necesito entonces es saber qué puedo utilizar para hacer el balnceo de carga en la máquina LINUX y cómo se hace. Si alguien me puede ayudar le estaría eternamente agradecido. Entiendo que al menos el problema que estaba descrito en el mensaje era muy similar.

Muchas gracias otra vez por todo.

🗨️ 1
IWI

He estado investigando y he encontrado varias soluciones. Primero programas: freshmeat.net/search/?site=Freshmeat&q=l…ad+balancing

y luego configurar el Bind, para que cada conexión vaya rotando por cada IP del servidor/cluster. Así irí recorriendo la tabla cíclicamente.

En BIND es algo como esto:
$ORIGIN misitio.com.
www A 192.168.10.1
www A 192.168.10.2
www A 192.168.10.3
www A 192.168.10.4
www A 192.168.10.5
www A 192.168.10.6
www A 192.168.10.7

Tengo que decirte que no lo he probado, sólo lo he visto por ahí, pero me imagino que debe funcionar.
Saludos

BocaDePez
BocaDePez
MaX

hace algun tiempo de este post, pero por si te hacen falta:

(link roto)

Algo del balanceo comentan tb en (link roto)

Saludos.