WLAN einrichten

Die Konfiguration fürs WLan erfolgt unter Raspbian auf Konsolenebene durch wpa supplicant, welches auch im Lite-Image bereits enthalten ist. So kann die Konfiguration des WLAN theroetisch bereits vor der Erstinbetriebsnahme erfolgen - wichtig für Headless-Umgebungen ohne LAN (z.B. Raspberry-Zero).

Die Konfiguration erfolgt in der Datei /etc/wpa_supplicant/wpa_supplicant.conf, die sollte bereits vorhanden sein. Ansonsten einfach mit root-Rechten anlegen und die Zugriffsberechtigung auf 0600 setzen. Da die Datei auch die Passwörter für die WLAN-Netze enthält darf nur root diese Datei lesen können.

Wie oft sind viele Konfigurationen möglich, nicht alle müssen gezielt gesetzt werden.

Die Grundkonfiguration sieht dabei so aus:
country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev


Zusätzlich können die Parameter für ein oder mehrer WLAN-Netze angegeben werden.

Die nötigen Informationen kann man mittels Scan ermitteln:
sudo iwlist wlan0 scan | egrep -i 'cell|essid|wpa|cipher|auth'
          Cell 01 - Address: XX:XX:XX:XX:XX:XX
                    ESSID:"FRITZ!Box 7362 SL"
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK

oder
sudo iw dev wlan0 scan | egrep -i 'cell|ssid|wpa|cipher|auth'
    SSID: FRITZ!Box 7362 SL
         * Group cipher: CCMP
         * Pairwise ciphers: CCMP
         * Authentication suites: PSK


Daraus folgt dann beispielsweise folgender Eintrag in die wpa_supplicant.conf:
network={
    ssid="FRITZ!Box 7362 SL"
    psk="geheimerWLANSchlüssel
    proto=RSN
    scan_ssid=1
    key_mgmt=WPA-PSK
    pairwise=CCPM
    group=CCMP
}

proto gibt das Protokoll an: RSN (WPA2) oder WPA (WPA1)
scan_ssid=1 findet auch WLAN-Netze mit versteckter SSID
key_mgmt verwendet meist WPA-PSK (pre-shared key), manchmal auch WPA-EAP (EAP authentication)
pairwise: hier sind CCMP (WPA2) und TKIP (WPA1) möglich (auch beides)
group: hier sind ebenfalls CCMP und TKIP möglich. Die Konfiguration sollte sich nach dem AP (wie oben ermittelt) richten.

Es sind auch mehrere Netzwerke möglich. Dabei wird zusätzlich die Priorität angegeben, mit welchem Netzwerk vorzugsweise eine Verbindung hergestellt werden soll. Zur Unterscheidung wird außerdem jedem Netzwerk ein eigener Name gegeben.

network={
    id_str="WLAN2"
    ssid="FRITZ!Box 7460"
    psk="geheimerWLANSchlüssel"
    proto=WPA
    scan_ssid=1
    key_mgmt=WPA-PSK
    pairwise=TKIP
    group=TKIP
    priority=1
}


Es wird das Netzwerk mit der höchsten Priorität gewählt.

 

IP einrichten

Wenn das WLAN eingerichtet ist und sich das System mit einem Netzwerk verbindet, so wird es (wenn verfügbar) per DHCP eine IP-Adresse bekommen.
Wollte man früher einem System eine feste IP-Adresse vergeben, so wurde diese in der /etc/network/interfaces eingetragen. Unter Raspbian sollte sich in der /etc/network/interfaces nur der folgende Eintrag für die WLAN-Schnittstelle befinden:
allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf


Die IP-Adressen werden dem DHCP-Client in der /etc/dhcpcd.conf vorgegeben. Dabei kann die Grudnkonfiguration dieser Datei erhalten bleiben. Ergänzt werden nur die Einträge für jedes einzelne WLAN:
ssid "FRITZ!Box 7362 SL"
 static ip_address=192.168.177.100/24
 static routers=192.168.177.1
 static domain_name_servers=192.168.177.1

ssid "FRITZ!Box 7460"
 static ip_address=192.168.178.102/24
 static routers=192.168.178.1
 static domain_name_servers=192.168.178.1


 

DHCPCD

dhcpcd ist als Client für die IP-Adressen zuständig. Bei bestimmten Ereignissen (z.B. RENEW,REBIND,REBOOT,EXPIRE usw.) werden verschiedene Scripte aufgerufen. Diese kann man z.B. für die Mitteilung der IP-Adresse nutzen.

Dabei werden folgende Scripte abgearbeitet:
/etc/dhcpcd.enter-hook
/lib/dhcpcd/dhcpcd-hooks/
/etc/dhcpcd.exit-hook


Legt man z.B. das Script /etc/dhcpcd.exit-hook an, so kann dort das Ereigniss ausgewertet und z.B. die aktuelle (interne) IP verschickt werden.

Last modified: 07/05/2017 14:24:39