Ein Notebook wechselt häufig den Ort und damit die Netzwerkumgebung. Mit ein wenig Konfigurationsarbeit und den passenden Tools erreichen Sie, dass der portable Computer sich selbst auf die wechselnden Umstände einstellt.
Schließt man den Linux-Laptop an einem neuen Netzwerk an, passiert nicht unbedingt, was man sich wünscht: Der Rechner sollte am besten seine Umgebung richtig erkennen und einfach funktionieren. Mit etwas Aufwand erweitern Sie Ihren mobilen Computer um diese Fähigkeit. Dazu dienen die beiden Pakete laptop-net und guessnet.
Dreistufige Netzwerkeinstellung
Die automatische Netzwerkkonfiguration teilt sich in drei Schritte auf: Zuerst gilt es festzustellen, ob die Netzwerkschnittstelle überhaupt angeschlossen ist. Einen Großteil dieser Aufgabe übernimmt der Daemon ifplugd, der für Debian und Suse als Paket vorliegt [1].
Funktioniert die Netzwerkschnittstelle, kann der Rechner Teil eines Netzwerks werden. Um welches es sich dabei handelt, entscheiden im zweiten Schritt vordefinierte Tests oder die manuelle Auswahl des Benutzers. Für Debian enthalten die Pakete guessnet, intuitively, laptop-net und whereami die passende Software. Weit verbreitet ist auch netenv, bei dem der Anwender manuell die gewünschte Netzwerk-Umgebung auswählt. Für Suse-Anwender bietet sich stattdessen das Paket SCPM an (siehe Artikel auf Seite 38). Daher gehen wir im folgenden vor allem auf die Konfiguration unter Debian ein.
Als dritter Schritt bleibt anschließend noch die Einrichtung der Netzwerkumgebung zu erledigen. Wo die Konfiguration abgelegt wird, unterscheidet sich je nach verwendeter Lösung. Idealerweise greift sie auf den distributionseigenen Mechanismus zur Netzwerkkonfiguration zurück.
Das Programm laptop-net vereint alle drei Schritte und nutzt ifupdown nur für die Low-Level-Netzwerkkonfiguration. Die Software guessnet hingegen ermittelt lediglich die vorliegende Netzwerkumgebung (siehe Abbildung 1). Für einen modularen Ansatz zur automatischen Netzwerkkonfiguration eignet sich guessnet daher besser.

