[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