Raspberry Pi als WLAN-Router einrichten

ELektronik-KOmpendium.de
Online

Preis auf Anfrage

Wichtige informationen

  • Kurs
  • Online
Beschreibung

Raspberry Pi als WLAN-Router einrichten (WLAN-Access-Point) Mit Raspbian Jessie geprüft. Ein WLAN-Router stellt mehreren WLAN-Clients über seinen integrierten Access-Point ein WLAN mit einer eigenen IP-Konfiguration zur Verfügung. Dazu verfügt der WLAN-Router über einen DHCP- und DNS-Server. Eine Alternative für diesen WLAN-Access-Point ist eine WLAN-Bridge. Hier dient der Raspberry Pi nur als Netzwerk-Brücke für zwei Netzwerk-Segmente. Auf der einen Seite das WLAN und auf der anderen Seite das kabelgebundene Netzwerk.

Wichtige informationen

Was lernen Sie in diesem Kurs?

WLAN
Router
Access
DHCP
DNS
Server
Interface
Service
NAT
Laufen
Installation
Bridge

Themenkreis

Aufgabe
  1. Ermitteln Sie, welche Bestandteile und Voraussetzungen für den Betrieb eines WLAN-Routers notwendig sind.
  2. Ermitteln Sie die notwendige IP-Konfiguration.
  3. Richten Sie den WLAN-Access-Point ein.
  4. Richten Sie die Router-Funktionen ein.
Voraussetzungen prüfen und Vorbereitungen vornehmen

Damit die folgende Lösung gelingt sollte man die Distribution Raspbian Jessie verwenden und sicherstellen, dass der verwendete WLAN-Adapter mit dem Raspberry Pi grundsätzlich funktioniert. Der WLAN-Adapter sollte außerdem den Access-Point-Modus beherrschen, was nicht alle können.
Wir prüfen also der Reihe nach, ob die Voraussetzungen erfüllt werden.

In Raspbian Jessie ist standardmäßig ein DHCP Client Daemon (DHCPCD) aktiviert. Die Netzwerk-Konfiguration wird nicht mehr in der Datei "/etc/network/interfaces", sondern in der Datei "/etc/dhcpcd.conf" vorgenommen. Für einen Teil der Konfiguration der Netzwerk-Brücke verwenden wir 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.

ip a

Beide Netzwerk-Schnittstellen (eth0 und wlan0) müssen vorhanden sein. Die IP-Konfiguration ist dabei unerheblich.

Dann müssen wir noch sicherstellen, dass der WLAN-Adapter den AP-Modus beherrscht. Um das zu prüfen müssen die Wireless-Tools installieren.

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.

  • WLAN-Adapter, die sich für den Betrieb eines Access Point eignen

Bevor wir uns ans Installieren machen, führen wir noch eine Aktualisierung durch.

sudo apt-get update sudo apt-get upgrade

Wie so häufig, ein Reboot tut gut.

sudo reboot Lösung: WLAN-Host einrichten (hostapd)

Wenn der Raspberry Pi und der WLAN-Adapter alle Voraussetzungen erfüllen, dann können wir mit der Installation der notwendigen Software und deren Konfiguration loslegen.

Wir beginnen mit dem Access-Point-Daemon, den Host Access Point Daemon, kurz "hostapd". Das ist ein WLAN-Authenticator. Er kümmert sich darum, WLAN-Funktionen verschlüsselt anzubieten und die dazu notwendige Authentifizierung der WLAN-Clients vorzunehmen.

sudo apt-get install hostapd

Nach der Installation geht es ans Einrichten von "hostapd", der den WLAN-Access-Point für den Router betreibt.

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.

# WLAN-Router-Betrieb # Schnittstelle und Treiber interface=wlan0 #driver=nl80211 # WLAN-Konfiguration ssid=WLANrouter 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 rsn_preauth=1 rsn_preauth_interfaces=wlan0 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 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 der eingerichtete WLAN-Router 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.

Lösung: WLAN-Host in Betrieb nehmen

Bevor wir uns an das weitere Einrichten des WLAN-Routers machen, nehmen wir zuerst den WLAN-Host in Betrieb. Nur wenn das funktioniert, lohnen sich die weiteren Schritte. Wenn der WLAN-Host nicht in Betrieb geht, braucht man die Router-Funktionen gar nicht erst einzurichten.

Zur Inbetriebnahme des WLAN-Hosts starten wir "hostapd" im Debug-Modus. Dabei werden uns "alle" Fehlermeldungen angezeigt.

sudo hostapd -dd /etc/hostapd/hostapd.conf

"hostapd" wird in jedem Fall Meldungen produzieren. Nur wenn "hostapd" mit Fehlermeldungen abbricht, dann stimmt irgendetwas noch nicht. Die Fehler sind allerdings äußerst vielfältig und die dazugehörigen Fehlermeldungen nicht immer eindeutig. Ein beliebter Fehler ist das fehlende "sudo" beim Aufrufen von "hostapd".
Weitere Fehlerquellen kann man ausschließen, wenn man sicherstellt, dass der WLAN-Adapter grundsätzlich funktioniert und den AP-Modus beherrscht.
Eine weitere Fehlerquelle ist die verwendete Distribution. Funktionieren wird es auf alle Fälle mit "Raspbian". Andere abgespeckte Distributionen können Probleme machen.

Sofern die Konfiguration richtig ist und der WLAN-Adapter mitspielt, läuft die Konfiguration durch. Das Programm wird aber nicht beendet. Das heißt, "hostapd" kehrt nicht zur Befehlseingabe zurück. Mit "Strg + C" kann es beendet werden.

Es kann sein, dass "Add randomness"-Meldungen ausgegeben werden. Man kann das vorerst ignorieren. Wenn es nervt, kann man "hostapd" auch ohne den Parameter "-dd" aufrufen. Das ist allerdings keine schöne Lösung. Wir werden uns später darum kümmern, wenn "hostapd" grundsätzlich funktioniert.

sudo hostapd /etc/hostapd/hostapd.conf

Sofern der Befehl keinen Fehler produziert und abbricht, kann man den WLAN-AP testen. Dazu versucht man mit einem WLAN-Client das WLAN zu finden und sich dort anzumelden.
Dabei kann man in der Kommandozeile schön beobachten, wie sich der WLAN-Client anmeldet (CONNECTED) und auch wieder abmeldet (DISCONNECTED), wenn er die Verbindung zum WLAN beendet.

Hinweis: Wenn man die Konfiguration per SSH vornimmt, dann sollte man das Prüfen des WLAN-AP mit einem anderen Client vornehmen, weil man sich sonst durch das Wechseln des WLANs die SSH-Verbindung abschießt.

Mit der Installation von "hostapd" wird er auch automatisch beim Booten im Hintergrund gestartet. Allerdings muss man dem Daemon noch sagen, wo er seine Konfiguration findet.
Wenn "hostapd" noch läuft, dann beenden wir es mit "Strg + C". Dann öffnen wir eine Konfigurationsdatei:

sudo nano /etc/default/hostapd

Darin ändern wir den Parameter "DAEMON_CONF" wie folgt:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Anschließend speichern und schließen mit Strg + O, Return, Strg + X.

Lösung: Router-Funktionen einrichten

Wenn der WLAN-Access-Point funktioniert, kann man sich ans Einrichten der Router-Funktionen machen. Dazu brauchen wir einen DHCP- und DNS-Server. Meist wird nur ein DHCP-Server installiert und die DNS-Server-Adresse fest eingetragen. Es geht aber noch viel bequemer.
"dnsmasq" ist ein ausgesprochen vielseitiger Daemon. Neben der Funktion als DHCP-Server kann er unter anderem auch dazu verwendet werden, DNS-Dienste und IPv6-Router-Advertisements bereitzustellen.
Der DHCP-Server sorgt dafür, dass die WLAN-Clients nach der Anmeldung alle nötigen Informationen für die IP-Konfiguration bekommen. Der DNS-Dienst übernimmt die Namensauflösung und der IPv6-RA-Dienst verteilt die Router Advertisements. Damit ermöglichen wir nicht nur IPv4, sondern gleichzeitig auch IPv6 in unserem WLAN.

sudo apt-get install dnsmasq

Danach müssen wir "dnsmasq" konfigurieren. Dazu öffnen wir die Datei "/etc/dnsmasq.conf".

sudo nano /etc/dnsmasq.conf

Dort tragen wir folgende Zeilen als Minimal-Konfiguration ein:

# DHCP-Server aktiv für WLAN-Interface interface=wlan0
# DHCP-Server nicht aktiv für bestehendes Netzwerk no-dhcp-interface=eth0 # IPv4-Adressbereich und Lease-Time dhcp-range=192.168.1.2,192.168.1.254,24h # DNS dhcp-option=option:dns-server,192.168.1.1

Hier wird der DHCP-Server und das DNS-Forwarding für die Netzwerk-Schnittstelle "wlan0" aktiviert und für "eth0" verboten, da diese Dienste im kabelgebundenen Netzwerk schon laufen. Außerdem wird festgelegt, dass im WLAN die IPv4-Adressen von 192.168.1.2 bis 192.168.1.254 für die Clients vergeben werden und die Adresse des DNS-Servers festgelegt.

Jetzt geht es noch darum, die Netzwerk-Einstellungen zu konfigurieren.

sudo nano /etc/network/interfaces

Hier trägt man folgende Konfiguration ein:

# Localhost auto lo iface lo inet loopback # Ethernet auto eth0 allow-hotplug eth0 iface eth0 inet manual # WLAN-Interface auto wlan0 allow-hotplug wlan0 iface wlan0 inet static address 192.168.1.1 netmask 255.255.255.0 # NAT und Masquerading aktivieren up /sbin/iptables -A FORWARD -o eth0 -i wlan0 -m conntrack --ctstate NEW -j ACCEPT up /sbin/iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT up /sbin/iptables -t nat -F POSTROUTING up /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # IP-Forwarding aktivieren up sysctl -w net.ipv4.ip_forward=1 up sysctl -w net.ipv6.conf.all.forwarding=1 # hostapd und dnsmasq neu starten up service hostapd restart up service dnsmasq restart

In dieser IPv4-Konfiguration hat das WLAN-Interface eine statische IPv4-Adresse. Das brauchen wir für den Betrieb des DNS-Servers.
Dann wird noch NAT, Masquerading und IP-Forwarding aktiviert. Beides sind wichtige Router-Funktionen.
Dann werden die Dienste "hostapd" und "dnsmasq" neu gestartet.

Anschließend muss man die Datei speichern und schließen: 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 der WLAN-Router den Vorteil, dass er in jedem lokalen Netzwerk funktioniert, wenn die IPv4-Konfiguration per DHCP geliefert wird. Wenn IPv6 aktiviert ist, dann funktioniert es ebenso.

  • Statische IPv4-Adresse für Raspbian Jessie (Raspberry Pi)
  • Statische IPv4-Adresse für Raspbian Wheezy (Raspberrry Pi)

Ein Neustart des Raspberry Pi ist abschließend erforderlich.

sudo reboot Lösung: Funktion testen

Wenn der Raspberry Pi neu gestartet ist, sollte man kontrollieren, ob die Dienste "hostapd" und "dnsmasq" laufen, bevor man sich am neu eingerichteten WLAN-Router anmeldet.

sudo service hostapd status
ps ax | grep hostapd
sudo service dnsmasq status ps ax | grep dnsmasq

Wenn die Dienste laufen und die Prozesse für die beiden Dienste angezeigt werden, dann kann man versuchen sich mit einem WLAN-Client am WLAN-Router anzumelden.

Hinweis zum Raspberry Pi als WLAN-Router

Egal welche Lösung, als WLAN-Access-Point ist der Raspberry Pi von seiner Schnittstellenleistung her nicht geeignet. Die Einrichtung ist fehleranfällig, umständlich und unter Umständen nicht sicher. Davon abgesehen ist der Raspberry Pi mit der notwendigen Ausstattung teurer als ein WLAN-Router. Wer ernsthaft und dauerhaft einen WLAN-Access-Point betreiben möchte, der sollte einen Blick auf OpenWRT legen und sich einen günstigen kompatiblen Router dazu besorgen. Preislich, aber auch vom Komfort ist das viel interessanter.

Sicherheitshinweise

Wer eigene Netzwerk-Komponenten einrichtet und in Betrieb nimmt, der übernimmt auch dafür die Verantwortung. Mit dieser Lösung kann man sich unter Umständen ins Knie schießen. Wenn man denkt, dass die hier dargestellte Lösung fertig ist, dann ist das ein Irrtum. Wenn man keine zusätzlichen Sicherheitsvorkehrungen trifft, dann reißt man sich mit dieser Netzwerk-Brücke eine Sicherheitslücke ins lokale Netzwerk.

Beachten Sie bitte die Sicherheitshinweise zum Betrieb eines WLAN-Access-Points.

  • Sicherheitshinweise zum Betrieb eines Raspberry Pi als WLAN-Access-Point
Weitere verwandte Themen:
  • Raspberry Pi als WLAN-Access-Point einrichten
  • Raspberry Pi als WLAN-Bridge einrichten
  • WLAN-Adapter am Raspberry Pi einrichten
  • Energiespar-Modus des WLAN-Adapters ausschalten
  • Informationen zum WLAN-Adapter am Raspberry Pi ermitteln
  • Netzwerk-Probleme beim Raspberry Pi lösen

Hinweis: Dieses Tutorial ist Teil einer Aufgaben und Übungen mit dem Raspberry Pi-Reihe, die für Lern- und Ausbildungszwecke erstellt wurde. Die dargestellte Lösung ist Teil einer konkreten Aufgabenstellung, die Schüler, Auszubildende und Studenten, lösen sollen. Deshalb muss der hier aufgezeigte Weg nicht der Optimalfall sein.