Automatischer Netzwerk-Wechsel unter Linux

Seite 3: WLAN umschalten

Inhaltsverzeichnis

Im Funknetz ermittelt wpa_supplicant, ob der Rechner gerade in Reichweite einer Basisstation ist. Das Programm wickelt auĂźerdem die Authentifizierung ab und ruft ifupdown mit einem passenden Profil auf.

Seine Programmeinstellungen und Anmeldedaten liest wpa_supplicant aus der Datei /etc/wpa_supplicant/wpa_supplicant.conf, die als Vorlage in den Dokumentationsverzeichnissen der Software enthalten ist. Eine minimale Version enthält einen Pfad über den man wpa_supplicant steuern kann (ctrl_interface) und den Parameter ap_scan, der regelt, wie das Programm nach Basisstationen sucht: Steht er auf dem Wert 0, sucht der Gerätetreiber nach Netzen und wählt den AP aus. Mit dem Wert 1 übernimmt wpa_supplicant diese Aufgabe. Die Zugangsdaten für Funknetze folgen dem Parameter network und stehen zwischen geschweiften Klammern:

network={
ssid="HEIM-AP"
psk="MeinWPAKey"
scan_ssid=1
key_mgmt=WPA-PSK
id_str="heim"
}
network={
ssid="BUERO-AP"
scan_ssid=1
key_mgmt=WPA-PSK
psk="SehrGeheimerWPAKey"
id_str="buero"
}

Die Optionen ssid, psk und key_mgmt definieren die Zugangsdaten und die VerschlĂĽsselungsart, hier das sichere WPA mit Pre-Shared Key (PSK). Mit id_str verweist man auf ein Netzwerkprofil in /etc/network/interfaces, das das Programm nach der Anmeldung an dieser Basisstation per ifupdown aufruft. Sollte ein WLAN seine SSID nicht per Broadcast aussenden, hilft die Einstellung scan_ssid=1.

Neben den nötigen Profilen muss die Datei interfaces eine WLAN-Schnittstellen-Definition enthalten, die wpa_supplicant steuern kann und die Linux während des Systemstarts aktiviert, was der Parameter manual in der iface-Definition und die Zeile auto eth1 festlegen:

iface eth1 inet manual
wpa-driver wext
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
…
auto eth1

Auf welche Weise wpa_supplicant mit dem WLAN-Gerätetreiber kommuniziert, legt der Parameter wpa-driver fest, der hier die generische WLAN-Schnittstelle von Linux nutzt.

Nach dem Sichern dieser Änderungen startet man mit /etc/init.d/networking restart das Netzwerk neu. Das Skript aktiviert wpa_supplicant dabei automatisch. Ruft man nun mit Root-Rechten das Einrichtungsinterface wpa_cli auf, liefert es nach Eingabe von level 0 zahlreiche Statusinformationen über erreichbare APs sowie die Anmeldung oder das Abbrechen einer Funkverbindung.

Dank Roaming wechselt Ubuntu vollautomatisch in erreichbare Funknetze.

Unsere Roaming-Versuche auf einem älteren Thinkpad-Notebook mit dem Broadcom-Treiber bcm43xx (Kernel 2.6.20) scheiterten, da der Treiber anscheinend nicht mitbekam, dass das Notebook längst außer Reichweite des letzten AP war. Auf einem anderen Notebook mit Intel-WLAN-Chipsatz (ipw2200, Kernel 2.6.22) gelang das automatische Wechseln zwischen den Basisstationen jedoch auf Anhieb. Im Notfall helfen eventuell Experimente mit der Option wpa-driver in der Datei /etc/network/interfaces oder der Wechsel zu einem anderen Gerätetreiber; Details dazu finden sich in der Man-Page von wpa_supplicant.

Möchte man unter Ubuntu das Netz per Debian-Methode einrichten, stoppen die beiden Befehle sudo /etc/dbus-1/event.d/26NetworkManagerDispatcher stop und sudo /etc/dbus-1/event.d/26NetworkManager stop den Networkmanager. Legt man außerdem die beiden Dateien NetworkManager und NetworkManagerDispatcher unterhalb von /etc/defaults an und füllt sie mit dem Schlüsselwort exit, startet er auch beim nächsten Systemstart nicht. Ubuntu steuert sein Netz nun vollständig über ifupdown, ifplugd und wpa_supplicant. Nutzt man im Funknetz die Roaming-Funktion mit wpa_supplicant, muss man in der Ubuntu-Startdatei /etc/rc.local die zwei Befehle ifdown eth1; ifup eth1 nachtragen, die vor der Zeile exit 0 stehen müssen.

Läuft der eigene Rechner nicht mit einem Debian-ähnlichen Linux oder möchte man nicht auf den Networkmanager verzichten, kann man das Programm für eigene Zwecke erweitern: Beim Ein- oder Ausschalten einer Netzwerkschnittstelle startet es Dispatcher-Skripte, die im Verzeichnis /etc/NetworkManager/dispatch.d liegen und beispielsweise die Rechneruhr stellen oder die Firewall aktivieren. Startet oder stoppt Networkmanager eine Netzwerkkarte, übergibt er ihnen den Interface-Namen und einen Zeitpunkt, der die aktuelle Einrichtungsphase beschreibt. Allerdings fehlt ein Wert für die Phase vor dem Ausschalten einer Schnittstelle (pre-down), sodass sich Netzlaufwerke nicht im richtigen Moment abmelden lassen. Einige Beispiele für verschiedene Zwecke liefern Suse und Ubuntu bereits mit, weitere findet man im Ubuntu-User-Wiki. ()