Automatische Auswahl der Netzwerkkarte mittels ifplugd

Aus BraLUG-Wiki

Wechseln zu: Navigation, Suche


Inhaltsverzeichnis

Motivation

Wer kennt das Problem nicht! Ein Notebook mit zwei Netzwerkkarten (Ethernetkarte, WLAN-Karte) und man möchte je nach Umgebung alternativ entweder via Ethernet oder WLAN mit der Aussenwelt kommunizieren. Und das ganze soll natürlich automatisch erfolgen. Wenn in der Ethernetkarte ein Netzwerkkabel steckt, soll dieses verwendet werden, wenn nicht, soll via WLAN versucht werden eine Verbindung aufzubauen.

Nach etwas Suchen habe ich eine Lösung gefunden, die meine Belange abdeckt. Das Zauberwort heißt ifplugd.

ifplugd

Bei ifplugd handelt es sich um einen Daemon, der Ethernetkarten dahingehend automatisch überwacht, ob eine drahtgebundene Verbindung besteht oder nicht. Je nach Zustand können unterschiedliche Aktionen (gesteuert über Konfigurationsdateien) ausgeführt werden. Dies funktioniert auch im laufenden Betrieb.

Die Installation gestaltet sich unter Debian relativ einfach, es gibt ein gleichnamiges Paket. Bei anderen Distributionen einfach mal suchen bzw. die neueste Version runterladen und entsprechend installieren.

Konfigurationsbeispiel

Folgende Konstellation habe ich auf meinem Notebook beispielhaft vorliegen und möchte ich via ifplugd automatisch gesteuert haben:

  • eth0 - WLAN-Karte
  • eth1 - Ethernetkarte

Wenn in eth1 ein Netzwerkkabel steckt (und auch eine Verbindung zum LAN hat), soll eth0 runtergefahren und eth1 hochgefahren werden. Hat eth1 keine Verbindung zum LAN soll diese gestoppt und dafür eth0 (WLAN) genutzt werden. Die einzelnen Parameter für eth0 und eth1 (IP-Adresse, ESSID, WEP-Key...) sind, wie gewohnt, in /etc/network/interface hinterlegt.

Prinzipielle Konfiguration der Netzwerkkarten in /etc/network/interface:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
#
# The primary network interface
auto eth0
iface eth0 inet static
       address 10.1.1.23
       netmask 255.255.255.0
       network 10.1.1.0
       broadcast 10.1.1.255
       gateway 10.1.1.1
       # dns-* options are implemented by the resolvconf package, if installed
       dns-nameservers 10.1.1.31
       dns-search boerge
       name Drahlose LAN-Karte
       wireless_mode managed
       wireless_essid MEINE_ESSID
       wireless_nick thinkpad
       wireless_key s:abcdy
#
iface eth1 inet static
       name Ethernet LAN-Karte
       address 10.1.1.22
       netmask 255.255.255.0
       broadcast 10.1.1.255
       network 10.1.1.0
       gateway 10.1.1.1


Anpassungen in den Konfigurationsdateien von ifplugd:

/etc/ifplugd/ifplugd.conf(bzw. /etc/default/ifplugd)

INTERFACES="eth1"
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"


/etc/ifplugd/ifplugd.action

Dieses Script muß ausführbar sein.

#!/bin/sh
set -e
if [ -z "$1" ] || [ -z "$2" ] ; then
       echo "Wrong arguments" > /dev/stderr
       exit 1
fi
if [ "$1" != "eth1" ]; then
       echo "Wrong interface!" > /dev/stderr
       exit 1
fi
if [ "$2" = "up" ] ; then
       /sbin/ifdown eth0
       /sbin/ifup eth1
       exit 0
elif [ "$2" = "down" ] ; then
       /sbin/ifdown eth1
       /sbin/ifup eth0
       exit 0
fi
exit 1 


Der Daemon ifplugd sollte natürlich entsprechend gestartet sein (am besten mittels der üblichen Startroutinen der Distribution). Im syslog erscheinen die entsprechenden Meldungen, wenn die Karten umgeschaltet werden. Das war es...!

Weiteres...

Obige Konstellation ist nur ein spezielles Beispiel. Es gibt noch weitere Situationen, die via ifplugd (und u.U. weiteren Tools) ebenfalls erledigt werden können. Einfach mal sich etwas auf der Homepage von ifplugd belesen bzw. die entsprechenden Manpages bemühen...

'Persönliche Werkzeuge