Raspberry Pi als Wlan AccessPoint

Games & IT

Damit wir unseren Raspberry Pi als Access Point nutzen können, müssen wir einen DHCP Server und den Host Access Point Daemon installieren.
sudo apt install isc-dhcp-server hostapd -y
Da der DHCP Server nicht richtig konfiguriert ist, wird er Fehlermeldungen bringen. Deshalb schalten wir ihn erstmal aus.
sudo systemctl stop isc-dhcp-server
Wir müssen jetzt unserer internen Schnittstelle noch eine feste IP-Zuweisen.
sudo nano /etc/dhcpcd.conf
Dort müssen wir am Ende der Conf unser Interface und IP Adresse definieren.
Füge also folgende Zeilen hinzu
interface wlan0
static ip_address=10.0.1.1/24

Anschließen starten wir den DHCP Client Daemon neu.
sudo systemctl restart dhcpcd
Wir erstellen nun ein Backup der isc-dhcp-server config.
sudo cp /etc/default/isc-dhcp-server /etc/default/isc-dhcp-server.old
Wir öffnen sie nun..
nano /etc/default/isc-dhcp-server
Und tragen unten bei „INTERFACESv4“ die Schnittstelle für das interne Netz ein.
INTERFACESv4="wlan0"
Speichert die Datei ab und schließt sie wieder.
Nun konfigurieren wir den DHCP-Server, aber vorher erstellen wir zur Sicherheit wieder ein Backup
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.back
Öffnet nun die Konfigurationsdatei
nano /etc/dhcp/dhcpd.conf
Jetzt können wir die IP-Adressbereiche festlegen. (Ergänze folgende Zeilen am Ende der Config)
#wlan0
subnet 10.0.1.0 netmask 255.255.255.0 {
        range 10.0.1.2 10.0.1.255;
        interface wlan0;
        option routers 10.0.1.1;
}

Ebenfalls müsst ihr ganz oben noch die DNS-Server anpassen.
Ich nutze die 8.8.8.8 und 8.8.4.4
Das ganze sieht dann so aus:
# option definitions common to all supported networks…
option domain-name "";
option domain-name-servers 8.8.8.8, 8.8.4.4;

Speichere die Datei ab und schließe sie wieder.
Nun starten wir den DHCP-Server neu und enablen ihn.
systemctl restart isc-dhcp-server
sudo systemctl enable isc-dhcp-server

Jetzt können wir unseren AccessPoint einrichten. Dazu müssen wir eine neue config Datei anlegen.
sudo nano /etc/hostapd/hostapd.conf
Dort tragen wir Folgendes ein:
# Wlan-AP
# Schnittstelle und Treiber
interface=wlan0
#driver=nl80211
# WLAN-Konfiguration
ssid=WLANNAME
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=PASSWORD

Drei Einstellungen musst du ändern. Das sind der WLAN-Name („ssid“), das Passwort „wpa_passphrase und der Kanal („channel“), der von 1 bis 13 frei konfiguriert werden kann, wobei man hier eigentlich nichts ändern muss.
Da in der config Datei das Passwort im Klartext enthalten ist, vergeben wir nur dem Benutzer „root“ Leserechte.
sudo chmod 600 /etc/hostapd/hostapd.conf
Damit der „hostapd“ als Daemon im Hintergrund startet, müssen wir dem Daemon sagen, wo er seine Konfigurationsdatei findet.
sudo nano /etc/default/hostapd
Dort tragen wir Folgendes am Ende ein:
RUN_DAEMON=yes
DAEMON_CONF="/etc/hostapd/hostapd.conf"

Nun nehmen wir „hostapd“ in Betrieb:
sudo systemctl unmask hostapd
sudo systemctl start hostapd
sudo systemctl enable hostapd

Damit das ganze am Ende auch funktioniert und du mit den internen Geräten auch in das öffentliche Netz kommst, müssen wir IP-Forwarding aktivieren.
Dazu erstellen wir wieder ein Backup der Config…
cp /etc/sysctl.conf  /etc/sysctl.conf.back
…und öffnen sie anschließend
nano /etc/sysctl.conf
Dort gibt es eine Zeile:
#Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forwarding=1

Entferne die „#“ vor „net.ipv4.ip_forwarding=1“
Anschließend müssen wir noch die IP-Tables anpassen
Installiere zuerst die IP-Tables
apt-get install iptables-persistent
Jetzt passen wir sie noch an
nano /etc/iptables/rules.v4
Ersetze den kompletten Inhalt durch (Ihr müsste eure Schnittstellen dementsprechend anpassen)
*nat
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
*filter
-A INPUT -i lo -j ACCEPT
# ssh erlauben, damit wir uns nicht selbst aussperren
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
# eingehenden Traffic erlauben der zu den ausgehenden Verbindungen,
# u.a. für Clients aus dem Private-Netzwerk
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# alles andere eingehend verbieten
-A INPUT -i eth0 -j DROP
COMMIT

Speicher sie ab und schließe sie und führe folgenden Befehl aus
iptables-restore < /etc/iptables/rules.v4
Jetzt starten wir das ganze System einmal neu
sudo reboot now
Starten vorsichtshalber nochmal den DHCP-Server neu
sudo systemctl restart isc-dhcp-server
Starten „hostapd“ nochmal neu
sudo systemctl restart hostapd
Und nun sollte alles funktionieren