Mikrotik - Quinta Parte [Balanceo de líneas - ISP]

Iniciado por xyz, Mayo 28, 2017, 01:39:16 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 28, 2017, 01:39:16 AM Ultima modificación: Mayo 29, 2017, 09:18:31 PM por xyz
Buenas en esta ocasión, vamos a ver un poco sobre Balanceo de Carga con diferentes ISP.

¿ Qué es el balanceo de carga de ISP ?

Ayudará a balancear la carga de nuestra LAN (conexiones) entre 2 o más líneas o links de internet. Lo que se balancea son conexiones no ancho de banda.
Esto significa disponibilidad de ancho de banda para garantizar a la LAN.

Para tener un poco más de información invito leer los siguiente papers.
Código: php
 http://mum.mikrotik.com/presentations/CL16/presentation_3125_1456819785.pdf 


Código: php
https://wiki.mikrotik.com/wiki/Balanceo_de_carga_por_tipo_de_trafico



Consideraciones generales
El router Core Mikrotik no debe realizar resoluciones DNS, tampoco cache DNS y menos tener activado WEB-PROXY.

El Core router únicamente realizara el trabajo de Balancear las conexiones entre los diferentes ISP (dependiendo la carga de trabajo).

** El balanceo no es una suma de líneas.

Primeros pasos

La configuración realizada, se basa en el uso de diferentes papers, scripts y depuraciones realizadas.

Se tendrán 3 ISP (proveedores de servicio de Internet).


  • 1-ADSL
  • 2-IP FIJA
  • 3-IP FIJA

Para ello, al realizar el marcado PppOe sobre ADSL, no se deben tildar las opciones "Add Default Route y DNS".



Los segmentos de red a utilizar son:


  • 1- Ip Dinámica --> 10.0.0.2/30
  • 2- 10.0.1.1/30
  • 3- 10.0.2.1/30
  • 4- 172.16.1.10/30 --> Dirección Ip para establecer el enlace con el Router Adminitrador el cual gestionará todos los servicios.

Ello permitirá conectarnos a los Routers para acceder a las configuraciones.

Asignando direcciones IP

Lo primero a realizar es asignar las direcciones Ip's a las interfaces.

Código: php

/ip address
add address=10.0.0.2/30 interface=ether1 network=10.0.0.0
add address=10.0.1.1/30 interface=ether2 network=10.0.1.0
add address=10.0.2.1/30 interface=ether3 network=10.0.2.0
add address=172.16.1.10/30 interface=ether5 network=172.16.1.8




Enmascarando las conexiones

Esta configuración permite salir a internet.

Código: php

/ip firewall nat
add action=masquerade chain=srcnat out-interface=Telecom
add action=masquerade chain=srcnat out-interface=ether2
add action=masquerade chain=srcnat out-interface=ether3




Configurar Rutas y estado de enlace.

Se agregan las rutas en forma estática, ya que "conocemos" las puertas de enlace, direcciones Ip y máscaras de subred.

Código: php

/ip route
add distance=1 gateway=Telecom
add distance=2 check-gateway=ping gateway=10.0.1.2
add distance=3 check-gateway=ping gateway=10.0.2.2


Donde la distancia indicará cual es el enlace primario, y los de respaldo.

Al indicar "check-gateway" constantemente enviará un ICMP para conocer si el enlace está activo o no.



Configurando Mangle y Conexiones

Aquí es donde empieza el verdadero trabajo de balancear las conexiones, configurará el ingreso y egreso de paquetes.

Todo lo que ingresa por una WAN, debe salir por la MISMA WAN

Código: php

/ip firewall mangle
add action=mark-connection chain=prerouting comment="LO QUE INGRESA POR UNA WAN SALE POR LA MISMA WAN" connection-state=new in-interface=\
    Telecom new-connection-mark=Telecom-out_conn passthrough=yes
add action=mark-connection chain=prerouting connection-state=new in-interface=ether2 new-connection-mark=ether2-out_conn passthrough=yes
add action=mark-connection chain=prerouting connection-state=new in-interface=ether3 new-connection-mark=ether3-out_conn passthrough=yes
add action=mark-routing chain=output connection-mark=Telecom-out_conn new-routing-mark=Telecom-out passthrough=yes
add action=mark-routing chain=output connection-mark=ether2-out_conn new-routing-mark=Ether2-out passthrough=yes
add action=mark-routing chain=output connection-mark=ether3-out_conn new-routing-mark=Ether3-out passthrough=yes




