Raspberry Pi als WLAN-Bridge einrichten (WLAN-Access-Point)
Mit Raspbian Jessie geprüft.
Typischerweise sind WLAN-Router für den Internet-Zugang gleichzeitig auch WLAN-Access-Points. In solchen Fällen verfügt der Access-Point über einen DHCP- und DNS-Server. Man konfiguriert also ein eigenes IP-Netzwerk. Wenn man aber schon einen DHCP- und DNS-Server im lokalen Netzwerk hat, macht der Betrieb eines zusätzlichen WLAN-Routers nicht so viel Sinn. Vor allem, weil sich durch das Kaskadieren von Routern unnötigerweise Schwierigkeiten ergeben. Meistens äußert sich das mit Verbindungsproblemen.
In der Regel reicht es aus, den Raspberry Pi als Netzwerk-Brücke zu betreiben, der die Datenpakete und Verbindungen zwischen WLAN und LAN vermittelt.
Eine Netzwerk-Brücke, im Englischen Bridge, verbindet zwei Netzwerk-Segmente. Die verbundenen Rechner liegen alle im selben logischen IP-Netzwerk und erhalten ihre IP-Konfiguration aus dem selben Adressbereich.
Der Betrieb des Raspberry Pi als Netzwerk-Brücke setzt natürlich voraus, dass sich in dem lokalen Netzwerk bereits ein DHCP-Server, ein DNS-Server und ein Standard-Gateway befinden.
Aufgabe
- Prüfen, ob der WLAN-Adapter einen Access-Point-Modus hat.
- Den WLAN-Adapter als WLAN-Zugangspunkt einrichten.
- Den Ethernet-Port als Übergang ins leitungsgebundene Netz einrichten.
Voraussetzungen prüfen
Um Probleme beim Einrichten zu vermeiden empfiehlt es sich eine frische Raspbian-Image zu verwenden. Ein Raspbian Jessie Lite ist ausreichend. Außerdem sollte man sicherstellen, dass der verwendete WLAN-Adapter mit dem Raspberry Pi grundsätzlich funktioniert und den Access-Point-Modus beherrscht. Mit dem internen WLAN-Adapter im Raspberry Pi 3 funktioniert es.
Stellen wir also zuerst einmal fest, ob der vorgesehene WLAN-Adapter den AP-Modus beherrscht. Um das zu prüfen müssen die Wireless-Tools installiert sein.
sudo apt-get install iw
iw list | grep AP
Wenn dieses Kommando eine oder mehrere Zeilen mit "AP" auswirft, dann ist alles im grünen Bereich und der WLAN-Adapter beherrscht den Access-Point-Modus. Dann ist der WLAN-Adapter für unsere Aufgabe geeignet. Wenn nicht, dann sollte man sich einen anderen WLAN-Adapter besorgen.
In Raspbian Jessie ist standardmäßig ein DHCP Client Daemon (DHCPCD) aktiviert. Die Netzwerk-Konfiguration wird in der Datei "/etc/dhcpcd.conf" vorgenommen. Für einen Teil der Konfiguration der Netzwerk-Brücke verwenden wir hier die Datei "/etc/network/interfaces". Der DHCP Client Daemon ist davon nicht betroffen.
Es ist jedoch wichtig festzustellen, ob der "dhcpcd" überhaupt aktiv ist.
service dhcpcd status
Dann müssen wir sicherstellen, dass sowohl das Ethernet-Interface (eth0) als auch der WLAN-Adapter (wlan0) funktionieren und vorhanden sind.
ip l
Beide Netzwerk-Schnittstellen (eth0 und wlan0) müssen vorhanden sein. Die IP-Konfiguration ist dabei unerheblich.
System aktualisieren und Software installieren
Wenn der Raspberry Pi und der WLAN-Adapter alle Voraussetzungen erfüllen, dann können wir loslegen. Wir beginnen mit der Installation der notwendigen Software. Davor führen wir noch eine Systemaktualisierung durch.
sudo apt-get update
sudo apt-get upgrade
Dann brauchen wir zwei Dinge: Einmal einen Access-Point-Daemon und eine Software für die Netzwerk-Brücke. Der Host Access Point Daemon (HostAPD), kurz "hostapd", ist ein WLAN-Authenticator. Er kümmert sich darum, WLAN-Funktionen verschlüsselt anzubieten und die dazu notwendige Authentifizierung der WLAN-Clients vorzunehmen. Beispielsweise per WPA2-PSK.
"bridge-utils" enthält Bibliotheken und Kommandos, um Netzwerk-Brücken einzurichten.
sudo apt-get install hostapd bridge-utils
Nach der Installation geht es an die Konfiguration von vom WLAN-AP-Host und der Netzwerk-Brücke.
WLAN-AP-Host konfigurieren (hostapd)
Die Konfiguration des WLAN-AP-Hosts:
sudo nano /etc/hostapd/hostapd.conf
Die Datei sollte noch nicht vorhanden und somit leer sein. Wenn die Datei doch vorhanden ist, dann sollte man sie vollständig überschreiben.
In die Datei tragen wir folgende Minimal-Konfiguration ein. Selbstverständlich gibt es noch mehr Parameter, die in diesem Fall keine Rolle spielen.
# Bridge-Betrieb
bridge=br0
# Schnittstelle und Treiber
interface=wlan0
#driver=nl80211
# WLAN-Konfiguration
ssid=WLANbridge
channel=1
hw_mode=g
wmm_enabled=1
country_code=DE
ieee80211d=1
ignore_broadcast_ssid=0
auth_algs=1
# WLAN-Verschlüsselung
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=testtest
Drei Einstellungen sind individuell zu tätigen. Das eine ist der WLAN-Name ("ssid"), der Kanal ("channel"), der von 1 bis 13 frei konfiguriert werden kann, wobei man hier nichts ändern muss. Eventuell muss man hier den Kanal wechseln, wenn eine WLAN-Analyse ergibt, dass bereits mehrere andere WLANs diesen Kanal belegen. Prinzipiell können mehrere WLANs den selben Kanal belegen. Das ist besser, als wenn sich die Kanäle überschneiden.
Der dritte Parameter ist das WLAN-Passwort ("wpa_passphrase"). Hier sollte man ein Passwort von mindestens 8 Zeichen Länge im Klartext eintragen.
Wenn man schon einen WLAN-Access-Point hat, dann ist es nicht verkehrt dessen WLAN-Name und WLAN-Passwort zu verwenden. Die Clients wählen dann automatisch das WLAN, für das es einen besseren Empfang gibt. Zum Testen, ob die eingerichtete WLAN-Bridge tatsächlich funktioniert, sollte man temporär einen anderen WLAN-Namen ("ssid") wählen.
Hinweis zum WLAN-Treiber: Es gibt in dieser Konfigurationsdatei den Parameter "driver", der auskommentiert (#) ist. Normalerweise wird von "hostapd" automatisch der richtige Treiber geladen. Es kann natürlich sein, dass das nicht gelingt. Dann muss man hier den richtigen Treiber explizit angeben.
Anschließend speichern und schließen mit Strg + O, Return, Strg + X.
Weil diese Datei das WLAN-Passwort im Klartext enthält, sollte nur der Benutzer "root" Leserechte auf diese Datei haben.
sudo chmod 600 /etc/hostapd/hostapd.conf
Keine Sorge, mit dem Benutzer "pi" kann man die Datei jederzeit ändern und speichern.
Netzwerk-Brücke konfigurieren und in Betrieb nehmen
Jetzt müssen wir noch die Brücke und die Netzwerk-Interfaces konfigurieren.
sudo nano /etc/network/interfaces
Dazu nehmen wir folgende Minimal-Konfiguration in der Konfigurationsdatei für die Netzwerk-Einstellungen vor.
# Localhost
auto lo
iface lo inet loopback
# Ethernet
auto eth0
allow-hotplug eth0
iface eth0 inet manual
# WLAN
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wireless-power off
# Netzwerkbrücke
auto br0
iface br0 inet manual
bridge_ports eth0 wlan0 # build bridge
bridge_fd 0 # no forwarding delay
bridge_stp off # disable Spanning Tree Protocol
Anschließend speichern und schließen mit Strg + O, Return, Strg + X.
Es wäre auch denkbar, der Ethernet-Schnittstelle eine statische IP-Konfiguration zu verpassen. Das muss aber nicht sein. In dieser Form hat die WLAN-Bridge den Vorteil, dass sie in jedem lokalen Netzwerk funktioniert, wenn die IPv4-Konfiguration per DHCP geliefert wird. Wenn IPv6 aktiviert ist, dann funktioniert es ebenso.
Hinweis: Wenn Sie die Absicht haben, dem Raspberry Pi eine statische IPv4-Adresse zu geben, dann konfigurieren Sie das br0-Interface, und nicht "eth0" oder "wlan0", sonst können Sie sich nicht mehr per SSH mit dem Raspberry Pi verbinden.
Bei einer statische IP-Konfiguration empfiehlt es sich zusätzlich noch, den DHCPCD zu deaktivieren.