Automatische Auswahl der Netzwerkkarte mittels ifplugd
Aus BraLUG-Wiki
(→Konfigurationsbeispiel: vervollständigt...) |
(→Konfigurationsbeispiel: scripte nochmal modifiziert...) |
||
Zeile 50: | Zeile 50: | ||
network 10.1.1.0 | network 10.1.1.0 | ||
gateway 10.1.1.1 | gateway 10.1.1.1 | ||
− | + | ||
− | + | ||
− | + | ||
Zeile 60: | Zeile 58: | ||
INTERFACES="eth1" | INTERFACES="eth1" | ||
− | |||
ARGS="-q -f -u0 -d10 -w -I" | ARGS="-q -f -u0 -d10 -w -I" | ||
SUSPEND_ACTION="stop" | SUSPEND_ACTION="stop" |
Version vom 25. Januar 2006, 07:40 Uhr
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...