Next Previous Contents

1. Einleitung

Als ich vor einigen Jahren den Wechsel von Windows XP auf Debian (sarge) vollzogen habe, stellte ich fest, daß mir Linux zwar bei vielen meiner Arbeitsabläufe mehr Komfort bieten kann, die Anpassung an unterschiedliche Netzwerkumgebungen allerdings alles andere als komfortabel ist. Lösungen wie netenv, die zum einen einen Benutzereingriff zum Bootzeitpunkt erfordern und zum anderen damit auf Änderungen "im laufenden Betrieb" nicht reagieren können, empfand ich eher als Notlösung. Auch der neue Network-Manager, der unter anderem in Ubuntu 6.06 LTS eingeführt wurde, konnte nur einen Teil meiner Anforderungen erfüllen, da er scheinbar nur Netzwerkkonfigurationen mit DHCP unterstützt, ich aber hin und wieder statische Konfigurationen benötige.

Daher beschloß ich, mit Hilfe mehrerer bereits verfügbarer Programme eine eigene Lösung zu entwickeln. Dies stellte sich in vielen Punkten als nicht allzu schwierig dar, eröffnete aber gleichzeitig zahlreiche neue Möglichkeiten, auch sehr spezielle Anpassungen für jedes Netzwerk vornehmen zu können.

Mit dem vorliegenden Howto will ich daher die Einrichtung dieser Lösung zur automatischen Konfiguration des Netzwerkes, sowie beispielhaft einige Ideen für weiterführende, individuelle Erweiterungen beschreiben. Dabei werde ich auch Themen wie z.B. die Konfiguration einer Firewall mit iptables kurz ansprechen. Da eine ausführliche Behandlung all dieser Themen den Rahmen dieses Howtos sprengen würde, werden an entsprechender Stelle weiterführende Hinweise auf hilfreiche Dokumentation gegeben.

Auch wenn ich versuchen will, nicht zu viele Vorkenntnisse hierfür vorauszusetzen, gehe ich davon aus, daß einige grundlegende Kenntnisse u.a. im Umgang mit der Kommandozeile, einem beliebigen Texteditor oder Shell-Skripten vorhanden sind.

1.1 Die Idee

Damit der Computer weiß, in welcher Netzwerkumgebung er sich befindet, muß er zunächst einmal wissen, welche (physikalischen) Verbindungen überhaupt zur Verfügung stehen. So ist es z.B. sinnlos, das umliegende Netzwerk zu analysieren, wenn an der Netzwerkkarte gar kein Kabel angeschlossen ist.

Für konventionelle Netzwerkkarten erledigt das z.B. der ifplugd. Er läuft als Daemon im Hintergrund und fährt eine Netzwerkschnittstelle hoch, wenn er eine aktive Verbindung entdeckt. Dies kann ein eingestecktes Netzwerkkabel sein, praktischerweise aber auch eine aktive WLAN-Verbindung. Für das Erkennen von WLANs und den automatischen Verbindungsaufbau zu diesen verwenden wir wpasupplicant, der nebenbei auch alle gängigen Arten von Verschlüsselung bis hin zu WPA2 ermöglicht.

Wenn der Computer nun weiß, daß eine (physikalische) Verbindung besteht, läßt er mittels guessnet das Umland erkunden und konfiguriert - je nach Ergebnis - die Netzwerkschnittstelle automatisch.

1.2 Vorteile

Erst einmal eingerichtet, bleibt man mit seinem Notebook mobil und muß keine Gedanken mehr an die Netzwerkkonfiguration verschwenden. Ein direkter Eingriff wie bei anderen Programmen ist nicht mehr nötig.

Dadurch, daß sich guessnet nativ in das Netzwerk-Konfigurationssystem von Debian/Ubuntu einfügt, ist man darüber hinaus sehr flexibel und kann dessen Möglichkeiten voll ausschöpfen (wie z.B. die if-up/down.d Verzeichnisse). Dies erlaubt z.B. angepaßte Firewalleinstellungen. Ebenso sind verschlüsselte WLANs mit wpasupplicant kein Problem.

Im Gegensatz zu manchen Lösungen für grafische Oberflächen steht darüber hinaus in jedem Fall bereits während dem Bootvorgang eine Netzwerkverbindung zur Verfügung, ohne daß vorher ein Login durch den Anwender nötig ist.

Der Einsatz von wpasupplicant erlaubt darüber hinaus das Festlegen von Prioritäten, falls mehrere Netzwerke gleichzeitig verfügbar sind. Würde man diesen Teil der Aufgabe guessnet alleine überlassen, würde es einfach das WLAN auswählen, welches als erstes gefunden wird.

1.3 Nachteile

Es erfordert einigen Konfigurationsaufwand, die hier vorgestellte Lösung vollständig einzurichten. Außerdem muß man für bestimmte Einstellungen notfalls eigene Shell-Skripte schreiben. Ebenso muß natürlich für jedes WLAN eine Konfiguration händisch in die betreffenden Konfigurationsdateien geschrieben werden. Ein schnelles Ausprobieren eines neuen Accesspoints wird dadurch natürlich nicht bequemer - eher im Gegenteil.

1.4 Feedback

Ist natürlich immer willkommen. Anmerkungen, Ergänzungen, Korrekturen senden Sie bitte an den Autor unter m.deege at gmx.de.

1.5 Systemvorraussetzungen

Ausprobiert habe ich das ganze sowohl unter Debian (sarge) als auch unter Ubuntu (breezy und dapper). Unter etch sollte - zumindest zum jetzigen Zeitpunkt - die beschriebene Konfiguration immer noch ohne weiteres funktionieren. Evtl. werden ähnliche Anpassungen wie bei Ubuntu "Dapper Drake" bzgl. wpasupplicant nötig.

Distributionen, die Debian als Ausgangsbasis verwenden, sollten einen ebenfalls vor keine allzu großen Probleme stellen. Bei Distributionen, die ihr Netzwerk nicht mit dem von Debian bekannten ifupdown verwalten, dürften umfangreichere Anpassungen vor allem (aber nicht nur) bei guessnet nötig werden.

Außerdem gehe ich natürlich davon aus, daß die Netzwerkhardware bereits konfiguriert ist und die entsprechenden Kernelmodule geladen sind.

Das Netzwerk

Im folgenden werde ich stillschweigend vorraussetzen, daß der vorliegende Rechner über eine Netzwerkkarte und eine WLAN-Karte verfügt. Die Netzwerkkarte heißt "eth0" und die WLAN-Karte der Einfachheit halber "wlan0".

Dies kann von System zu System unterschiedlich sein. Die Namen der Netzwerkkarten findet man mittels "ifconfig -a" heraus. Um herauszufinden, welche dieser Karten WLAN-Karten sind, kann der Befehl "iwconfig" aus dem Paket "wireless-tools" verwendet werden.

Ein Wort zu sudo

Unter Ubuntu wird häufig sudo statt eines direkten Wechsels in eine root-shell via su verwendet. Befehle, die unbedingt als root ausgeführt werden müssen, sind daher mit einem (sudo) gekennzeichnet. Dies betrifft praktisch alle Befehle und wurde nur der Vollständigkeit halber getan. Wer sudo bevorzugt, sollte es hier verwenden. Wer lieber in einer root-shell arbeitet, kann das "(sudo)" natürlich ignorieren.

1.6 Disclaimer

Die beschriebenen Verfahrensweisen, Skripte, Konfigurationen etc. wurden nach bestem Wissen und Gewissen getestet und finden u.a. auf Computern des Autors tägliche Anwendung. Dennoch werden die in diesem Howto beschriebenen Verfahrensweisen ohne Garantie auf Funktionalität oder Unbedenklichkeit zur Verfügung gestellt. Sollten bei der Umsetzung der in diesem Howto beschriebenen Konfiguration bzw. beim Einsatz der in diesem Howto aufgeführten Skripte Beschädigungen an Ihrem Computersystem auftreten, übernimmt der Autor keine Haftung. Sie handeln daher zu jedem Zeitpunkt auf eigene Gefahr.

Es sei außerdem darauf hingewiesen, daß die beschriebenen Konfigurationsskripte normalerweise vollständig als "root" ausgeführt werden. Unbedacht eingefügte Befehle in diesen Skripten können daher unter ungünstigen Umständen auch erhebliche Folgen für die Stabilität und/oder Funktionsfähigkeit Ihres Systems haben. Sie sollten daher zu jedem Zeitpunkt wissen, was Sie tun!


Next Previous Contents