Host ohne aktiven Service auf Verfügbarkeit überprüfen

Hosts lassen sichmit einem Trick auch dann auf Verfügbarkeit überprüfen, wenn sie keine offenen Dienste anbieten. Ich verwende den folgenden Trick beispielsweise um mitzubekommen, wenn in meiner alten Heimat das Internet ausfällt. Da ich dort keinen Server hinter der Firewall im Router hängen habe, gehe ich also direkt an den Router. Dieser benötigt dringend die Dyndns-Funktion, damit er nach jedem Reconnect seine IP auf einen Hostname mappt.

Wenn dies gegeben ist, schaut man mit einem NMAP-Scan einfach mal, welche Ports der Router zur Verfügung stellt – hierbei werden auf nicht offene Ports angezeigt:

# nmap -PN HOSTNAME-DES-ROUTERS

Starting Nmap 5.00 ( http://nmap.org ) at 2012-01-26 22:14 CET
Interesting ports on hostname-des-routers (ip-adresse-des-routers):
Not shown: 999 filtered ports
PORT     STATE  SERVICE
5060/tcp closed sip

Nmap done: 1 IP address (1 host up) scanned in 76.13 seconds

In diesem Fall ist der Router über den Port 5060 (VoIP) erreichbar (typisch für aktuelle Router mit VoIP-Funktionalität) – ein Verbindungsversuch wird abgewiesen:

# telnet HOSTNAME-DES-ROUTERS 5060
Trying xx.yy.zz.iii...
telnet: Unable to connect to remote host: Connection refused

Wenn der Router nicht zur Verfügung steht, kommt es hier zum Timeout anstatt zur Ablehnung der Anfrage – diesen Effekt kann man sich zunutze machen und herauszufinden, ob der Router am Netz hängt. Es wird also einfach ein Host für den Router in Nagios definiert. Normalerweise überprüft Nagios definierte Hosts erstmal anhand der hinterlegten IP und PING auf Verfügbarkeit – da dies hier ja nicht möglich ist, wird ein dediziertes Check-Kommando und ein höherer Überprüfungsintervall definiert. Als Folge hiervon wird der Host z.B. alle 30 Minuten überprüft und als Online markiert, wenn die Verbindungsanfrage abgewiesen wird.

Zunächst einmal wird das Kommando definiert:

# nano commands.cfg
...
define command{
        command_name    check-host-alive-by-voip-refused
        command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p 5060 -r ok
}

…dannach folgt der Host mit oben genannter Anpassung:

# nano router-blah.cfg
define host{
        use linux-server
        host_name router-blah
        alias blah
        address HOSTNAME-DES-ROUTERS
        check_command check-host-alive-by-voip-refused
        check_interval 30
        max_check_attempts 2
        }

Die Zuordnung check_interval 30 steht hier für eine Überprüfung im Abstand von 30 Minuten. Ich persönlich würde hier nicht den Standard-Wert von 5 Minuten übernehmen – ich kann mir vorstellen, dass der ISP hier vielleicht einen Angriff vermutet und Gegenschritte unternimmt (wenn einer der Admins wirklich mal auf die Leitung schauen sollte 😛 ).

Nach einem erneuten Einlesen der Nagios-Konfiguration sollte das Ganze ohne Probleme funktionieren:

# service nagios reload
Router-Überwachung in Nagios

Router-Überwachung in Nagios

Mal schauen, wie lange es dauert, bis der ISP mir Stress macht. 😀

Schreibe einen Kommentar