Mikrotik Fail-Over v4

      Comments Off on Mikrotik Fail-Over v4

Descripción

Para lograr la redundancia a Internet, los ISPs y las empresas establecen múltiples conexiones a uno o varios proveedores de servicios. El problema nace cuando necesitamos monitorear la conectividad desde dentro de nuestra red hacia Internet. Para solucionar este problema desarrollamos integramente, un script que opera sobre routers Mikrotik. El script de Fail-Over permite la automatización del control de estado de lineas de conexión a proveedores y peers.

Cambios en la version 4.

La version 4 de nuestro script es totalmente distinta a la version 3. El programa fue reescrito totalmente para mejorar su estabilidad y potencialidad.
No es compatible con la configuración de su antecesor.
Sus principales cambios son:

  • Eliminación del control de latencia. (Se va a mejorar el modulo y se lo reactivara en una próxima versión).
  • Scripts de secuencias de prubas personalizado para cada peer.
  • Individualización de scripts para mejora de configuración.
  • Nueva vista en consola.
  • Mejora en vista de array de carga de Peers.
  • Recordatorio de estado de peer si es DOWN.
  • Reseteo de estados cuando el router se reinicia.

Características

  • Chequeo de estado de interfaz de conexión a Internet.
  • Chequeo de alcance de gateway.
  • Chequeo de acceso a Internet en la conexión vía ping.
  • Chequeo de acceso a Internet en la conexión vía http.
  • Chequeo de tráfico en interfaz.
  • Notificación vía log de router.
  • Notificación vía Telegram.
  • Carga de [/system note] para el recupero de la información vía SNMP.
  • Scripts personalizados de notificacion, secuencia de pruebas y accion ante down y up de peer.
  • Activación global de notificaciones.
  • Activación global de scripts para eventos UP y DOWN.
  • Contador de errores.
  • Retardo antes de ejecución de acción.
  • Recordatorio de estado de peer si es DOWN.
  • Reseteo de estados cuando el router se reinicia.

Instalación

La instalación del programa se realiza mediante la ejecución de una serie de comandos en consola. Tenga en cuenta que son muchas lineas y esto puede provocar un fallo en la instalación para equipos con cpu chico.

Pasos

  1. Copiar la sección de instalación y pegar en un terminal de Mikrotik.
  2. Crear scripts de prueba, notificación y eventos personalizados si lo requiere.
  3. Crear la cantidad de peers que necesitemos monitorear siguiendo el esquema de ejemplo del archivo “Crenein-FaOv-Peers-Config“.
  4. Configurar todos los datos de cada array de peer.
  5. Declarar todos los peers como variables globales y en el array de chequeo en los siguientes scripts: (Crenein-FailOver, Crenein-FaOv-Remember, Crenein-FaOv-Startup)
  6. Configurar la aplicación en el archivo “Crenein-FaOv-Global-Config“.
  7. Ejecutar manualmente el script desde la consola con el comando “/system script run Crenein-FailOver” para verificar su correcto funcionamiento.
  8. Configurar la ejecución automática en [/system scheduler].
  9. Habilitar los schedulers.

Items a tener en cuenta

  • La ruta de fail-over debe tener el comentario “CreneinFaOvRoute” exactamente, ya que usa este dato para la identificación de la misma.
  • Cuando existen parametros de habilitar o deshabilitar se utiliza 0 o 1.
    (0 disabled |1 enabled)

Analizando elementos de array de peer.

:global peer1 {
  pname="IZ";
  penabled=1;
  pifname="ether1";
  pdefaultroutecomment="W1-R1-N1-RE";
  pgateway="138.0.154.1";
  proutingmark="W1-R1-N1-RE";
  pprobescript="Crenein-FaOv-Default-Probe";
  pnotificationenable=1;
  pnotificationscript="Crenein-FaOv-Default-Notification";
  peventscriptenable=1;
  pupeventscript="Crenein-FaOv-Default-UpEvent";
  pdowneventscript="Crenein-FaOv-Default-DownEvent";
  ppeerstatus=1;
  pactiondelay=2;
  pdownscount=0;
  pupscount=0;
}

pname -> Nombre del peer.
penabled -> Habilita o desabilita el peer. (0 disabled |1 enabled)
pifname -> Nombre de la interfaz.
pdefaultroutecomment -> Comentario de la ruta por defecto del peer.
pgateway -> IP o interfaz de gateway del peer.
proutingmark -> Marca de ruta del peer.
pprobescript -> Script que se utilizara para determinar el estado del peer.
pnotificationenable -> Habilita o desabilita la notificacion para el peer. (0 disabled |1 enabled).
pnotificationscript -> Script que se utilizara para notificar el estado del peer.
peventscriptenable -> Habilita o desabilita la ejecucion de evento para el peer. (0 disabled |1 enabled).
pupeventscript -> Script que se utilizara para ejecutar la accion requerida ante cambio de estado de DOWN a UP del peer.
pdowneventscript -> Script que se utilizara para ejecutar la accion requerida ante cambio de estado de UP a DOWN del peer.
ppeerstatus -> No se configura. Representa el estado actual del peer. (0 fail |1 ok).
pactiondelay -> Se configura con la cantidad de veces que se ejecutara la prueba antes de aplicar una accion y notificar.
pdownscount -> No se configura. Representa la cantidad de veces que se marco el peer como DOWN antes de ejecutar una acción.
pupscount -> No se configura. Representa la cantidad de veces que se marco el peer como UP antes de ejecutar una acción.

Analizando configuración global.

##----------------Global Configuration----------------##
#V4.0
#
##Notifications.
:global notificationglobalenabled 1;
:global devicename "Identity";
###Telegram config.
:global telegrambot "token";
:global telegramchatid "chat-id";
##Probes.
:global globalprobesenabled 1;
###Traffic probe.
:global globalminimumbandwidth 3000000;
###ICMP probe.
:global globalicmpprobeserver "1.0.0.1";
###HTTP/s probe.
:global globalhttpfetchurl "http://example.com/index.html";
:global globalhttpfetchip "93.184.216.34";
:global globalhttpfetchmode "http";
##Events.
:global eventscriptglobalenabled 1;
##DNSs
:global globaldnscheck "telegram.org"
:global globalprimarydnss "10.10.10.10,10.10.8.11"
:global globalsecundarydnss "10.10.10.10,10.10.8.11"

Notifications.
:global notificationglobalenabled -> Habilita o deshabilita las notificaciones globalmente.
:global devicename -> Nombre de dispositivo que se puede utilizar en las notificaciones.
Telegram config.
:global telegrambot -> Token de Telegram
:global telegramchatid -> Chat-Id de Telegram.
Probes.
:global globalprobesenabled -> Habilita o deshabilita las pruebas globalmente.
Traffic probe.
:global globalminimumbandwidth -> Cual es el ancho minimo de un peer para marcarlo como fallo en la prueba de trafico.
ICMP probe.
:global globalicmpprobeserver -> Servidor al que se hará ping para comprobar estado de peer.
HTTP/s probe.
:global globalhttpfetchurl -> URL de pagina que se descargara en el probe HTTP.
:global globalhttpfetchip -> IP de pagina de prueba HTTP.
:global globalhttpfetchmode -> Modo de conexion a pagina para probe HTTP.
Events.
:global eventscriptglobalenabled -> Habilita o deshabilita las los script de eventos globalmente.
DNSs
:global globaldnscheck -> Dominio que se utilizara para la prueba de estado de DNS de router.
:global globalprimarydnss -> DNSs principales, en situacion normal.
:global globalsecundarydnss -> DNSs que se utilizaran ante fallo del los primarios.

Código fuente

https://bitbucket.org/facubertran/crenein-failover-mikrotik/src/master/

Si necesitas ayuda para implementarlo contactanos!