Mikrotik: Balanceo doble WAN con Rutas Recursivas
Introducción
El Balanceo de carga consiste en distribuir paquetes IP entre diferentes enlaces. Si se cuenta con IPs propias (Registradas en LACNIC por ejemplo), el balanceo puede ser por paquetes, lo que es más simple y presenta excelentes resultados.
En instalaciones Hogar o PYME, donde se cuenta con una única IP por enlace entregada por el ISP, y nuestros usuarios utilizan NAT, se puede realizar un balanceo de conexiones, de manera de asegurar la concordancia del IP de origen con la WAN utilizada.
Una de las potencialidades con que cuentan los Router Mikrotik es la opción Multi-WAN, lo que significa que podemos conectarnos a más de una conexión WAN, incluso con proveedores de servicio diferentes, con lo que logramos:
- Aprovechar el ancho de banda de ambas conexiones WAN al distribuir las conexiones entre ellas
- Contar con una conexión de respaldo, el caso de falla el nuevo tráfico se deriva a la interface operativa
Configuración
Escenario
Se considera un router Mikrotik con 2 enlaces asimétricos 100/20 Mbps, lo que puede ser tomado como base para aumentar la cantidad de enlaces según lo que soporte el hardware, con el cuidado que la sumatoria de los enlaces WAN no deberá superar la velocidad de la puerta LAN. El hecho que los enlaces WAN tengan la misma velocidad nos brinda una configuración más simple, evitando ponderar la distribución.
Se considera una instalación doméstica o de empresa pequeña, con un una utilización de Internet de navegación simple.
Marcado de conexiones
Para comenzar este ejercicio, debemos dirigirnos a la opción de /ip firewall mangle
,
que es donde se desarrollará la mayoría de configuraciones para el
balanceo y agregado de velocidad de los enlaces.
Luego de, para empezar a crear las reglas, solo clickeamos en el botón de agregar, que está simbolizado por un ➕ de color azul en la parte superior izquierda de la ventana.
Se deben crear ‘N’ cantidad de reglas de prerouting, dependiendo de la cantidad de enlaces WAN (2 para nuestro ejemplo) y deben ser parametrizadas como:
- Seleccionar "
Chain
:Prerouting
", con lo que se selecciona los paquetes antes de la aplicación del NAT y Ruteo - En la pestaña GENERAL , para las interfaces o segmentos de entrada
del tráfico, se puede usar “
Src. Address:
” o “In. Interface:
”, dependiendo del requerimiento (Segmento de red o Interfaz), - Se habilita la opción de “
Connection State:
”, y se cotejan los recuadros de “established
”, “related
” y “new
”.
Clasificación de conexiones: "PCC"
Continuamos con la aplicación del criterio de clasificación de las conexiones en la pestaña Advanced
-
En la opción “
Per Connection Classifier
” se selecciona la opción “both addresses and ports
” para indicar que clasifique considerando IP de origen y destino como también los puertos. Con ello se logra una mejor distribución (balance) de las conexiones. En el caso de presentar problemas con algunos servicios como Netflix o Bancos, puede ser recomendable evaluar el criterioboth addresses
- Luego, en las casillas siguientes se configura la cantidad de líneas que participarán en el balanceo de carga (N=2 en nuestro caso) y cual de ellas aplicará la acción indicada en la regla, dado por un iterador que va de 0 a N-1.
En la pestaña "Extra
" se configura que el tipo de tráfico a participar en la
regla sea de tipo “LOCAL INVERSO
”, lo que significa que solo el tráfico que,
explícitamente NO sea destinado a direcciones locales del router, serán tomadas en cuenta. Esto será para evitar que se apliquen éstas reglas de balanceo a nuestro tráfico interno de nuestra red.
- Debe habilitarse la opción “
Dst. Address Type
” y seleccionar la opción “local
” y cotejar la casilla de “Invert
”.
Marcado de Conexiones
En la pestaña de “ACTION
”, se selecciona el tipo de acción que realizará la
regla de Mangle.
- Se selecciona la acción “
mark connection
”. - Cuando se habilite el campo de “
New Connection Mark:
” se especifica el nombre de la marca de conexión deseada. es recomendable siempre usar comentarios o marcas que hagan referencia a las interfaces a usar, para que al momento de volver a revisar la configuración, ya avanzado el tiempo, se pueda entender más fácil a que hace referencia cada una. - Debe asegurarse de estar habilitada la opción “
Passthrough
”, para permitir el paso a las siguientes reglas de Mangle.
Repetimos el proceso de creación de reglas para las siguientes líneas,
Como una forma de agilizar, se puede clickear el botón “Copy
” para realizar
una copia de la regla y solo cambiar los parámetros de nombre de
marca y la interfaz de salida de internet a utilizar.
Marcado de Enrutamiento
El siguiente proceso es la creación de una regla de prerouting que realice la marca de Routing para cada paquete con la marca de conexión correspondiente definida en la fase anterior.
En la pestaña “GENERAL
” se configura la interfaz o segmento a usar y se
indica cuál de las marcas se utilizará.
Habilitamos la opción “Connection Mark:
” y seleccionamos la marca
creada previamente.
En la pestaña “ACTION
”, seleccionamos el tipo de acción a realizar:
- Seleccionamos la acción “
mark routing
”, y cuando se habiliten las casillas de lugar, especificamos el nombre que llevará la marca de enrutamiento. - En la casilla “
New Routing Mark:
” se especifica el nombre de la marca.
Passthrough
dado que no se requiere la aplicación de más criterios sobre los paquetes.
Repetir el proceso para las siguientes interfaces a participar en el balanceo:
- General /
Connection Mark
: ISP2_Connection - Action /
New Routing Mark
: to_ISP2
Luego de haber terminado de crear las 4 reglas (2 reglas para cada WAN y cada acción), debe quedar algo parecido a esto:
En caso de tener una lista de direcciones que deba participar o evitarse en el tráfico del balanceo, se crean en la pestaña de “/ip firewall address list”, y se selecciona para su uso en la pestaña “Advanced
”, dentro de la regla de Mangle.
Rutas Base de monitoreo
Luego de creadas las políticas de marcado de conexión y enrutado, se deben crear las rutas por defecto que utilizarán dichas marcas. Y desde este punto emplearemos rutas Recursivas. La motivación detrás de esto, reside en que en la mayoría de los casos estamos detrás de un equipo del proveedor que realiza la función de NAT, y el monitoreo del servicio, no basta validar el estado del link o del siguiente salto, puesto que nunca comprobaremos si realmente perdimos conexión a la nube por alguna falla del lado del ISP. Para esto, creamos monitores de conexión apuntando a lugares fijos en internet que pueden ser servicios DNS que siempre estarán disponibles. (Como mejores prácticas, se recomienda no monitorear las mismas direcciones que se utilicen como servicios DNS del router.
Para este proceso debemos dirigirnos a la opción /ip routes
Empezaremos por crear rutas estáticas que servirán como ‘monitores’ de internet por las interfaces WAN seleccionadas.
- Se especifica dentro del campo “
Dst. Address:
” la dirección IP del servicio que usaremos como ‘monitor’, en este caso usaremos las direcciones de los DNS públicos de CloudFlare y Quad9 de IBM (1.1.1.1 y 9.9.9.9), sin embargo, esto es solo preferencia y queda a la discreción del usuario y como Gateway, usaremos las IP de los default gateways obtenidos en las interfaces WAN. - Se deben habilitar las opciones “
Check Gateway:
” usando el parámetro ‘ping’ y modificar el parámetro “Scope:
” a 10, ya que por defecto viene configurado con el valor 30, con lo cual e permitirá la utilización de esa IP como gateway para otra ruta. Luego de clickear el botón de Apply, debemos obtener a la derecha de “Gateway”, el mensaje: “reachable+interfaz WAN”
Rutas Recursivas
Luego de creadas las rutas estáticas de monitoreo, se procede a crear rutas por defecto, que apuntarán a los ‘monitores’, en vez de utilizar las direcciones IP de los default-gateways de los enlaces WAN.
Habilitaremos la opción “Routing Mark:
” y seleccionamos la marca de enrutamiento a utilizar por la ruta deseada (to_ISP1
) y repetimos el proceso para las rutas por defecto de las demás interfaces a participar en el balanceo (to_ISP2
...). Debemos recordar que las marcas a utilizar deben corresponder creadas en las reglas de mangle, para así evitar fallos en la configuración.
“recursive via ‘default-gateway IP’ + interfaz WAN”.
Rutas Recursivas Failover
Luego de creadas las rutas por defecto con sus marcas, y para fines de failover, se copian las mismas rutas, especificando la distancia con valor 2 e invertiremos las marcas de enrutamiento. Esto para el caso de falla en alguna WAN, se evite que por las políticas de mangle, exista tráfico direccionado con una marca cuya gateway principal falla y se convierta en un agujero negro de tráfico. Ésta gateway se activa automáticamente al detectar una falla (Check Gateway: ping) de la ruta base de monitoreo primaria, evitando la pérdida total de conectividad.
La caida de un enlace produce la pérdida de sus conexiones activas, las nuevas conexiones se generan con la IP de salida de la interface de respaldo, lo que puede producir un error en ciertos sistemas (Bancos, Comercio, VPN, Juegos, otros), en algunos casos puede ser necesario una reconexión a dicho servicio.
Al reestablecerse el servicio WAN, las nuevas sesiones utilizarán la IP de dicha WAN como origen, por lo que nuevamente puede producir rechazo por parte del servidor al detectar a un usuario desde 2 IP distintas.
Al final, debería obtenerse una ventana de rutas similar a esta:
NAT
No debemos olvidar que para cada enlace que deseemos utilizar como conectividad WAN, debe realizarse una regla de NAT “masquerade” especificando la interfaz de salida del mismo:
Verificación de Tráfico
Si todo funciona como debería, las pruebas de tráfico deberían agregar el ancho de banda de ambas interfaces y sumarlo en un valor total.
En el caso de este laboratorio, se utilizaron dos líneas de 100/20Mbps, sumando un promedio teórico de 200/40Mpbs.
Generado por Sistema y almacenado en cache
Wyzer Luis Hernán de la Barra |
|
Teléfono: | +56995451689 |
WhatsApp: | +56995451689 |
E-Mail: | info@wyzer.cl |
Web: | www.wyzer.cl |