
Die Idee ist eine lokale Cloud, die über WLAN ohne Internetanbindung erreichbar ist, für einen geschlossenen Kreis z.B. Stammtisch oder LUG. Ich möchte hier jedoch nur zeigen, wie man den Raspberry Pi überredet ein eigenes WLAN-Netzwerk aufzubauen.
Hierbei diente der Artikel “Setting up a Raspberry Pi as a Wireless Access Point” als Vorlage.
Installation
Zuerst werden die Pakete dnsmasq und hostapd auf dem RasPi installiert.
sudo apt install dnsmasq hostapd
Beide Dienste sind nach der Installation aktiv und müssen vorerst gestoppt werden.
sudo systemctl stop dnsmasq sudo systemctl stop hostapd
Im Anschluss wird die feste IP, über die der Raspberry Pi erreichbar sein soll, konfiguriert. Dazu wird über
sudo nano /etc/dhcpcd.conf
folgender Eintrag an das Ende der /etc/dhcpcd.conf gesetzt. Der RasPi bekommt die lokale IP 192.168.4.1 zugewiesen, über die der Pi dann später erreichbar sein wird.
interface wlan0 static ip_address=192.168.4.1/24 nohook wpa_supplicant
Nun wird der dhcpcd-Daemon neu gestartet.
sudo service dhcpcd restart
Der DHCP-Server wird konfiguriert, indem die DHCP-Range festgelegt wird. Dazu wird via
sudo nano /etc/dnsmasq.conf
der entsprechende Eintrag an das Ende der Datei gesetzt. Alle sich einwählenden Geräte bekommen IP-Adressen von 192.168.4.2 – 192.168.4.20 vergeben. D.h. hier wird eine Beschränkung auf max. 19 Geräte festgelegt.
interface=wlan0 # Use the require wireless interface - usually wlan0 dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
Nun muss der zuvor gestoppte Deamon wieder gestartet werden.
sudo systemctl start dnsmasq
Nun legt man in der mit
sudo nano /etc/hostapd/hostapd.conf
neu erstellten Konfigurationsdatei /etc/hostapd/hostapd.conf die Zugangsdaten für das WLAN-Netz fest. Im Beispiel wurde der Frequenzbereich auf g = IEEE 802.11g (2.4 GHz) festgelegt. Die SSID und das Passwort wären in dem Fall dann raspberrypi.
interface=wlan0 driver=nl80211 ssid=raspberrypi hw_mode=g channel=7 wmm_enabled=0 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=raspberrypi wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
Dem Dienst hosapd muss dies nun noch mitgeteilt werden. Dies erfolgt über
sudo nano /etc/default/hostapd
Hier wird die Zeile #DAEMON_CONF gesucht und mit
DAEMON_CONF="/etc/hostapd/hostapd.conf"
überschrieben. Nun wird hostapd aktiviert und gestartet.
sudo systemctl unmask hostapd sudo systemctl enable hostapd sudo systemctl start hostapd
Danach wird die Routing-Regel für IPv4 in der /etc/sysctl.conf gesetzt. Dazu wird die Datei mit
sudo nano /etc/sysctl.conf
geöffnet und
net.ipv4.ip_forward=1
auskommentiert. Im Anschluss wird die Firewall entsprechend konfiguriert
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
und dauerhaft in die /etc/iptables.ipv4.nat eingetragen.
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
Abschließend trägt man via
sudo nano /etc/rc.local
folgende Zeile
iptables-restore < /etc/iptables.ipv4.nat
in die /etc/rc.local vor “exit 0” ein und startet den RasPi via
sudo reboot
neu. Dieser ist dann über die eingerichtete WLAN-Verbindung via SSH mit
ssh pi@192.168.4.1
oder
ssh pi@raspberry
erreichbar. Damit sind die Voraussetzungen geschaffen, eine lokale Cloud auf dem Raspberry Pi zu installieren und diese in einem separaten WLAN-Netzwerk verfügbar zu machen.
Hey sehr gut beschrieben und gut erklärt. Ich habe da nur leider das Problem das ich den hostapd nicht starten kann.
Sudo systemctl Start hostapd
Job for hostapd.service failed because the Control process exited with error Code.
Nach „systemctl Status hostapd.service“
So weit ich meine alles gut bis Process:
1749 execstart=/usr/sbin/hostapd -B -P /run/hostapd.pip -B $DAEMON_CONF} (code=exited, Status=1/FAILURE)
Aus der Ferne kann ich leider nicht viel dazu sagen.
Evtl. ein Syntaxfehler in der Zeile um „DAEMON_CONF=…“ in der /etc/default/hostapd? Passiert schnell beim Übertragen.
Habe den selben Fehler. Bekomme noch:
Failed to start Advanced IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP Authenticator
Kann mir da wer helfen?
Hallo Frank,
ich weiß nicht, ob das nur ein temporäres Anzeigeproblem via CMS ist, aber ich sehe
“iptables-save > /etc/iptables.ipv4.nat” anstelle von “iptables-save > /etc/iptables.ipv4.nat”
Danke für den effektiven Beitrag!
Matthias
Hallo Matthias,
da macht anscheinend das Syntax-Highlighting Probleme. Ich werde da nochmal nachbessern.
Danke für die Info!
Ah, im Kommentar sieht man es nicht, da dort die HTML-Umschreibung des „größer als“ interpretiert wird. Nicht so im Code-Tag oben … Sorry, Peanuts.
Das Problem ist nun gefixt! 😉