MikroTik – automatyczny restart routera w przypadku braku komunikacji.

Grafika wygenerowana przez AI https://www.bing.com/images/create

Dziwnym wstępem napiszę, że nie polecam tego rozwiązania. Lepiej jest znaleźć przyczynę braku komunikacji niż restartować za każdym razem router. Jeżeli jednak się zdecydujesz, to pomocny będzie poniższy skrypt:

/tool netwatch
add down-script=":if ([/ping 8.8.8.8 interval=5 count=10] =0) do={\r\
    \nlog error \"Netwatch 8.8.8.8 is down\" ; /system reboot\r\
    \n}" host=8.8.8.8 interval=30s timeout=1m30s

Już śpieszę z wyjaśnieniem co ta komenda robi. Do testowania tego, czy router ma prawidłowe połączenie z internetem wykorzystuje publiczny adres IP serwera DNS Google (8.8.8.8). Narzędzie Netwatch sprawdza co 30s dostępność ww serwera. Jeżeli stwierdzi, że serwer nie jest dostępny, to wykonuje down-script . Skrypt ten zawiera dodatkowe sprawdzenie dostępności serwera. Wysyła do niego 10 pakietów ICMP echo request (ping) każdy co 5 sekund.

/ping 8.8.8.8 interval=5 count=10

Jeżeli na żaden z tych pakietów nie otrzyma odpowiedzi ICMP echo reply, to wykonuje dwie akcje:

Wysyła do loga informację: log error \"Netwatch 8.8.8.8 is down\"

Restartuje urządzenie: /system reboot

Dodatkowym zabezpieczeniem przed przypadkowym restartem routera jest timeout=1m30s, powoduje to, że narzędzie Netwatch czeka 90 sekund na odpowiedź z serwera Google. Wyklucza to przypadek, gdy router jest w trakcie uruchamiania i jeszcze nie ma połączenia z internetem, a narzędzie Netwatch przy ustawionym timeout=0s już wykonało by down-script.

Reasumując, przy obecnych parametrach w przypadku braku odpowiedzi z serwera gogle router zrestartuje się po 140 sekunach (90s. timeout i 10x5s. ping). Wartości te można modyfikować wg. własnych potrzeb.

Koniec 🙂

Jeżeli pomogłem to Postaw mi kawę na buycoffee.to ,a będę miał więcej energii na pisanie kolejnych ciekawych wpisów.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *