Basisanleitung zum Aufsetzen einer WLAN-Verbindung: WiFi

Aufgrund der komplexen rechtlichen Situation stellt aptosid nur DFSG-freie Software zur Verfügung. Hier finden sich zusätzliche Informationen zu nicht freier Firmware.

Um WiFi aufzusetzen, braucht man für ein paar Minuten eine kabelgebundene Netzwerkverbindung um die entsprechende Firmware aus dem Internet laden zu können.

Falls eine kabelgebundene Netzwerkverbindung nicht hergestellt werden kann, besteht die Möglichkeit, die benötigte Firmware auch von einem Wechselmedium (CD-R, USB-Stick u.a.) zu installieren.

Die Firmware wird dann folgendermaßen installiert (der Befehl wird im Verzeichnis der gespeicherten Firmware ausgeführt):

#dpkg -i <firmware.deb>

Um die richtige Firmware zu finden, wenn man nicht weiß, welcher WiFi-Chip im Computer eingebaut ist, wird dieser Befehl ausgeführt:

#fw-detect

Damit erhält man folgende Information:

#apt-get update
#apt-get install <Name der Firmware>
#modprobe -r <Modulname>
#modprobe <Modulname>

Nun wird der der Installationsbefehl mittels ausgeführt, den fw-detect in der Zeile mit "apt get install" ausgegeben hat. Bevor die WiFi-Schnittstelle konfiguriert werden kann, muss das Modul noch geladen werden (der Modulname wird von fw-detect ausgegeben).

Dies geschieht als root mit diesen Konsolenbefehlen:

modprobe -r <Modulname>

modprobe <Modulname>

<Modulname> wird durch den von fw-detect ausgegebenen realen Namen des Moduls ersetzt. Am einfachsten geschieht dies unter Verwendung der automatischen Textergänzung von Bash mittels Tabulator-Taste:

Nach den ersten Buchstaben des richtigen <Modulnamen> wird die vollständige Bezeichnung durch Drücken der Tabulatortaste (TAB) automatisch ergänzt. Zum Beispiel: "modprobe ipw [TAB-Taste]". Mit dieser Methode können unangenehme Tippfehler vermieden werden.

