ROS 7: Allarme per linea morta
Se usiamo un sistema con due WAN, in teoria per l'utente un eventuale guasto di una delle due WAN potrebbe essere quasi trasparente. Questo potrebbe essere un problema perché nessuno si accorgerebbe dell'anomalia.
Possiamo usare la funzione netwatch e la funzione per inviare email per creare un sistema di allarme che manda una mail se una delle due connessioni muore.
Principio di funzionamento
Il sistema è simile a quello usato per causare il failover. Prendendo come esempio la configurazione che trovate qui ../Failover, quello che facciamo è pingare ogni tot secondi un host (9.9.9.9 nel caso in esempio) per il quale abbiamo definito una rotta che funziona solo attraverso una delle due connessioni WAN e non attraverso l'altra. Se il ping non funziona, supponiamo che la connessione WAN in questione sia morta, e mandiamo una mail (attraverso l'altra connessione, ovviamente) per avvisare. Quando torna a funzionare, con lo stesso meccanismo mandiamo una mail che dice che la nostra WAN è tornata viva.
Dal momento che la funzione "netwatch" non è sincrona con la funzione di check-gateway che viene usata per il failover, è possibile (anzi, è sicuro) che nel momento del guasto i due meccanismi scatteranno non nello stesso momento. Questo non è un problema enorme di per sé ma lo diventa se il netwatch cerca di mandare la mail prima che il failover avvenga, in quanto in questo caso fallirà, essendo il routing verso internet ancora configurato verso la connessione WAN che non sta funzionando. Per ovviare a questo problema basta introdurre nello script un ritardo di abbastanza secondi da essere sicuri che il check-gateway abbia avuto il tempo di intervenire e causare il failover.
Configurazione
La configurazione richiede due passaggi, ovvero configurare il sistema per inviare email e poi configurare netwatch per lanciare lo script che invia la mail.
Prima di tutto configuriamo il sistema per inviare email, usando la funzione tool/email. Qui definiamo il server SMTP da usare ed eventualmente il metodo di autenticazione che dobbiamo usare. In questo esempio faccio uso di un server che non richiede autenticazione e quindi la configurazione è semplicissima. Il "from" è un indirizzo arbitrario che viene usato come mittente delle email, non è necessario che esista. Qui non definisco il destinatario, lo farò dopo.
/tool/e-mail set from=<mikrotik-alerts@ILTUODOMINIO.TLD> server=mail.iltuodominio.tld
- Poi configuriamo una istanza di netwatch per controllare la connettività di una delle due WAN. In questo esempio è la primaria che voglio controllare, e non mi interesso (e faccio male, sarebbe utile) dello stato della secondaria. Ribadisco che questa configurazione, che usa 9.9.9.9 come host di riferimento per il ping, funziona solo se ho configurato una rotta statica tale per cui 9.9.9.9 può essere raggiunto solo sulla connettività che voglio tenere sotto controllo e non sull'altra. Chiaramente se voglio controllare più di una connettività, dovrò duplicare la configurazione per le altre, usando come host di riferimento altri host remoti.
/tool/netwatch add host=9.9.9.9 interval=1m name=Quad9 timeout=2s type=simple comment="Check connessione" disabled=no down-script="delay 20s; tool e-mail send to=LATUAEMAIL@ILTUODOMINIO.TLD subject=([/system identity get name].\" Internet DOWN\") body=(\"Since \$since \\r\\n Host \$host\")" up-script="delay 10s; tool e-mail send to=LATUAEMAIL@ILTUODOMINIO.TLD subject=([/system identity get name].\" Internet UP\") body=(\"Since \$since \\r\\n Host \$host\")"