giovedì , Marzo 21 2019
Ultime Notizie
Home / Wireless & Networking / Mikrotik / Mikrotik Scripting: Evitare cadute Asterisk causate da Failover

Mikrotik Scripting: Evitare cadute Asterisk causate da Failover

Ciao Ragazzi,

oggi vi mostro alcuni trucchi di scripting Mikrotik!

Supponiamo di avere 2 Connessioni internet (es. due gestori diversi per avere banda ridondata) e un dispositivo Mikrotik che gestisce il failover, ossia quando cade la primaria effettua in automatico lo switch sulla secondaria.

Fino a qua non ci sono problemi. Cosa succede se abbiamo un centralino VoIP con Asterisk.

Se cade la connessione primaria e switchamo sulla secondaria, si verifica il problema che le connessioni voip rimangono appese sulla primaria e quindi il problema persiste perchè non funziona la parte telefonica anche se la connessione c’è.

Come risolvere questo problema?

Andiamo a programmare!!

Per prima cosa vi spiego l’idea alla base dello script.

Periodicamente effettuiamo un check ping su due indirizzi ip (ovviamente su due reti geografiche diverse). Se il ping è ok non succede niente, il sistema continua a funzionare.

Quando entrambi i ping falliscono, vuol dire che abbiamo perso la connessione primaria (es. Adsl down, problemi in centrale e robe simili): questo fa da trigger al nostro script!

Il primo script, che chiameremo “Check Script”, disabilità l’interfaccia primaria (quella down per capirci) e ci manda una mail indicando il problema e su quale apparato è avvenuto.

Dopo 3 secondi riavvia il router.

Al riavvio entra in funzione il secondo script, che chiameremo “Restart Script”, che dopo 10 sec (il tempo necessario a far ripartire totalmente il device) controlla se l’interfaccia primaria è ritornata funzionante (es. se uno riavvia il router per qualunque motivo non è che deve ogni volta disabilitare/abilitare le interfacce di rete!)

Se è disabilitata e non è ritornata su, allora le viene assegnata priorità/distanza 3 (quindi l’interfaccia secondaria diventa la Master) e la riabilita per provare a vedere se è ritornata attiva.

Se i ping sono apposto cambia la distanza a 1 e torna tutto come prima, se i ping falliscono allora la connessione rimane up sulla interfaccia secondaria.

Sotto questo scenario le chiamate voip, tranne per il breve momento necessario al riavvio della Mikrotik, continueranno a funzionare!

Ecco i due script:

CHECK SCRIPT

:global strDate [/system clock get date]
:global strTime [/system clock get time]
:global strSystemName [/system identity get name]
 
 
:if ([/ping 10.104.7.187 interface=pppoe-out1 count=5] = 0 && [/ping 8.8.4.4 interface=pppoe-out1 count=5] = 0 && [/ip route get [find comment="Primary"] disabled]=false) do={
    :log info "Disabling Primary";
    /ip route set [find comment="Primary"] disabled=yes
    /tool e-mail send from="yyyyy@gmail.com" to="xxxx@gmail.com" subject="Route Failover - $strDate $strTime - $strSystemName" body="Failover to Telecom occurred at $strDate $strTime on $strSystemName"
    :delay 3
    /system reboot
 
} else= {
    :log info "No Failover Necessary";
}

 

RESTART SCRIPT

:delay 10;
:if ([/ip route get [find comment="Primary"] disabled]=true) do={
    /interface ethernet set numbers=4 disabled=no
   
     /ip route set [find comment="Primary"] disabled=no
     /ip route set [find comment="Primary"] distance=3
    :delay 10
    :if ([/ping 10.104.7.187 routing-table=Primary count=5] > 0 && [/ping 8.8.4.4 routing-table=Primary count=5] > 0) do={
 
       /ip route set [find comment="Primary"] distance=1
       /system reboot
    }
     else= {
       
        /ip route set [find comment="Primary"] distance=3
 
    }
} else= {
    :log info "No Failover Necessary";
}

Enjoy!

Info Paolo Daniele

Ingegnere delle Telecomunicazioni, appassionato di informatica fin da piccolo ho trasformato la passione in lavoro. Con il PHP faccio tutto (o quasi...) ma non disprezzo altri linguaggi all'occorrenza. Se vi piace il mio sito, o vi è utile, o vi sto simpatico, offritemi una birra!

Ti potrebbe interessare

Mikrotik Monitor IPSec

Ciao Ragazzi, oggi vi parlo di come effettuare il monitoraggio di connessioni IPSec in una …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *