Martin Schmitt schrieb:

> Das ist zu befürchten, ja. Ich werde wohl, so wie von Christian
> vorgeschlagen, ein Script basteln, das je nach Situation die
> Defaultroute anpaßt. Das ist zwar nicht die magische Lösung, die ich mir
> erwartet hatte, aber robust genug sollte sowas trotzdem funktionieren.

Das Script ist fertig, siehe Anhang, und es hat in Tests auch ganz
ordentlich funktioniert. Die funktionale Prüfung der Internetanbindung
wird mittels DNS-Abfragen gemacht. Das scheint mir am robustesten zu
sein und macht den Gegenstellen am wenigsten Traffic.

-martin

-- 
Schmitt Systemberatung                                       Linux/UNIX
Giessener Str. 18                                     Internet/Intranet
35415 Pohlheim/Germany                            E-Mail Infrastructure
http://www.scsy.de                                   Antispam/Antivirus
#!/bin/sh

# Route Checker: Checks accessibility of external sites
# and falls back to a different default gateway if needed.

PATH=/sbin:/usr/sbin:/bin:/usr/bin

DEFAULT_GATEWAY=192.168.2.1
FALLBACK_GATEWAY=192.168.3.1

[EMAIL PROTECTED]
[EMAIL PROTECTED]

SENDMAIL=/usr/sbin/sendmail 

#            vortex.f00.net pns.dtag.de  ns1.msft.net   nserver.apple.com
CHECK_HOSTS="80.242.134.130 194.25.0.125 207.68.160.190 17.254.0.50"

# No user servicable parts beyond this point.
 
FAILED_TOUCHFILE=/tmp/routechecker-failed

notice () {
        TEXT=$1
        $SENDMAIL -f $MAIL_FROM -t <<EOF
From: Route-Checker on `hostname` <$MAIL_FROM>
To: $MAIL_TO
Subject: $TEXT

$TEXT
EOF
}


OKAY=0
for HOST in $CHECK_HOSTS
do
        echo "+++ Checking $HOST:"
        ip route add $HOST/32 via $DEFAULT_GATEWAY
        dig +short . SOA @$HOST
        if [ $? -eq 0 ]
        then
                OKAY=1
                echo "+++ OK"
        else
                echo "--- FAIL"
        fi
        ip route del $HOST/32 via $DEFAULT_GATEWAY
done
if [ $OKAY -eq 0 ]
then
        echo "Replacing default route $DEFAULT_GATEWAY with $FALLBACK_GATEWAY"
        ip route replace default via $FALLBACK_GATEWAY
        if [ ! -f $FAILED_TOUCHFILE ]
        then
                touch $FAILED_TOUCHFILE
                logger -p user.notice -t routechecker "Fallback to 
$FALLBACK_GATEWAY activated."
                notice "Fallback route to $FALLBACK_GATEWAY activated"
        fi
else
        if [ -f $FAILED_TOUCHFILE  ]
        then
                echo "Replacing fallback route $FALLBACK_GATEWAY with 
$DEFAULT_GATEWAY" 
                ip route replace default via $DEFAULT_GATEWAY
                rm $FAILED_TOUCHFILE
                logger -p user.notice -t routechecker "Fallback to 
$FALLBACK_GATEWAY deactivated."
                notice "Fallback route to $FALLBACK_GATEWAY deactivated"
        fi
fi

Attachment: signature.asc
Description: OpenPGP digital signature

-- 
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an