Beide modprobe-Befehle geben keine Rückmeldung aus, falls die Module erfolgreich installiert wurden. Es erscheint nur ein neuer Prompt (#).

Mit folgendem Befehl kann geprüft werden, ob das Modul korrekt geladen wurde:

#lsmod | grep <Modulname>

Nun kann Ceni gestartet werden: in K-Menü>Internet oder als root in einer Konsole. Siehe auch Internet & Netzwerk - Ceni. Die konfigurierbare WiFi-Schnittstelle sollte angezeigt werden.

Eine Anleitung zur Kontaktaufnahme mit verschiedenen (freien) WiFi-Netzwerken via wpagui findet sich in diesem Kapitel: WiFi-roaming, WPA-GUI.

Arbeitweisen des wpasupplicant in Debian

Auf Grund der Komplexizität der Gesetzgebung liefert aptosid nur DFSG-freie Software auf der LiveCD mit, nähere Informationen, wie man unfreie Soft- bzw. Firmware installiert gibt es hier.

Das Debian wpasupplicant-Paket unterstützt zwei Arbeitsweisen, die beide sehr nahe am Kern der Netzwerk-Infrastruktur (ifupdown) agieren.

Inhaltsangabe

  1. Spezifizieren des wpa_supplicant Treiber-Backends

    * Tabelle der unterstützten Treiber
    * Treiberempfehlungen

  2. Modus #1: Managed Mode

    * Beispiele
    * Tabelle der allgemeinen Optionen
    * Wichtige Anmerkungen zum Managed Mode
    * Wie man's macht

  3. Mode #2: Roaming Mode

    * wpa_supplicant.conf
    * /etc/network/interfaces
    * Kontrolle des Roaming-Daemons mit wpa_action
    * Feineinstellung der Roaming-Konfiguration
    * Das Logfile
    * Nutzung von externen Mapping-Skripten (z.B. guessnet)
    * /etc/network/interfaces mit externem Mapping

  4. Problemlösungen

    * Versteckte Essids

  5. Sicherheitserwägungen

    * Konfiguration der Dateirechte

1. Spezifikation des wpa_supplicant Treiber-Backends

Wird kein von der Karte benötigter Treibertyp explizit per "wpa_driver" ausgewählt, wird der 'wext'-Treiber benutzt. Verwendet man einen 2.4er Kernel oder einen 2.6er Kernel kleiner 2.6.14, muss der wpa-Treibertyp definiert werden.

Tabelle der unterstützten Treiber

Treiber Beschreibung
wext Linux wireless extensions (generisch)

Allgemeine Treiberempfehlung

Die Intel Pro Wireless Adapter (ipw2100, ipw2200 and ipw3945) benutzen alle das 'wext'-Backend, es sei denn, der Kernel ist älter als 2.6.14.

Madwifi unterstützt sowohl das 'wext' als auch das 'madwifi' Treiber-Backend. 'wext' wird empfohlen, wenn auch 'madwifi' unter Umständen besser funktionieren mag.

Ndiswrapper unterstützt seit Version 1.16 das 'ndiswrapper' Treiber-Backend nicht mehr. Wenn man keine antiquierte ndiswrapper-Version verwendet, muss der 'wext' Treiber für ndiswrapper verwendet werden.

Die 'wpa_driver'-Option wird in der /etc/network/interfaces im für das Gerät verwendeten Abschnitt definiert, zum Beispiel:

iface eth0 inet dhcp
	wpa-driver wext
	. . . . . andere Optionen

2. Modus #1: Managed Mode

Dieser Modus bietet die Möglichkeit, über das 'wpa_supplicant' Verbindung zu einem bekannten Netzwerk herzustellen. Dies funktioniert ähnlich wie mit dem Paket 'wireless tools'. Jedes Element, das benötigt wird, um eine Verbindung herzustellen, wird mit dem Präfix 'wpa-' in der /etc/network/interfaces angeführt.

Beispiel einer 'wpa.conf' für 'Managed Mode' - Beispiel 1
# Beispiel einer Mode #1 wpa.conf Datei - Beispiel 1.
# ACHTUNG: der Wert 'wpa-psk' ist nur gültig, wenn:

#   1. er Klartext (ascii) und zwischen 8 und 63 Buchstaben oder
#   2. er Hexadezimal und 64 Buchstaben lang ist.

# Verbindung mit dem Zugangsknoten (access point, 'ap') der ssid 'NETBEER' und der
# WPA-PSK/WPA2-PSK Verschlüsselung. Das 'wext' Treiber-Backend von 'wpa_supplicant' wird
# verwendet, da kein 'wpa-driver' definiert wurde.
# Das Passwort (passphrase) wird als ASCII (Klartext, plaintext) eingegeben. DHCP wird verwendet
# um eine Netzwerkadresse zu erhalten.
#
iface wlan0 inet dhcp

        wpa-ssid NETBEER
        # plaintext passphrase
        wpa-psk PlainTextSecret

# Verbindung mit dem access point der ssid 'homezone' . Verschlüsselung
# WPA-PSK/WPA2-PSK, wpa_supplicant verwendet das 'wext' Treiber-Backend
# Der psk (personal key) wird als verschlüsselte hexadezimale Zeichenfolge eingegeben.
# DHCP wird verwendet, um eine Netzwerkadresse zu erhalten.
#
iface wlan0 inet dhcp
        wpa-driver wext
        wpa-ssid homezone
        # hexadecimal psk is encoded from a plaintext passphrase
        wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

# Verbindung zu einem Accesspoint mit der ssid 'HotSpot1' und der bssid '00:1a:2b:3c:4d:5e'
# mit dem Verschlüsselungstyp WPA-PSK/WPA2-PSK unter Verwendung des 'madwifi'-Treiberbackends
# von wpa_supplicant. Die Passphrase ist als Zeichentextkette gegeben.
# Eine statische Netzwerkadresse wird zugewiesen.
#
iface ath0 inet static

        wpa-driver madwifi
        wpa-ssid HotSpot1
        wpa-bssid 00:1a:2b:3c:4d:5e
        # plaintext passphrase
        wpa-psk madhotspot
        wpa-key-mgmt WPA-PSK
        wpa-pairwise TKIP CCMP
        wpa-group TKIP CCMP
        wpa-proto WPA RSN
        # static ip settings
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

# Eine statische wpa_supplicant.conf wird für eth1 verwendet. Alle Netzwerkinformationen
# befinden sich in der vom Nutzer definierten wpa_supplicant.conf. Kein wpa-Treibertyp
# ist spezifiziert, somit wird wext verwendet. DHCP wird verwendet, um eine Netzwerkadresse
# zu erhalten.

iface eth1 inet dhcp

wpa-conf /path/to/wpa_supplicant.conf

Tabelle der allgemeinen Optionen

Es folgt nun eine kurze Übersicht der am häufigsten benutzten 'wpa-'Optionen, welche in der /etc/network/interfaces gültig sind. Sie müssen im Abschnitt des WLAN-Gerätes stehen. Siehe auch 'Wichtige Anmerkungen zum Managed Mode', um Informationen über gültige und ungültige Werte des 'wpa-'Präfixes zu erhalten.

ACHTUNG: bei allen Werten die gRoß- bzw. klEiNschreiBung beachten!

Element		Beispiel-Wert		Beschreibung
=======         =============           ===========
wpa-ssid	ssidintext		setzt das ssid des Netzwerks
wpa-bssid	00:1a:2b:3c:4d:5e	bssid des Access-Points
wpa-psk		0123456789		der preshared WPA-Schlüssel. Mit
					wpa_passphrase(8) kann der psk-Schlüssel
					aus einer Passphrase generiert werden
wpa-key-mgmt	NONE, WPA-PSK, WPA-EAP,	Liste der akzeptierten Authentifizierung
		IEEE8021X		der Management-Protokolle
wpa-group	CCMP, TKIP, WEP104,	Liste der akzeptierten group
		WEP40			ciphers für WPA
wpa-pairwise	CCMP, TKIP, NONE	Liste der paarweise akzeptierten
					ciphers für WPA
wpa-auth-alg	OPEN, SHARED, LEAP	Liste der erlaubten IEEE 802.11
					Authentifizierungsalgorhithmen
wpa-proto	WPA, RSN		Liste akzeptierter Protokolle
wpa-identity	meinnameintext		durch den Administrator bestimmter Benutzername
					(EAP authentication)
wpa-password	meinpasswortintext	Benutzerpasswort
					(EAP authentication)
wpa-scan-ssid	0 oder 1		Umschalten des ssid-Scannens mit
					spezifischen "probe request frames"
wpa-ap-scan     0 oder 1 oder 2		Einstellen der wpa_supplicant-Scannerlogik

Die gesamten Funktionen des wpa_cli(8) sollten integriert sein. Eine fehlende Funktion wird als Programmfehler (bug) angesehen und sollte als solcher berichtet werden. Patches sind immer willkommen.

Wichtige Anmerkungen zum Managed Mode

Fast alle 'wpa-'Optionen benötigen zumindest eine definierte ssid. Nur zwei der Optionen haben einen globalen Effekt. Dies sind 'wpa-ap-scan' und 'wpa-preauthenticate'.

Einer Schnittstelle in der interfaces(5) gegebene 'wpa-'Option genügt, den wpa_supplicant-Daemon aufzurufen.

Das ifupdown-Skript von wpasupplicant macht Annahmen bezüglich des 'Typs' der Eingabe, die für jede Option gültig ist. Es vermutet zum Beispiel, dass manche Eingaben Klartext sind und setzt sie in Anführungszeichen, bevor sie an wpa_cli weitergegeben werden. Dieser fügt die Eingabe dann dem Netzwerkblock durch den wpa_supplicant-ctrl_interface-socket hinzu.

'ifup' mit der '--verbose' Option von Hand ausgeführt zeigt alle Befehle, die von wpa_cli verwendet werden, um den Netzwerkblock zu bilden. Ist der Wert einer in der /etc/network/interfaces definierten 'wpa-'Option in Anführungszeichen gesetzt, wird angenommen, dass es sich um "plaintext"- oder "ascii"-Eingaben handelt.

Mancher Wertetyp einer Option, wie z.B. 'wpa-wep-key', wird als hexadezimale Folge angenommen. Der Wertetyp der 'wpa-psk'-Option wird jedoch durch eine simple Suche nach nichthexadezimalen Zeichen bestimmt.

Wie wpa_supplicant funktioniert

Wie bereits erwähnt, wird jedes 'wpa_supplicant'-spezifische Element mit dem Präfix 'wpa-' aufgerufen. Jedes Element entspricht einer in den wpa_supplicant.conf(5), wpa_supplicant(8) und wpa_cli(8) man-pages beschriebenen Eigenschaft des 'wpa_supplicant'.

Der supplicant wird ohne jede Vorkonfiguration aufgerufen und wpa_cli bildet die Netzwerkkonfiguration aus den bereitgestellten Eingaben der 'wpa-cli'-Zeilen. wpa_supplicant/wpa_cli legen nicht sofort Eigenschaften des Geräts fest (wie zum Beispiel iwconfig), sondern zeigen an, welcher Access-Point für eine Verbindung geeignet ist. Nachdem das Gerät die Gegend gescannt hat und der Access-Point gefunden wurde, werden, wenn der Access-Point bereit ist, diese Eigenschaften gesetzt.

Die Skripte, welche dies bewerkstelligen, befinden sich hier:

 /etc/wpa_supplicant/ifupdown.sh
/etc/wpa_supplicant/functions.sh

Sie werden von run-parts ausgeführt, welches selbst von ifupdown während der Phasen 'pre-up', 'pre-down' und 'post-down' aufgerufen wird.

In der 'pre-up'-Phase wird ein wpa_supplicant-daemon gestartet, gefolgt von einer Serie von wpi_cli-Befehlen, die eine Netzwerkkonfiguration entsprechend der in /etc/network/interfaces genutzten 'wpa-'Optionen für das Gerät aufsetzen.

Wenn wpa-roam benutzt wird, wird ein wpa_cli-daemon in der 'post-up'-Phase gestartet.

In der 'pre-down'-Phase wird der wpa_cli-daemon gestoppt (killed), so er vorhanden ist.

In der 'post-down'-Phase wird der wpa_supplicant-daemon gestoppt (killed).

3. Modus #2: Roaming Mode

Das Paket (wpa_supplicant) enthält einen in sich geschlossenen, simplen Roaming-Mechanismus in Form eines wpa_cli-action-Skripts, /sbin/wpa_action. Bei Aktivierung vermutet wpa_action Kontrolle über ifupdown. Die wpa_action(8)-manpage beschreibt die technischen Details eingehend.

Um ein Roaming-Interface zu aktivieren, muss folgendes Beispiel für die Datei interfaces(5) angepasst werden:

iface eth1 inet manual
	wpa-driver wext
        wpa-roam /path/to/wpa_supplicant.conf

Zwei Daemons werden durch obiges Beispiel gestartet: wpa_supplicant und wpa_cli. Eine /etc/wpa_supplicant.conf ist notwendig. Einen guten Anfang bietet das Konfigurationsbeispiel, welches so nach /etc kopiert werden kann:

 # copy the template to /etc/wpa_supplicant/
        cp /usr/share/doc/wpasupplicant/examples/wpa-roam.conf \
                /etc/wpa_supplicant/wpa_supplicant.conf
        # allow only root to read and write to file
        chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf

NOTE: it is critical that the used wpa_supplicant.conf defines the location of
      the 'ctrl_interface' so that a communication socket is created for the
      wpa_cli (wpa-roam daemon) to attach. The mentioned example configuration,
      /usr/share/doc/wpasupplicant/examples/wpa-roam.conf, has been set to a
      sane default.

Es ist notwendig, diese Konfigurationsdatei zu editieren und für alle bekannten Netzwerke Netzwerkblöcke hinzuzufügen. Wer sich unsicher ist, was das bedeutet, sollte jetzt die manpage wpa_supplicant.conf(5) lesen.

Für jedes Netzwerk kann eine eigene 'id_str' verwendet werden. Diese sollte eine simple Zeichenfolge sein. Diese Folge bildet die Basis der Netzwerkprofile; es entspricht einer logischen Schnittstelle, die in der Datei interfaces(5) definiert wurde. Wenn keine 'id_str' für ein Netzwerk gegeben ist, wird von wpa_action das Interface 'default' benutzt. Das Interface 'default' kann durch die Option 'wpa-default-iface' definiert werden.

Was all das bedeutet, wird mit folgendem (übersetzten) Beispiel aus der wpa_action(8) manpage illustriert:

/etc/wpa_supplicant.conf Beispiel
wpa_supplicant.conf example:
network={
        ssid="foo"
        key_mgmt=NONE
        # this id_str will notify /sbin/wpa_action to 'ifup uni'
        id_str="uni"
}

network={
        ssid="bar"
        psk=123456789...
        # this id_str will notify /sbin/wpa_action to 'ifup home_static'
        id_str="home_static"
}

network={
        ssid=""
        key_mgmt=NONE
        # no 'id_str' parameter is given, /sbin/wpa_action will 'ifup default'
}
/etc/network/interfaces Beispiel
/etc/network/interfaces (Beispiel):
# das roaming-interface muss die manuelle inet-Methode nutzen
# 'allow-hotplug' oder 'auto' stellt sicher, dass der Daemon automatisch startet
allow-hotplug eth1
iface eth1 inet manual

        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf


# kein id_str, 'default' wird zur Absicherung als Mapping Target verwendet
iface default inet dhcp


# id_str="uni"
iface uni inet dhcp

# id_str="home_static"
iface home_static inet static

        address 192.168.0.20
        netmask 255.255.255.0
        network 192.168.0.0

        broadcast 192.168.0.255
        gateway 192.168.0.1

Eine logische Schnittstelle wird durch ifup gestartet (und durch ifdown gestoppt), wenn wpa_supplicant sich mit dem durch 'id_str' in der /etc/wpa_supplicant.conf zugeordneten Netzwerk verbindet (oder die Verbindung trennt).

Ein Log der von /sbin/wpa_action durchgeführten Aktionen wird als /var/log/wpa_action.log gespeichert. Bitte an Problemberichte das Log anhängen.

Zusammenspiel von wpa_supplicant mit wpa_cli und wpa_gui

Der Prozess wpa_supplicant kann mit den Gruppenmitgliedern von "netdev" zusammenspielen, wenn die Beispielkonfiguration von "Roaming" verwendet wird (Gruppe und GID kann mit dem Parameter "GROUP= crtl_interface" angepasst werden). Die Beispieldatei wurde übersetzt

# die ctrl_interface Option in der Grundeinstellung wird in der Beispieldatei so definiert:
	# /usr/share/doc/wpasupplicant/examples/wpa-roam.conf
        ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev

Um supplicant zu steuern, werden  wpa_cli (Befehlseingabe) und wpa_gui (QT-Gui) ausgeliefert. Damit kann man Verbindungen aufbauen und stoppen sowie Netzwerkblöcke hinzufügen und löschen, weiters werden interaktiv Sicherheitsoptionen zur Verfügung gestellt und vieles mehr.

Kontrolle des Roaming-Daemon durch wpa_action

Ist der roaming daemon gestartet, geht er von der Kontrolle von ifupdown aus. Das heißt, wpa_cli ruft ifup auf, wenn wpa_supplicant sich erfolgreich mit einem Access-Point verbunden hat, und ruft ifdown auf, wenn die Verbindung getrennt wurde oder verloren ging. Solange der roaming-daemon aktiv ist, sollte ifupdown nicht direkt über manuelle Befehle angesprochen werden, sondern /sbin/wpa_action sollte verwendet werden, um den roaming-daemon zu stoppen oder neu zu laden. Um den roaming-daemon auf der Netzwerkkarte eth1 zu stoppen, wird folgender Befehl verwendet:

wpa_action eth1 stop

Wenn der roaming-daemon mit neuen Netzwerkinformationen versorgt wird, muss er nicht angehalten werden. Dazu wird die Datei wpa_supplicant.conf editiert, welche der roaming-daemon nutzt, und die neuen Netzwerkdaten werden in diese Datei eingegeben. Optionale Netzwerkeinstellungen, welche für das hinzugefügte Netzwerk spezifisch sind (gelinkt durch 'id_str'), werden in /etc/network/interfaces eingetragen. Im Anschluss kann der roaming-daemon wie folgt neu geladen werden:

wpa_action eth1 reload

Umfassende technische Einzelheiten, also wozu wpa_action fähig ist, findet man auf der manpage wpa_action(8).

Fine-Tuning der Roaming-Einstellungen

Es ist durchaus möglich, dass in näherer Umgebung mehrere Access-Points aktiv sind. Der Access-Point kann manuell mittels wpa_cli oder wpa_gui ausgewählt werden, oder jedem Access-Point bzw. Netzwerk kann seine eigene Prioritätsstufe gegeben werden. Letzteres geschieht durch die Option 'priority' in der wpa_supplicant.conf.

Die Protokolldatei (der Logfile)

Jede Aktivität des 'roaming-daemons' wird in /var/log/wpa_action.log protokolliert. Folgende Informationen sind darin enthalten:

*time and date
*interface name and action event
*values of enviromental variables (WPA_ID, WPA_ID_STR, WPA_CTRL_DIR)
*ifupdown command executed
*wpa_cli status (based on WPA-PSK, network may display different info)
*bssid
*ssid
*id
*id_str
*pairwise_cipher
*group_cipher
*key_mgmt
*wpa_state
*ip_address

Verwendung externer Mapping-Scripts (z. B. guessnet)

Zusätzlich zum internen Mapping von logischen Schnittstellen mittels 'id_str', kann wpa_action externe Mapping-Scripts aufrufen. Ein externes Mapping-Script sollte den Namen der logischen Schnittstelle übermitteln, welche aufgerufen werden soll. Jedes Mapping-Script sollte durch einen Aufruf von wpa_action funktionieren, wenn es mit dem ifupdown Mapping-Mechanismus arbeitet (siehe man interfaces).

Um ein Mapping-Script aufzurufen, wird zu den Schnittstellen-Stanzen (interfaces stanza) des physischen Roaming-Geräts (roaming device) eine Zeile mit der Syntax 'wpa-mapping-script name-of-the-script' angefügt. (Der absolute Pfad zu dem Mapping-Script kann erforderlich sein).

Der Inhalt der Zeilen, welche mit wpa-map beginnen, wird zum stdin des Mapping-Scripts weiter geleitet. Da ifupdown nur eine 'wpa-map'-Zeile zulässt, können beliebig viele Zeilen mit 'wpa-map' angehängt werden. Zum Beispiel:

iface wlan0 inet manual
        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        wpa-mapping-script guessnet-ifupdown
        wpa-map0 home
        wpa-map1 work
        wpa-map2 school
        # ... zusätzliche Zeilen mit wpa-mapX, wie benötigt

In der Grundeinstellung wird ein Mapping-Script nur verwendet, wenn kein 'id_str' für das aktuelle Netzwerk angegeben ist. Wenn 'id_str' vollständig ignoriert und nur ein externes Mapping-Script verwendet werden soll, wird die Option 'wpa-mapping-script-priority 1' gesetzt, um das Verhalten der Grundeinstellung zu überschreiben.

Falls das Mapping-Script eine leere Zeichenfolge übermittelt, nutzt wpa_action die Schnittstelle der Grundeinstellung (das Default-Device), solange keine Alternative durch die Option 'wpa-roam-default-iface' definiert ist.

Es folgt ein ausführliches Beispiel, welches guessnet-ifupdown als externes Mapping-Script verwendet.

/etc/network/interfaces mit externem Mapping-Beispiel
/etc/network/interfaces mit externem Mapping-Beispiel:
allow-hotplug wlan0
iface wlan0 inet manual

        wpa-driver wext
        wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
        wpa-roam-default-iface default-wparoam
        wpa-mapping-script guessnet-ifupdown
        wpa-map default: default-guessnet
        wpa-map0 home_static
        wpa-map1 work_static


# school kann nur mittels 'id_str' gewählt werden
iface school inet dhcp

        # resolvconf
        dns-nameservers 11.22.33.44 55.66.77.88

iface home_static inet static

        address 192.168.0.20
        netmask 255.255.255.0

        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        test peer address 192.168.0.1 mac 00:01:02:03:04:05


iface work_static inet static

        address 192.168.3.200
        netmask 255.255.255.0
        network 192.168.3.0
        broadcast 192.168.3.255

        gateway 192.168.3.1
        test peer address 192.168.3.1 mac 00:01:02:03:04:05

iface default-guessnet inet dhcp

iface default-wparoam inet dhcp

In diesem Beispiel nutzt wpa_action das Script guessnet nur zur Wahl einer geeigneten logischen Schnittstelle, wenn keine Option 'id_str' für das aktuelle Netzwerk in wpa_supplicant.conf gesetzt wurde.

Die Zeilen mit 'wpa-map' statten guessnet mit den logischen Schnittstellen aus, welche geprüft werden sollen. Die Default-Schnittstelle wird verwendet, wenn mit keiner Schnittstelle aus 'wpa-map' eine Verbindung hergestellt werden konnte. Die "Test-Zeilen" einer jeden logischen Schnittstelle werden von guessnet genutzt, um zu ermitteln, ob eine Verbindung zu dem gegebenen Netzwerk hergestellt ist. guessnet wählt zum Beispiel die logische Schnittstelle 'home_static', wenn ein Netzwerkgerät mit einer IP-Adresse 192.168.0.1 und einer MAC mit 00:01:02:03:04:05 im aktuellen Netzwerk vorhanden ist. Wenn alle Tests erfolglos sind, wird die Schnittstelle 'default-guessnet' konfiguriert.

Zur weiteren Information siehe die manpage guessnet(8).

4. Problemlösungen

Um Fehler bei Verbindung oder Authentifizierung ausfindig zu machen, schlagen wir vor, den Befehl `wpa_cli -i <interface>` in einer neu geöffneten Konsole auszuführen, bevor die Schnittstelle angesprochen wird. Zunächst wird der Befehl 'level 0' verwendet, um alle Fehlermeldungen zu erhalten. Im Anschluss daran erhält man mit `ifup --verbose <interface>` ausführliche Fehlermeldungen von dem Script, welches wpasupplicant startet.

Versteckte ssids

Zur Referenz beachte man Debian Bug.#358137. Um sich mit versteckten ssids verbinden zu können, soll die Option 'ap_scan=1' in der globalen Sektion (global section) und die Option 'scan_ssid=1' in der Sektion Netzwerkblock (network block section) der wpa_supplicant.conf eingetragen sein. Bei einem Netzwerk im Managed Mode (verwalteten Modus), geschieht dies durch folgende Stanzen (stanzas):

iface eth1 inet dhcp
wpa-conf managed
wpa-ap-scan 1
wpa-scan-ssid 1
# ... zusätzliche Einstellungsoptionen

Laut Debian Bug #368770 kann die Verbindungsherstellung bei Netzwerken eine lange Zeit in Anspruch nehmen, welche mit WEP gesichert sind. In manchen Fällen kann der Parameter 'ap_scan=2' in der Konfigurationsdatei (oder eine Stanze 'wpa-ap-scan 2', welche die gleiche Funktion hat) eine große Hilfe für eine schnellere Verbindungsherstellung bedeuten.

5. Sicherheitsüberlegungen

Konfiguration der Dateiberechtigungen

Es ist wichtig, die PSK und andere sensible Daten, welche das Netzwerk betreffen, nicht öffentlich zugänglich zu machen. Daher muss sicher gestellt sein, dass Konfigurationsdateien, welche diese Informationen enthalten, nur vom Besitzer dieser Dateien lesbar sind. Zum Beispiel:

chmod 0600 /etc/network/interfaces
# der Pfad zur Datei wpa_supplicant.conf kann individuell variieren
chmod 0600 /etc/wpa_supplicant/wpa_supplicant.conf

In der Grundeinstellung ist /etc/network/interfaces für alle lesbar. Dies ist nicht geeignet, um geheime Schlüssel und Passwörter in dieser Datei gespeichert zu haben.

Page last revised 014/08/2010 0100 UTC