Mikrotik dual wan failover con IPs privadas
 

Mikrotik, es de origen Leton y fabrica principalmente routers y switches con su propio sistema operativo para gestionarlos que se denomona RouterOS.
En general, presenta una solución para la navegación, destrás de un firewall y tiene una amplia gama de herramientas para aplicar soluciones complejas.... pensaba poner de manera sencilla.. pero no.. de manera compleja, lo que motivo este pequeña nota.

El planteo del problema

Configurar hoy por hoy un pequeño router/firewall para navegación es una tarea rutinaria que no merece mayor explicación, sin embargo, hacerlo con dos salidas WAN en load balancing y fault tolerant no esta tan simple.
Algunas soluciones, tanto de hardware como de software proporcionan configuraciones simples con interfaces intuitivas.. pero .. este no es el caso

Vamos al planteo, tenemos dos conexiones WAN con sendos ISP, cada uno de los cuales nos provee un router ... peeeeeerroooo.. siempre hay un pero... no hay configuración de bridge, o sea, la IP que recibimos en nuestra pata WAN no va a ser pública... sino, del rango privado.

Detalle del problema

Hasta aqui, parece estar todo ok, entonces cual es el problema real?.
El problema real radica en cómo darnos cuenta cuando un ISP se cae... porque Mikrotik nos provee esta posibilidad pero via PING al Gateway declarado, pero como dicho Gateway es en realidad la IP LAN del router que nos entregó el proveedor, nuestro Mikrotik solo se dará cuenta de la caída si el router del ISP se apaga o se desconecta, pero no si pierde conexión a internet, porque su conexión LAN se mantiene.

Entonces? que solución se puede aplicar..

Bueno.. Mikrotik salió a la palestra con lo que dio en llamar rutas recursivas...ehhhh? ..bueno.. es lo que hay.....

Estas suertes de rutas recursivas implican la utilización de una IP de internet para "chequear" via ping si el enlace está funcionando... ahhh pero es lo mismo que hacen todos... esperá.. no te apures.. no es tan simple.

En este caso, las IPs públicas que usaremos, que normalmente serán de servicios que estamos seguros funcionaran el 99.999% del tiempo (todo se cae alguna vez...), como por ej. 1.1.1.1 (CloudFlare) u 8.8.8.8 (Google) no serán utilizadas como consulta DNS o solo chequeo de PING, sino que serán declaradas como "Default Gateway" en cada ETH de cada ISP, es decir como destino para la red 0.0.0.0/0

Si no estás suficientement confundido aún, a su vez, declararemos los verdaderos Default Gateway como Gateway exclusivos para las IPs a chequear, con los que nos quedará una tabla de ruteo, más o menos como esta.

Como funciona esto???

Bueno.. en los detalles está la explicación.
Hasta ahora, se entiende que le hemos dicho al router que tiene Default Gateway en Eth1 y otro en Eth2, pero hay una trampa, que se explica cuando hacemos visibles los Scope, los Target Scope y los chequeos via Ping, como en la siguiente imagen.

Básicamente estamos diciendo, usa el chequeo de Ping para el Default Gateway que te indico, pero como alteramos los valores de Scope y Target Socpe, la salida real es por el gateway indicado en el Target Scope menor.

Configuración individual

Entonces básicamente para que las rutas recursivas funcionen, necesitamos declarar un default-gateway para cada ISP que en realidad apunta a una ip que vamos a verificar, pero cuyo Target-Scope es mayor que el Gateway real que queremos usar

De donde salen los valores de Target-Scope y Scope? En realidad, los que usé son semi arbitrarios, porque 10 implicaría una ruta directamente conectada, y 30 una ruta estática, asi que utilicé valores más altos para clarificar (.. espero..).

Uno por Uno

Inicialmente entonces generamos el primer Default-Gateway 0.0.0.0/0 para nuestra placa Eth1, usando como IP de Gateway 1.1.1.1, e indicamos los siguiente valores, Distance 1 (va a tener el mismo que la placa Eth2 para hacer load-balancing), Scope 30 y Target-Scope32, luego, indicamos la Interface a utilizar ether2 y por último que va en la tabla principal o sea main

Luego vamos a generar el segundo Default-Gateway 0.0.0.0/0 para nuestra placa Eth2, usando como IP de Gateway 8.8.8.8, e indicamos los siguiente valores, Distance 1 (va a tener el mismo que la placa Eth1 para hacer load-balancing), Scope 30 y Target-Scope32, luego, indicamos la Interface a utilizar ether2 y por último que va en la tabla principal o sea main

Hasta ahi todo bien, pero no aun no hicimos los chequeos, ni indicamos los Gateway reales por lo que nada funciona...

Continuamos entonces creando los verdaderos Gateways, para ello agregamos una ruta con destino específico, primero para 1.1.1.1/32, con salida en el Gateway que corresonde a la Eth1 o sea 192.168.1.1, con distance 1, Scope 30 y Target-Scope 31

Seguimos ahora con nuestra Eth2, creando los verdaderos Gateways, agregamos una ruta con destino específico, para 8.8.8.8/32, con salida en el Gateway que corresonde a la Eth1 o sea 192.168.100.1, con distance 1, Scope 30 y Target-Scope 31

Ok.. entonces como quedó la ruta...????

Ummm y esto funciona?

Una vez que hicimos estos cambios en nuestra tabla de ruteo, podemos verificar la funcionalidad de varias formas, desconectando el WAN de uno de los ISP, haciendolo pasar por una VLAN de un Switch y bloquearla, o bien directamente bloquendo el destino de IP de contro..

En la imagen anterior, hicimos esto último con una regla de firewall, y dentro del rango de los 10 segundos, Mikrotik verificó que el ping no llegaba y cambió el estado de la ruta correspondiente (observe la ruta indicada como Is donde I = Inactive).

Luego modificamos la regla de firewall para bloquear la ip 1.1.1.1 y liberar la ip 8.8.8.8 y dentro de los 10 segundos....(vease que ejecutamos ip route print dos veces para demostrar que la ruta se actualizó pasado cierto tiempo

Conclusiones

Hay muchos firewall/routers que pueden proveer este servicio, cada uno de ellos tiene sus esquemas y configurciones.
Mikrotik es realmente un routerboard muy flexible y adaptable a diversas circunstancias, pero, su interfaz aunque amigable, ha quedado algo rígida para lo que se espera en la actualidad, tanto la configuración via Winbox o WinFig podrían incluir mayores ayudas a casos típicos como este.
Por su puesto, que necesitas conocimiento para configurar, y me encanta la flexibilidad que da la línea de comandos, pero eso no quita que la GUI.. se quede un poco corta..

 

 

Volver a lista de Notas