Internetverbindung überwachen und Reboot im Fehlerfall



  • Hallo,

    ich habe jahrelang IPCops gepflegt und da hat sich ein Skript bewährt, welches zwar recht rabiat arbeitet, aber das Internet doch recht sicher wiederhergestellt hat, so es zu einem Problem kam.
    Es funktioniert folgendermaßen. Es wird versucht eine Reihe von wirklich hoch verfügbaren Internetdomänen anzupingen. Falls keine der Domänen erreichbar ist, spricht das für einen Internetausfall (warum auch immer) und Reboot tut normalerweise gut. :-)

    Kann man dieses Skript auch abgewandelt auf der Pfsense einsetzen? Am liebsten per Package.

    Hier das Skript, welches ich alle 5 Minuten auf der IPCop laufen lies. Es hat die Verfügbarkeit deutlich verbessert.
    Ein ähnliches Skript habe ich auch noch für die Überwachung von IPSec Netz zu Netz Tunneln, welches den Tunnel neu gestartet hat, wenn ein Ping durch den Tunnel nicht möglich war. Die IP-Adresse, die man zur Überprüfung im IPSec bei der pfSense eintragen kann wird ja scheinbar komplett ignoriert. Skripte sind natürlich unter der GPL :-)

    ################## Internet Check Anfang ####################
    #!/bin/sh

    chmod 700 Check

    fcrontab -e

    */5 * * * * /Skripte/Check

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    ‹berpr¸fen, ob Ping auf diverse Internetserver mˆglich ist.

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    CONNECT_OK=0
    for IP in www.telekom.de www.focus.de www.spiegel.de pop.1und1.com smtp.1und1.com
          do
          ping -c 1 -i 10 $IP
          if [ "$?" = "0" ] ; then
          CONNECT_OK=1
          sleep 3
    fi
    done

    if [ $CONNECT_OK -eq 0 ] ; then
          /bin/echo "Red-Ping Probleme, IPCop rebootet" date>>/var/log/Check-Red-Fehler
          /sbin/shutdown -r now
    else
          /bin/echo "Red-Ping funktioniert am        " date>>/var/log/Check-Red-OK
    fi
    ################# Internet Check Ende ##############

    #############################
    #############################
    ####### ab hier das 2. Skript ########
    #############################
    #############################

    ################# VPN Check Anfang ################
    #!/bin/sh

    /Skripte/Tools/ping1.3 -i 5 -c 5 -n -I Eigene-Green Remote-Green

    /Skripte/Tools/ping1.3 -i 5 -c 5 -n -I 192.168.0.1 192.168.1.1
    if test $? -ne 0; then

    /bin/mv /var/log/Fehler-Log /var/log/Fehler-Log.tmp
    /bin/echo "VPN Name Down und Restart" date>>/var/log/Fehler-Log
    /bin/cat /var/log/Fehler-Log.tmp >>/var/log/Fehler-Log
    /bin/rm /var/log/Fehler-Log.tmp
    /usr/sbin/ipsec auto –replace Name
    /usr/sbin/ipsec auto --rereadsecrets
    /usr/sbin/ipsec auto --up Name
    else
          /bin/mv /var/log/OK-Log /var/log/OK-Log.tmp
          /bin/echo "VPN Name Up am" date>>/var/log/OK-Log
          /bin/cat /var/log/OK-Log.tmp >>/var/log/OK-Log
          /bin/rm /var/log/OK-Log.tmp

    fi
    exit 0
    ################### VPN Check Ende  ####################

    any hints

    Guido



  • Hall Guido,

    hast du das Problem mittlerweile gelöst?

    Das Script sieht auf den ersten Blick so aus, als würde es auf pfsense funktionieren, aber ich bin alles andere als ein Experte, was Scripte angeht. Der Shutdown-Befehl sollte richtig sein, ansonsten geht auch "reboot".
    Kannst einfach cron als Package installieren und dort diese Zeile aus dem Script eintragen: */5 * * * * /Skripte/Check
    Putty unter windows benutzen, zum router verbinden mit username admin und deinem webgui passwort
    Dann musst du noch  das Verzeichnis /Skripte/Check erstellen: cd.., cd .., mkdir /Skripte/
    Skript erstellen: cd Skripte, ee Check
    dort den Text des obigen scripts einfügen. Speichern mit escape.
    script schreibfähig machen: chmod +x Check
    reboot
    Wenn alles klappt, wird eine Logdatei unter /var/log/Check-Red-OK fünf Minuten nach dem Neustart entstehen.


  • Rebel Alliance Moderator

    Ich wollte dazu anmerken, dass ich bislang in Jahren des Einsatzes von pfSense noch keinen ISP hatte, bei dem solch ein Skript notwendig war um die Connectivity wiederzubekommen. Ich würde an so einer Stelle auch eher beim Problem ansetzen als mittendrin. Aber prinzipiell kann man sowas natürlich basteln.


Log in to reply