Raspberry Pi als WLAN Access Point einrichten
Ich zeige euch in den nächsten Zeilen wie man einen Raspberry Pi als WLAN Access Point einrichten kann. Mit so einem konfigurierten Pi vergrößert man das WLAN oder errichtet neue Subnetze. Im einfachsten Fall bringt man drahtloses Internet auch in das abgelegenste Zimmer im Haus.
Raspberry Pi als WLAN Access Point einrichten
Ich habe im Laufe der letzten Jahre zahlreiche Raspberry Pi Geräte angesammelt die meist ungenutzt gelagert werden. Da ich aktuell in einem Zimmer schlechten WLAN Empfang habe konfiguriere ich einen meiner Raspberry Pi 1 als neuen WLAN Access Point, damit ich auch in diesem Zimmer WLAN Empfang habe. Eins vorweg: es ist egal welches Pi Modell ihr benutzt, die Anleitung ist für alle großen Raspberry Pi Boards gültig (einzige Ausnahme sind die Raspberry Pi Zero).
Für dieses Projekt benötigen wir:
- Raspberry Pi
- 1 oder 2 WLAN Adapter
- 1 Netzwerkkabel (optional)
- 1 Netzteil mit Micro USB Stecker
- Raspberry Pi Gehäuse (optional aber empfehlenswert)
Ich habe im Haus eine LAN Verkabelung, weshalb ich für meinen Access Point nur ein Netzwerkkabel und einen USB WLAN Adapter benötige. Falls ihr nur WLAN habt und dieses vergrößern wollt, dann benötigt ihr 2 WLAN Adapter oder alternativ nur einen Adapter und einen Raspberry Pi 3 oder besser mit integriertem WLAN. In jedem Fall müssen wir in 2 verschiedenen Netzen sein.
Schritt 1: SD Karte vorbereiten
Für meinen Uralt Raspberry Pi schreibe ich ein aktuelles Raspbian Buster Betriebssystem auf eine SD Karte. Gerade für Infrastruktur-Geräte im WLAN ist es besonders wichtig immer aktuell zu sein, damit bekannte Sicherheitslücken nicht ausgenutzt werden. Besser würde zum Pi 1 wohl Raspbian Wheezy passen… Wie man eine Image auf die SD Karte schreiben kann, habe ich bereits an anderer Stelle beschrieben.
Schritt 2: System booten und aktualisieren
Wir startet nun am besten den Pi mit angeschlossener USB Tastatur und Maus und einem HDMI Kabel zum Monitor. Nach der initialen Einrichtung vom System sollte man über das Terminal den Pi aktualisieren:
sudo apt-get update sudo apt-get upgrade
Ich empfehle den Pi über die Konfiguration in den CLI Modus zu starten. Das grafisch Betriebssystem werden wir nicht mehr benötigen, da der Pi später headless (ohne angeschlossenem Monitor) läuft. Wichtig ist, dass ihr den SSH Zugriff erlaubt (so können wir später den Access Point vom PC aus aktualisieren und warten):
Schritt 3: Software installieren
Die Software um einen Access Point zu betreiben oder den Raspberry Pi als Bridge zu verwenden um ein WLAN zu vergrößern ist nicht Teil der Standardinstallation. Wir müssen deshalb die benötigten Pakete wie folgt installieren:
sudo apt-get install hostapd bridge-utils
Schritt 4: WLAN Access Point Host konfigurieren
Die Konfigurationsdatei für WLAN-AP-Host ist nach der Installation noch nicht vorhanden, wir erstellen folgende neue Datei:
sudo nano /etc/hostapd/hostapd.conf
Dort können wir eine minimale Konfiguration erstellen:
# Bridge-Betrieb bridge=br0 # Schnittstelle und Treiber interface=wlan0 #driver=nl80211 # WLAN Konfiguration ssid=MeinTestWLAN channel=1 hw_mode=g ieee80211n=1 ieee80211d=1 country_code=DE wmm_enabled=1 # WLAN Verschlüsselung auth_algs=1 wpa=2 wpa_key_mgmt=WPA-PSK rsn_pairwise=CCMP wpa_passphrase=testtest
In dieser Datei definieren wir nun den neuen WLAN Zugriffspunkt. Dabei wird eine neue Bridge mit dem Namen br0 erstellt. Als Interface dient wlan0, falls ihr 2 WLAN Sticks verwendet könnt ihr zwischen wlan0 und wlan1 wählen. Danach kommt die Konfiguration vom WLAN Netz. Ihr braucht dort nur die SSID definieren. In der Sektion zur Verschlüsselung könnt ihr das Passort als Text leserlich definieren. Falls der Empfang später trotzdem schlecht ist, dann kann man noch den channel über das dieses Netz sendet ändern (1-13 sind mögliche Werte).
Ihr habt 2 Möglichkeiten:
- SSID und Passwort sind gleich wie das bereits vorhandene WLAN
in diesem Fall wird dieser Raspberry Pi das bereits vorhandene WLAN über das zweite Interface vergrößern. - SSID und Passwort sind neu
der Raspberry Pi erzeugt einen neuen Zugrangspunkt. Ein Gerät muss sich dann neu verbinden.
Jede Möglichkeit hat Vor- und Nachteile. Im ersten Schritt empfehle ich die Konfiguration eines neuen WLANs (also eine neue SSID), das macht den Test ob das Gerät läuft einfacher. Man checkt im Smartphone einfach ob die neue SSID unter den WLANs erscheint und man sich darüber verbinden kann. Einfach besseren Empfang beim vorhanden WLAN ist da etwas subtiler.
Nach dem Speichern der Datei hat man ein großes Sicherheitsrisiko. Das WLAN Passwort ist leserlich in der Datei gespeichert, deshalb schränken wir den Lese- und Schreibzugriff auf den Admin Benutzer ein:
sudo chmod 600 /etc/hostapd/hostapd.conf
Schritt 5: Netzwerk-Brücke konfigurieren
Im letzten Schritt der Konfiguration müssen wir den Netzwerk Interfaces noch sagen, wie mit der neu definierten Netzwerkbrücke umzugehen ist. Dazu editieren wir
sudo nano /etc/network/interfaces
Wir fügen folgenden Text ein:
# Localhost auto lo iface lo inet loopback # WLAN auto wlan0 allow-hotplug wlan0 iface wlan0 inet manual wireless-power off # Netzwerkbrücke auto br0 iface br0 inet dhcp bridge_ports eth0 wlan0 # build bridge bridge_fd 0 # no forwarding delay bridge_stp off # disable Spanning Tree
In der WLAN Sektion wird die WLAN Schnittstelle definiert. Die Netzwerkbrücke Sektion ist neu. Anstatt das zweite Netzwerk (eth0 oder wlan1) zu erstellen geben wir als Schnittstelle die zuvor konfigurierte Netzwerkbrücke br0 an. Diese nutzt dhcp und stellt in meiner Konfiguration eine Brücke von eth0 zu wlan0 dar. Ihr solltet das entsprechend ändern (vermutlich wlan1 zu wlan0).
Schritt 6: Neustart
Nach einen Neustart des Systems sollten alle Konfigurationen neu geladen worden sein:
sudo reboot
Wir können nun kontrollieren ob die Bridge korrekt erkannt wird:
brctl show
Schritt 7: Testen
Die Konfiguration ist soweit abgeschlossen. Wir können unseren neuen Access Point mit folgendem Befehl manuell starten:
sudo hostapd -dd /etc/hostapd/hostapd.conf
Der Parameter -dd gibt auf der Konsole zusätzliche Debuginformationen aus.
…
Wenn alles funktioniert, dann wird im Text irgendwo AP-ENABLED ausgegeben. Nun solltet ihr das neu konfigurierte WLAN finden. Ein erster Loginversuch sollte den Test abschließen.
Schritt 8: Automatisieren
Den Access Point nun jedesmal manuell über SSH zu starten wäre recht umständlich. Deshalb werden wir den Start von hostapd nun automatisieren. Damit wird der Daemon auch jedesmal bei einem Neustart des Systems hochgefahren. Der Pi kann so jederzeit vom Strom genommen werden und nach dem Neustart wird die zuvor eingestellte Konfiguration wieder neu geladen und der Access Point ist verfügbar. Wir bedienen uns dabei den systemctl Befehlen:
sudo systemctl start hostapd
startet den Dienst. Einmal gestartet wird der Daemon auch nach dem Neustart wieder aktiv.
sudo systemctl stop hostapd
solltet ihr den zuvor gezeigten Debugmodus brauchen, dann müsst ihr zuvor den Daemon stoppen. Die WLAN Hardware kann nur einmal verwendet werden.
sudo systemctl status hostapd
manchmal reicht zur Fehlersuche auch einfach eine Statusabfrage des Dienstes.
Fazit
Ein alter Raspberry Pi gibt einen guten Access Point wieder. Mit ein wenig Konfigurationsarbeit spart man sich den Kauf eines neuen Netzwerkgeräts und gibt dem Raspberry Pi einen neuen Verwendungszweck.
Was macht ihr mit den alten Raspberry Pis?
Hallo Herr Ziegelwanger,
vielen dank für dieses super Tutorial. Ich habe versucht auf diese weise einen Bridge ein zu richten, um meinen Raspberry Pi 3B+ als Access Point für Keller und Garten zu verwenden. Das ganze funktioniert bei mir bis zum Punkt 6. Nach „brctl show“ bekomme ich folgende Ausgabe:
bridge name bridge id STP enabled interfaces
br0 8000.b827ebae5066 no eth0
Also wlan0 taucht nicht auf. „iwlist wlan0 scan“ zeigt mir WLAN´s in der nähe an, also funktioniert der WLAN Adapter.
Versuche ich mit „sudo hostapd -dd /etc/hostapd/hostapd.conf“ weiter zu machen bekomme ich folgende Ausgabe:
random: getrandom() support available
Configuration file: /etc/hostapd/hostapd.conf
Line 3: invalid line ‚ ‚
Line 7: invalid line ‚ ‚
Line 16: invalid line ‚ ‚
3 errors found in configuration file ‚/etc/hostapd/hostapd.conf‘
Failed to set up interface with /etc/hostapd/hostapd.conf
hostapd_init: free iface 0x15e5020
Failed to initialize interface
Können Sie mir evtl. sagen was ich falsch mache?
Vorab vielen Dank und schöne Feiertage.
Laut der Fehlermeldung ist der Fehler in /etc/hostapd/hostapd.conf zu suchen: Line 3: invalid line ‘ ‘…was steht denn in Zeile 3? Kann es sein, dass da ein unsichtbares Zeichen eingefügt wurde? Welcher Editor wurde verwendet?
Zeile 3; 7 und 16 sind leere Zeilen.
Die Datei war ja leer, bzw. gab es nicht. Habe den Inhalt von oben via copy & paste eingefügt. Für den ersten Test habe ich sie auch unverändert gelassen, also SSID und passphrase.
Laut „ip addr“ heißt mein WLAN Adapter „wlan0“, passt also auch zu den Angaben im Beispiel.
Achso, als Editor habe ich nano verwendet.
Ok, den Fehler hätte ich gefunden. In der hostapd.conf waren in den leeren Zeilen jeweils ein Leerzeichen.
Also ich die entfernt hatte ginge es direkt. Habe dann SSID und Passphrase angepasst. Beim Befehl „sudo systemctl start hostapd“ kam jedoch die Meldung das der Servie masked sei.
Mit „sudo systemctl unmask hostapd“ und „sudo systemctl enable hostapd“ war das behoben und „sudo systemctl start hostapd“ lässt sich ausführen.
Jetzt hab ich aber das Problem das die Clients keine IP zugewiesen bekommen.
Hallo,
RaspbianBustler oder Lite Versionen hatte ich für dieses Projekt überlegt zu verwenden. Kann die Anleitung auf beides ohne Abbänderung angewandt werden?
Funktioniert es ebenso mit DietPi?
Es wäre sonst nacheinander abzuarbeiten, von Raspbian zu Lite und dann zu DietPi …
Hinweise würde ich gerne erhalte und dankend annehmen
DietPi kannte ich bisher gar nicht, danke für diese Info. Generell funktioniert die Anleitung für jede Art Linux System, da nicht vorhandene Software über den Paketmanager hinzu installiert wird. Ich kann aber beim Raspberry Pi das offizielle Raspbian Linux (Lite oder Full) empfehlen, da damit die optimale Nutzbarkeit der Hardware sichergestellt ist. Ein Lite System bringt kaum einen Mehrwert, da die kleinsten SD Karten schon mehr als ausreichend für das vollständige System sind.
Es wäre noch zu erwähnen das hostapd vor dem Start durch Systemcontroll noch mit „systemctl unmask hostapd“ demaskiert wird.
Ansonsten kann man hostapd nicht für den Systemstart Aktivieren.
Ansonsten kann ich nur sagen SUPER Anleitung. Das mit hostapd hat auf Anhieb Funktioniert. Gerade mit dem Bridge Modus. In der
Regel findet man nur mit NAT und Firewalling.
Stimmt, danke für diese wichtige Ergänzung!