Einführung

Standardmässig verschlüsselt man heutzutage sein WLAN mit WPA2 PSK. Mit wpa_supplicant kann man sich an diesem WLAN authentifizieren. Die Konfigurationsdatei dafür wird mit wpa_passphrase generiert.

WLAN Netzwerk finden

Zuerst wird das WLAN-Interface aktiviert (in meinem Fall heisst das Interface wlan0):

$ sudo ifconfig wlan0 up

Dann scannt man nach verfügbaren Netzwerken:

$ sudo iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: 00:19:CB:03:E7:6A
                    Channel:6
                    Frequency:2.437 GHz (Channel 6)
                    Quality=60/70  Signal level=-50 dBm
                    Encryption key:on
                    ESSID:"discordia"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s
                    Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s
                    Mode:Master
                   [...]
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                   [...]
[...]

Wir sehen, das WLAN mit der ESSID discordia ist 802.11i/WPA2 Version 1 PSK verschlüsselt.

Konfiguration generieren

Mit wpa_passphrase kann man die Konfigurationsdatei generieren. Falls man das Passwort nicht als zweiten Parameter angibt, liest wpa_passphrase von STDIN (Tastatureingabe). Am einfachsten schreibt man die Ausgabe direkt in eine Datei: $ wpa_passphrase discordia | sudo tee /etc/wpa_supplicant.conf.discordia

Nach der Eingabe vom Passwort kann man sich die Konfigurationsdatei anschauen:

$ sudo cat /etc/wpa_supplicant.conf.discordia
# reading passphrase from stdin
network={
	ssid="discordia"
	#psk="meinpasswort"
	psk=129ffd04eefcce833590d91d88b00497584d3feb3d5fd05bc36218b301b978e0
}

Die Kommentar-Zeilen kann man löschen. Diese werden von wpa_supplicant ignoriert. Vor allem das Passwort in Klartext sollte entfernt werden.

Mit dem Netzwerk verbinden

Um wpa_supplicant zu testen, startet man wpa_supplicant im Debugging-Modus:

$ sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf.discordia -d

Falls die Verbindung erfolgreich zustande kam, sieht mal folgende Meldung:

[...]
EAPOL authentication completed successfully
[...]

Mit Ctrl-C beendet man die Verbindung.

Funktioniert die Verbindung, kann man wpa_supplicant im Hintergrund als Daemon laufen lassen:

$ sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf.discordia  -B

Mit ps sieht man gut, dass der wpa_supplicant im Hintergrund läuft:

$ ps -ef | grep [w]pa_supplicant
root     20405     1  0 16:59 ?        00:00:00 wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf.discordia -B

Das Tool iwconfig zeigt einem die Verbindung an:

$ iwconfig wlan0
wlan0     IEEE 802.11abgn  ESSID:"discordia"
          Mode:Managed  Frequency:2.437 GHz  Access Point: 00:19:CB:03:E7:6A
          Bit Rate=54 Mb/s   Tx-Power=15 dBm
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=49/70  Signal level=-61 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:1  Invalid misc:30   Missed beacon:0

Netzwerk konfigurieren

Jetzt hat man sich aber erst gegenüger dem Accespoint authentifiziert. Eine Netzwerkkonfiguration vom Interface wlan0 ist noch nicht vorhanden. Mit dhclient kann man sich von einem DHCP-Server die Konfiguration holen:

$ sudo dhclient -v wlan0
Internet Systems Consortium DHCP Client 4.2.3-P2
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/wlan0/58:94:6b:e9:fd:78
Sending on   LPF/wlan0/58:94:6b:e9:fd:78
Sending on   Socket/fallback
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 10.0.0.20
bound to 10.0.0.23 -- renewal in 34113 seconds.

Die Verbindung ins Internet steht:

$ ping -c 3 google.ch
PING google.ch (173.194.35.24) 56(84) bytes of data.
64 bytes from mil01s16-in-f24.1e100.net (173.194.35.24): icmp_req=1 ttl=56 time=29.3 ms
64 bytes from mil01s16-in-f24.1e100.net (173.194.35.24): icmp_req=2 ttl=56 time=30.1 ms
64 bytes from mil01s16-in-f24.1e100.net (173.194.35.24): icmp_req=3 ttl=56 time=28.2 ms
--- google.ch ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 28.252/29.265/30.199/0.821 ms

Die Netzwerkkonfiguration kann man natürlich auch manuell ohne DHCP herstellen.

Verbindung beenden

Wenn man die Verbindung trennen will, kann man den wpa_supplicant beenden:

$ sudo pkill wpa_supplicant