Abbildung 1: So kann eine automatische Netzwerkkonfiguration mit verschiedenen Netzwerkumgebungen aussehen.
Allerdings wurde guessnet bislang nicht an spezielle Konfigurationsmechanismen einzelner Distributionen angepasst. Suse-Anwender können stattdessen aber auch ifplugd in Kombination mit SCPM verwenden. Die nötige Arbeiten zur Konfiguration von ifplugd unterscheidet sich in diesem Fall nur unwesentlich von jenen für Debian.
Guessnet
Das Programm guessnet nutzt die Vorgaben von ifupdown: Es bietet sich als Werkzeug an, das anhand von Tests die passende Netzwerkumgebung auswählt. Dabei konfiguriert es das Netz in Debian-Manier über /etc/network/interfaces.
Zur Ermittlung der vorliegenden Netzwerkumgebung setzt guessnet verschiedene Tests ein: Es kann via ARP-Anforderung nach einem Host mit einer bestimmten IP-Adresse suchen. Daneben akzeptiert es auch eine MAC-Adresse. Es ist in der Lage, via PPPoE zu ermitteln, ob an die Ethernet-Karte ein DSL-Modem angeschlossen ist. Dazu greift es auf den externen Befehl pppoe zurück. Nicht zuletzt bietet guessnet auch einen (bislang experimentellen) Test für Funknetze.
Das Programm führt alle für die betreffende Netzwerkschnittstelle definierten Tests nacheinander durch. Der erste Test, der mit positiven Ergebnis endet, bestimmt die verwendete Netzwerkumgebung. Führt innerhalb einer definierten Zeitspanne kein Test zu einem verwertbaren Ergebnis, verwendet guessnet eine Standardumgebung.
Beim Einsatz von guessnet in Kombination mit ifplugd ergibt sich eine Besonderheit: Existiert kein Link – etwa aufgrund eines fehlenden Netzwerkkabels – startet der Ifplug-Daemon guessnet nicht. Möchten Sie angemessen auf einen fehlenden Link reagieren, bietet sich als Alternative der guessnet-Test missing-cable an.
Ifplugd
Der Einsatz von ifplugd setzt eine Kombination aus Netzwerk-Hardware und Treiber voraus, die eine automatische Erkennung von Netzwerk-Links unterstützt. Mit einem beiden Werkzeuge ethtool und mii-tool finden Sie schnell selbst heraus, ob Ihre Kombination aus Hardware und Treiber dazu fähig ist. Installieren Sie dazu mittels apt-get install ethtool net-tools (oder ein GUI-Frontend Ihrer Wahl) die nötigen Programme. Die Ausgabe von ethtool eth0 oder mii-tool gibt dann an, ob ein Link existiert (Abbildung 2). Klappt dies, sollte ifplugd einwandfrei funktionieren.
Neben kabelgebundenen Netzwerkadaptern unterstützt ifplugd auch WLAN-Karten. Sobald sich die WLAN-Karte mit einem Zugangspunkt (Access Point) verbindet, veranlasst ifplugd die Konfiguration der Netzwerk-Schnittstelle.
Um guessnet und ifplugd zu verwenden, installieren Sie mit apt-get install guessnet ifplugd die passenden Debian-Pakete. Nutzen Sie DSL nutzen, dann richten Sie zusätzlich noch die Pakete pppoe und pppoeconf ein. Verwenden Sie pppoeconf, um die DSL-Verbindung zu konfigurieren.
ifplugd funktioniert für die Schnittstelle eth0 in der Regel ohne weitere Konfiguration. Dennoch sollten Sie einen Blick in die Konfigurationsdatei /etc/default/ifplugd werfen. Unter INTERFACES definieren Sie, welche permanent vorhandenen Netzwerkschnittstellen ifplugd verwaltet. Mit SUSPEND_ACTION bestimmen Sie, was passiert, wenn der Laptop in den Ruhezustand wechselt. Dazu ist vor dem Einschlafen des Laptops /etc/init.d/ifplugd suspend und nach dem Aufwachen /etc/init.d/ifplugd resume aufzurufen.
Beim Booten abschalten
Netzwerkschnittstellen, die ifplugd verwalten soll, dürfen beim Booten nicht automatisch konfiguriert werden. Entfernen Sie deshalb für jedes betroffene Interface eine eventuell vorhandene Anweisung auto Schnittstellen-Name, zum Beispiel auto eth0. Lassen Sie dabei jedoch die automatische Konfiguration der loopback-Schnittstelle auto lo unangetastet.
Testen Sie die Funktion von ifplugd mit ihrer bestehenden Netzwerkkonfiguration, indem Sie das Ethernet-Kabel herausziehen. Die entsprechende Schnittstelle sollte nun automatisch mit ifdown heruntergefahren werden. Stecken Sie das Netzwerk-Kabel wieder einstecken, müsste das Programm die Schnittstelle mit ifup selbständig wieder konfigurieren. Ob das auch funktioniert hat, prüfen Sie mithilfe des Befehls ifconfig. Im nicht konfigurierten Zustand darf die Netzwerk-Schnittstelle keine IP-Adresse besitzen.
Das Programm ifplugd verändert das Paradigma zum Starten von Netzwerk-Diensten: Es macht Sinn, einige Netzwerkdienste wie NTP nicht mehr beim Booten zu starten, sondern immer dann, wenn eine Schnittstelle konfiguriert wird.
Dazu existiert in ifupdown bereits ein passender Mechanismus: Skripte in /etc/network/if-up.d werden bei der Konfiguration der Schnittstelle aufgerufen, Skripte in /etc/network/if-down.d beim Abschalten. Den gleichen Mechanismus gibt es auch für PPP-Verbindungen: /etc/network/ip-up.d und /etc/network/ip-down.d. Einige Debian-Pakete – wie chrony, ein alternativer NTP-Server mit Offline-Funktionalität, postfix und OpenVPN – bringen bereits entsprechende Skripte mit.
Verschiedene Netzwerkumgebungen
Nun ist es an der Zeit, die automatische Erkennung unterschiedlicher Netzwerkumgebungen zu konfigurieren. Überlegen Sie sich dazu, wie Sie ihr Laptop nutzen: Verwenden Sie überwiegend DHCP? Schließen Sie ihr Laptop direkt an ein DSL-Modem an?
Zuerst sorgen Sie dafür, dass ifupdown>guessnet als Mapping-Programm verwendet. Kommentieren Sie in /etc/network/interfaces ihren bisherigen Eintrag für die Netzwerkschnittstelle mit dem Zeichen # am Anfang jeder Zeile aus. Dann fügen Sie folgende Zeilen ein – hier als Beispiel für die Netzwerk-Schnittstelle eth0:
mapping eth0
script guessnet-ifupdown
map default: none
map timeout: 3
map verbose: true
Die Option map timeout gibt an, nach welchem Zeitlimit die mit map default definierte Standardumgebung zum Einsatz kommt. Die Anweisung map verbose: true sorgt für ausführlichere Protokollmeldungen, die bei der Fehlersuche helfen. Diese können Sie mit tail -f /var/log/syslog mitverfolgen.
Nun definieren Sie unterschiedliche Netzwerkumgebungen samt passender Tests. Aus Basis für eine Umgebung verwenden Sie ihren vorher auskommentierten alten Eintrag. Eine Netzwerkumgebung für die automatische Konfiguration via DHCP sieht zum Beispiel so aus:
iface teamix inet dhcp
test peer address 172.1.2.3 mac AA:BB:CC:DD:EE:FF
Diese Zeile weist guessnet an, nach einem Host mit der angegebenen IP- und MAC-Adresse zu suchen. Sie können auch mehr als einen Test angeben, indem Sie test1, test2 usw. verwenden. Für die Konfiguration des heimischen Netzwerks tragen Sie beispielsweise IP- und gegebenenfalls die MAC-Adresse Ihres DSL-Routers ein. In der Firma hingegen verwenden Sie die IP- und MAC-Adresse eines Servers, der immer läuft. Die MAC-Adresse erfahren Sie dabei in der Regel mittels ping -c 1 IP-Adresse ; arp -a | grep IP-Adresse.
Statt DHCP können Sie auch eine statische Netzwerkkonfiguration angeben. Eine solche Umgebung beginnt mit iface NAME inet static, gefolgt von allen nötigen weiteren Angaben. Wenn Sie den Laptop direkt an ein DSL-Modem anschließen, verwenden Sie eine Umgebung wie:
iface dsl inet ppp
provider dsl-provider
test pppoe
Da der Test auf eine DSL-Verbindung mitunter länger dauert, sollten Sie das Zeitlimit für die Tests erhöhen. In der Praxis hat sich ein Wert von 15 Sekunden bewährt, den Sie mit map timeout: 15 setzen. Das schadet nicht, da ja die Tests für ihre üblichen Netzwerkumgebungen wesentlich schneller ein positives Ergebnis zurückliefern.
Zu guter Letzt geben Sie noch eine Standardumgebung an, die zum Einsatz kommt, wenn keiner der Tests mit positiven Ergebnis zurückkehrt. In unserem Beispiel ist dies iface none:
iface none inet dhcp
In Listing 1 finden Sie ein kommentiertes Beispiel für die Datei /etc/network/interfaces zur Verwendung mit ifplugd und guessnet (siehe Abbildung 1).
Listing 1
/etc/network/interfaces
# /etc/network/interfaces – configuration file for ifup(8), ifdown(8)
# The loopback interface
auto lo
iface lo inet loopback
### Mapping
mapping eth0
script guessnet-ifupdown
map default: none
map timeout: 15
map verbose: true
### Netzwerk-Umgebungen
# Zu Hause
iface daheim inet static
address 192.168.1.42
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
# Mit Debian-Paket "resolvconf":
dns-search zuhause.local
dns-nameservers 192.168.1.1
# Test
test peer address 192.168.1.1 mac AA:BB:CC:DD:EE:FF
# Firma
iface teamix inet dhcp
test1 peer address 172.1.2.3 mac AA:BB:CC:DD:EE:FF
test2 peer address 172.4.5.6 mac FF:EE:DD:CC:BB:AA
# DSL-Umgebung
iface dsl inet ppp
provider dsl-provider
test pppoe
# Wenn nach dem Zeitlimit nichts anderes gefunden wird:
iface none inet dhcp
Fazit
Die Kombination von ifplugd und guessnet ermöglicht das bequeme Wandern von einem Netzwerk zum anderen. Die textbasierte Konfiguration erweist sich allerdings als nicht ganz trivial. Wer sie jedoch erfolgreich absolviert, wird aber mit einem mobilen Computer belohnt, der sich auf wechselnde Netzwerkumgebungen einzustellen weiß. (ofr/jlu)
Glossar
-
Netzwerkschnittstelle
-
Über diese greift Software auf eine Netzwerk-Karte zu. Die Schnittstelle für die erste Ethernet-Karte heißt gewöhnlicherweise “eth0”, für ein Modem “ppp0”, für eine WLAN-Karte zum Beispiel “wlan0”.
-
ARP
-
Address Resolution Protocol. Hardwarenahes Netzwerkprotokoll, um zu einer IP-Adresse die passende MAC-Adresse zu ermitteln. IP-Adresse: Jeder Rechner in einem TCP/IP-Netzwerk hat eine IP-Adresse, über die er angesprochen wir, zum Beispiel 129.187.10.25 MAC-Adresse: Weltweit eindeutige Adresse für eine Netzwerkhardware nach dem Ethernet-Standard (Karte für kabelgebundenes Ethernet, WLAN-Adapter, Bluetooth-Adapter). PPPoE: PPP over Ethernet. Verwendung eines Point-to-Point-Protokolls, wie es zum Beispiel für Analog-Modem- und ISDN-Verbindungen eingesetzt wird, über eine Ethernet-Verbindung. Wird für DSL-Verbindungen eingesetzt.
-
NTP
-
Das Network Time Protocol dient der Zeitsynchronisation mit geeichten Servern.
-
DHCP
-
Dynamic Host Configuration Protocol. Protokoll zur automatischen Netzwerkkonfiguration. Der Client holt sich vom Server die benötigten Daten wie IP-Adresse, Netz-Maske und Nameserver.
Infos
[1] ifplugd: http://www.stud.uni-hamburg.de/users/lennart/projects/ifplugd/
[2] guessnet: http://guessnet.alioth.debian.org/





