[linux-l] ifup, ifdown
Peter Ross
Peter.Ross at alumni.tu-berlin.de
Do Jan 30 03:55:05 CET 2003
Hi,
ich habe fuer das Office hier eine Linux-Firewall gebaut, die mit zwei
ADSL-Modems verbunden ist.
Beim Starten des Systems kommt eth1 hoch (im Debiansystem in
/etc/network/interfaces auf auto gesetzt).
Desweiteren ein Firewallskript, iptables benutzend, mit Regeln a la
iptables ${blabla} -o eth1
iptables ${blabla} -o eth2
Funktioniert auch alles ganz gut.
Dann gibt es ein Ueberwachungsskript, das als Cronjob laeuft. Es nutzt
ifup und ifdown, Interfaces zu starten, wenn noetig, beziehungsweise
runterzufahren, wenn sie nicht funktionieren.
Das Skript steht unten.
Es funktioniert meistens - aber manchmal, nach ein paarmal ifup/ifdown,
wenn Telstra uns mal wieder im Stich gelassen hat, kommt es ploetzlich
dazu, dass kein ping oder anderes Paket mehr rausgeht, beim ping heisst es
(leider habe ich die Fehlermeldung nicht mehr:-(
sinngemaess "SendTo: -1 Operation not permitted".
Was kann das bedeuten? Sollte ich etwas anderes als ifup/ifdown benutzen?
Es ganz anders machen?
Es gruesst
Peter
Hier das Skript:
#!/bin/sh
interfaces="eth1 eth2" # External interfaces in the order we prefer
for interface in ${interfaces}; do
# It's up?
up=`ifconfig ${interface} | grep UP | awk '{print $1}'`
# No. Let's try!
if [ "X${up}" = "X" ]; then
ifup ${interface}
fi
# teste_if is a routine testing the connections to the modem and
# some stable machines in the outside world
if teste_if ${interface}; then
running_if="${interface}"
break
fi
done
if [ "X${running_if}" = "X" ]; then
echo "$0 Error - none of the interfaces $interfaces are usable"
exit 1
fi
# Bring all other interfaces down
for interface in ${interfaces}; do
if [ "${interface}" != "${running_if}" ]; then
up=`ifconfig ${interface} | grep UP | awk '{print $1}'`
if [ "X${up}" != "X" ]; then
ifdown ${interface}
fi
fi
done
Mehr Informationen über die Mailingliste linux-l