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.
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.
La configurazione richiede due passaggi, ovvero configurare il sistema per inviare email e poi configurare netwatch per lanciare lo script che invia la mail.
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
/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\")"
Se usiamo il PPPoE, su una o su tutte e due le connessioni multiwan, possiamo risparmiarci tutto il casino di netwatch e delle rotte ricorsive e semplicemente inserire un paio di script per mandare email quando cade il PPPoE. Possiamo infatti creare dei profili per il PPP dedicati che useremo per le due connessioni PPPoE dei nostri provider, dove metteremo i nostri script
La configurazione richiede due passaggi, ovvero configurare il sistema per inviare email e poi configurare uno o due (o enne) profili PPP per lanciare lo script che invia la mail.
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
/ppp profile add change-tcp-mss=yes name=Profile-WAN on-down="delay 20s; tool e-mail send to=LATUAEMAIL@ILTUODOMINIO.TLD subject=([/system identity get name].\" Internet DOWN\") body=(\"Since \$since \\r\\n Host \$host\")" on-up="delay 20s; tool e-mail send to=LATUAEMAIL@ILTUODOMINIO.TLD subject=([/system identity get name].\" Internet UP\") body=(\"Since \$since \\r\\n Host \$host\")"