Segmentar grupos

Ahora debe proceder a realizar un agrupamiento de conexiones, para este caso particular que existen 3 ISP, notar que se utiliza per-connection-classifier=both-addresses:3/0
Donde indica que clasifica las conexiones en ambos sentidos (upload/download).
En caso de poseer más ISP debe modificar y colocar 4/0....

El trabajo a realizar es marcar las conexiones "Nuevas" donde se agrega una marca de conexion.

Código: php

/ip firewall mangle
add action=mark-connection chain=prerouting comment="BALANCEANDO LAS CONEXIONES" connection-state=new dst-address-type=!local \
in-interface=ether5 new-connection-mark=Telecom-out_conn passthrough=yes per-connection-classifier=both-addresses:3/0
add action=mark-connection chain=prerouting connection-state=new dst-address-type=!local in-interface=ether5 new-connection-mark=\
    ether2-out_conn passthrough=yes per-connection-classifier=both-addresses:3/1
add action=mark-connection chain=prerouting connection-state=new dst-address-type=!local in-interface=ether5 new-connection-mark=\
    ether3-out_conn passthrough=yes per-connection-classifier=both-addresses:3/2


Con la marca de conexion establecida en el script anterior, realizará una marca de ruteo para indicar la interfaz por donde ingresan los paquetes y conexiones como también; establece una marca de ruteo para utilizar luego en el apartado de Routes.
Código: php

/ip firewall mangle
add action=mark-routing chain=prerouting connection-mark=Telecom-out_conn in-interface=ether5 new-routing-mark=salida-ether1 passthrough=\
    yes
add action=mark-routing chain=prerouting connection-mark=ether2-out_conn in-interface=ether5 new-routing-mark=salida-ether2 passthrough=\
    yes
add action=mark-routing chain=prerouting connection-mark=ether3-out_conn in-interface=ether5 new-routing-mark=salida-ehter3 \
    passthrough=yes




Configurar rutas marcadas

El trabajo final, donde utilizará las marcas de rutas "salida-ehter1 / salida-ether2 / salida-ether3"....

Código: php

/ip route
add distance=1 gateway=Telecom routing-mark=salida-ether1
add check-gateway=ping distance=1 gateway=10.0.1.2 routing-mark=salida-ether2
add check-gateway=ping distance=1 gateway=10.0.2.1 routing-mark=salida-ether3
add disabled=yes distance=1 gateway=Telecom routing-mark=server scope=255
add distance=1 gateway=Telecom
add check-gateway=ping distance=2 gateway=10.0.1.2
add check-gateway=ping distance=3 gateway=10.0.2.2


Resultado

El trabajo realizado, permite tener varios proveedores ISP, aquí se utilizaron 3 con 10Mb de bajada y la velocidad de subida es 1Mb/3Mb/5Mb.

Esto permite en el Router Administrador, utilizar todos los servicios que brinda mikrotik, Dns Cache/Web Proxy/QoS PCC y diferentes escenarios tambien implementar un HotSpot, bueno eso quedará para próximas entradas.

Las siguientes imagenes muestran como trabaja el balanceador y como va distribuyendo la carga de forma automatica.



Y por último y no menos importante, como el Balanceador identifica las conexiones de cada ISP.


Síguenos en nuestros grupos y canales de:

Saludos y gracias por leer !!!

Muchas gracias por el aporte, muy útil y además bien explicado para poder entender qué hace cada cosa.
Si no es abusar quisiera me ayudaran con un par de reglas que me permitieran hacer que un cliente que está detrás de un segundo router (administrador) salga a Internet por un solo puerto WAN específico. Gracias de antemano.

Hola No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

En el equipo balanceador, debes crear una regla en mangle que indique Ip origen (ip de tu segmento lan) con cadena pre-routing y asignar una marca de conexion (action -> mark_routing -> new-routing-mark). Esta regla, debe ir por encima de todas las reglas de PCC.

Luego debes ir a routes y establecer el (routing_mark) que has creado anteriormente para concluir eligiendo el gateway que utilizaras.

Con eso serás capaz de sacar una ip evitando el balanceo.