Internet-Watchdog-Skript für Router

Wir haben teilweise das Problem, das Geräte an einem Internet-Anschluss die Verbindung zum Supernode verlieren. Wir wissen aktuell noch nicht ganz genau warum, ein Reboot des Gerätes funktioniert aktuell zuverlässig als Beseitigung des Fehlers. Zum einen wäre hier das bereits beschriebene Reboot-Skript eine Möglichkeit, allerdings gibt es auch die Möglichkeit, erst auf eine Erreichbarkeit des Internets zu testen und das Gerät nur bei Bedarf durchzustarten. Ich habe solch ein Skript mal geschrieben, der Beitrag dient aktuell eher für unsere Notizen, geplant ist ein vollständiges gluon-Paket, welches bei der Kompilierung der Firmware mit auf die Geräte gebracht wird.

Die Vorgehensweise

Anlegen einer neuen Datei auf dem Router selbst per SSH:

vi /usr/bin/internet-watchdog-manuell

In diese Datei tragen wir nun das folgende Skript ein:

#!/bin/sh
count=0;
# Test 1 auf Online Status (google-public-dns-a.google.com IPv4)
test=$(ping -q 8.8.8.8 -c 4 -W 5 | grep 100 )
	if [ "$test" != "" ]; then
			let "count+=1"
			logger -t internet-watchdog "Google IPv4 nicht erreichbar"
	fi
# Test 2 auf Online Status (resolver1.opendns.com IPv4)
test=$(ping -q 208.67.222.222 -c 4 -W 5 | grep 100 )
	if [ "$test" != "" ]; then
			let "count+=1"
			logger -t internet-watchdog "OpenDNS IPv4 nicht erreichbar"
	fi
# Test 3 auf Online Status (Google.com IPv6)
test=$(ping -q 2a00:1450:4016:804::2004 -c 4 -W 5 | grep 100 )
	if [ "$test" != "" ]; then
			let "count+=1"
			logger -t internet-watchdog "Google.com IPv6 nicht erreichbar"
	fi
# Test 4 auf Online Status (Dummy zum Test)
test=$(ping -q 192.168.147.4 -c 4 -W 5 | grep 100 )
	if [ "$test" != "" ]; then
			let "count+=1"
			logger -t internet-watchdog "Dummy-Adresse nicht erreichbar"
	fi
# Abfrage auf Reboot
# echo "Anzahl inaktiver Verbindungen: $count"
if [ $count -eq 4 ]; then
	# echo "Reboot notwendig"
	logger -t internet-watchdog "Kein Internet, Reboot notwendig"
	sleep 70 && touch /etc/banner && reboot >/dev/null 2>&1
else
	# echo "Internet vorhanden, kein Reboot notwendig"
	logger -t internet-watchdog "Internet vorhanden, kein Reboot notwendig"
fi

Nun müssen wir diese Datei ausführbar machen:

chmod +x /usr/bin/internet-watchdog-manuell

Nun können wir einen neuen cronjob anlegen, der dieses Skript in einem Abstand von sechs Stunden (natürlich einfach anpassbar auf eigene Bedürfnisse) aufruft:

crontab -e

Als Job wird die folgende Zeile benötigt:

* */6 * * * /usr/bin/internet-watchdog-manuell >/dev/null 2>&1

Danach müssen wir den cron noch einmal durchbooten, danach prüft der Router alle 6 Stunden die Erreichbarkeit vom primären Google-Nameserver per IPv4, vom OpenDNS-Nameserver per IPv4 und von google.com per IPv6 sowie eine Dummy-Adresse. Die Anzahl der Abfragen und die Ziele können beliebig angepasst werden, z.B. auf die eigenen Gateways. Erreicht das Test-Skript das Gateway und alle anderen Server nicht, startet der Knoten nicht neu, da vermutlich ein Routing-Problem auf dem Supernode oder am Backbone vorhanden ist.

About the author: Jan

2 comments to “Internet-Watchdog-Skript für Router”

You can leave a reply or Trackback this post.

Leave a Reply

Your email address will not be published.Email address is required.