Raspberry Pi als WLAN Access Point nutzen

Der Raspberry Pi ist vielseitig einsetzbar. Vom Erlernen einer Programmiersprache über einen Server für die Hausautomatisierung bis zur Alternative zu Dropbox lässt sich hier fast alles realisieren. Dieser Beitrag erklärt, wie aus dem Raspberry Pi ein WLAN Access Point wird und somit das heimische Netzwerk beispielsweise in den Garten erweitert. 

Damit kann der Raspberry Pi ein privates oder öffentliches Netzwerk aufbauen und die Internetverbindung vom Ethernet-Port oder einem zweiten WLAN-Modul weiterleiten. Gleichzeitig wird der Raspberry Pi als DHCP-Server konfiguriert, so dass die IP-Vergabe automatisch funktioniert.

Raspberry Pi als WLAN Access Point nutzen
Raspberry Pi als WLAN Access Point nutzen (Bild: Copyright Benjamin Blessing).

Raspberry Pi als WLAN Access Point einrichten

Diese Anleitung wurde am 25.06.2016 aktualisiert. Einleitend wird das Einrichten eines WLAN Access Point mit dem aktuellen Raspberry Pi 3 erläutert. Weiter unten findet sich dann die Anleitung für den Raspberry Pi 2 zusammen mit dem Edimax WLAN USB-Stick. Beide Anleitungen setzen lediglich ein lauffähiges Raspbian voraus und die Bereitschaft, den Terminal für die Einrichtung zu nutzen. Wird Hilfe bei der Konfiguration benötigt, finden sich Anleitungen zum Einrichten des Raspberry Pi unter OS X sowie zum Einrichten des Raspberry Pi unter Windows ebenfalls hier auf RandomBrick.de.

Raspberry Pi 3 als WLAN Access Point einrichten

Das spannende am neuen Raspberry Pi 3 ist das integrierte WLAN-Modul. Das reduziert die Treiberprobleme, die bei einem USB-WLAN-Stick von Drittanbieter auftauchen können. Der Broadcom Chip BCM43438 wird von dem Open-Source Treiber brcmfmac unterstützt, wodurch sich die Einrichtung eines WLAN Access Points sehr einfach gestaltet.

Schritt 1: Raspbian aktualisieren

Vor dem Start wird das Betriebssystem auf den neusten Stand gebracht:

sudo apt-get update && sudo apt-get upgrade

Schritt 2: Pakete installieren

Nach der Aktualisierung von Raspbian werden die Pakete dnsmasq und hostapd installiert:

sudo apt-get install dnsmasq hostapd

Zum Verständnis:

  • hostapd: Dieses Paket ermöglicht die Nutzung des integrierten WLANs als Access Point
  • dnsmasq: Das ist ein kombinierter DHCP- und DNS-Server der sich sehr einfach konfigurieren lässt

Nutzer mit großen Ambitionen können auch die isc-dhcp-server und bind9 Pakete für einen DHCP- und DNS-Server verwenden. Für meine Ansprüche genügt jedoch dnsmasq.

Schritt 3: Interfaces konfigurieren

Im nächsten Schritt wird das wlan0 Interface mit einer statischen IP-Adresse versehen. Solltet ihr bis zu diesem Punkt über WLAN mit dem Raspberry Pi verbunden sein, sollte jetzt die Steuerung über Ethernet oder Tastatur und Monitor erfolgen. In aktuellen Versionen von Raspian erfolgt die Konfiguration der Interfaces automatisch über dhcpcd. Deshalb ist hier festzulegen, dass wlan0 ignoriert wird. Dazu ist dhcpcd aufzurufen:

sudo nano /etc/dhcpcd.conf

Folgende Zeile ist ganz unten in der Datei einzutragen. Überprüft dabei, ob in dhcpcd irgendeine Zeile steht, die das Wort interface enthält. Falls ja, muss die einzufügende Zeile darüber eingefügt werden.

denyinterfaces wlan0

Schritt 4: Statische IP-Adresse konfigurieren

Anschließend wird für wlan0 eine statische UP-Adresse festgelegt. Dazu ist die Konfigurationsdatei für die Interfaces aufzurufen und der wlan0 Abschnitt zu bearbeiten:

sudo nano /etc/network/interfaces

Der wlan0 Abschnitt sollte anschließend so aussehen. Bei der IP-Adresse könnt ihr eine für euch passende wählen oder meine Vorgaben einfach übernehmen.

allow-hotplug wlan0
iface wlan0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Jetzt muss dhcpcd neugestartet und die Konfiguration für wlan0 neu geladen werden:

sudo service dhcpcd restart
sudo ifdown wlan0; sudo ifup wlan0.

Schritt 5: Hostapd einrichten

In diesem Schritt wird hostapd konfiguriert. Dazu wird eine neue Konfigurationsdatei erstellt:

sudo nano /etc/hostapd/hostapd.conf

In diese Datei müssen folgende Werte kopiert werden. Zum Verständnis habe ich diese mit Kommentaren versehen. Sollten die Kommentare nicht benötigt werden, kann jede Zeile die mit einem Hashtag beginnt, entfernt werden.

# Der Name des WLAN Interface das hier konfiguriert wird
interface=wlan0

# Verwendung des nl80211 Treibers mit dem brcmfmac Treiber
driver=nl80211

# Der sichtbare WLAN-Name
ssid=Dein_WLAN

# Vewende das 2,4 GHz Band
hw_mode=g

# Verwende Kanal 6
channel=6

# Aktiviere 802.11n
ieee80211n=1

# Aktiviere WMM
wmm_enabled=1

# Nutze 40MHz Frequenzen mit 20ns Sicherheitsintervall
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

# Akzeptiere alle MAC Adressen
macaddr_acl=0

# Verwende WPA Authentifizierung
auth_algs=1

# Klienten müssen den Namen des Netzwerks nicht kennen
ignore_broadcast_ssid=0

# Verwende WPA2
wpa=2

# Verwende einen Pre-shared Key
wpa_key_mgmt=WPA-PSK

# Das WLAN-Passwort
wpa_passphrase=Dein_Passwort

# Verwende AES anstatt TKIP
rsn_pairwise=CCMP

Mit Strg + X, Y und anschließend Enter wird alles gespeichert und der Editor geschlossen. Mit einem kurzen Befehl lässt sich prüfen, ob die Konfiguration funktioniert:

sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf.

Sollte bis hier alles funktioniert haben, müsste jetzt ein neues WLAN mit dem Namen Dein_WLAN auftauchen. Eine Verbindung mit dem WLAN dürfte allerdings noch nicht funktionieren, da den Endgeräten noch keine IP-Adresse zur Verfügung gestellt wird, solange dnsmasq nicht konfiguriert ist. Mit Strg + C wird die Anfrage unterbrochen.

Abschließend muss hostapd noch mitgeteilt werden, wo die Konfigurationsdatei nach dem Hochfahren zu finden ist. Dazu ist die default Konfigurationsdatei zu öffnen:

sudo nano /etc/default/hostapd

In dieser Datei ist folgende Zeile zu suchen

#DAEMON_CONF=““

Und durch diese zu ersetzen:

DAEMON_CONF=“/etc/hostapd/hostapd.conf“

Schritt 6: Dnsmasq einrichten

Dnsmasq wird mit einer sehr umfangreichen Konfigurationsdatei ausgeliefert, die weit mehr Einstellungen und Informationen beinhaltet, als für diesen Zweck benötigt werden. Anstatt die Konfigurationsdatei einfach zu löschen, empfiehlt es sich, diese umzubenennen und eine neue Datei zu erstellen:

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf

In die neue Datei sind folgende Werte zu kopieren. Achtet dabei auf die IP-Adresse. Diese sollte mit den Werten aus Schritt 4 übereinstimmen:

# Das zu nutzende Interface
interface=wlan0

# Die IP-Adresse über die der DNS zuhört
listen-address=192.168.0.1
bind-interfaces

# Weiterleitung von DNS Anfragen an den Google DNS
server=8.8.8.8

# Kurznamen werden nicht weitergeleitet
domain-needed
bogus-priv

# Der DHCP-Server verteilt Adressen im Adressbereich zwischen 192.168.0.50 und 192.168.0.150 und vergibt diese an das jeweilige Endgerät für 10 Tage (240 Stunden).
dhcp-range=192.168.0.50,192.168.0.150,240h

Mit Strg + X, Y und Enter speichern und schließen.

Schritt 7: IPV4-Weiterleitung

Anschließend wird noch die Einrichtung eine Paketweiterleitung benötigt, bevor Traffic irgendwohin gesendet werden kann. Dazu ist ein Eintrag in der sysctl.conf notwendig:

sudo nano /etc/sysctl.conf

In dieser Datei ist der Hashtag (#) vor der Zeile #net.ipv4.ip_forward=1 zu entfernen, so dass diese nur noch wie folgt aussieht:

net.ipv4.ip_forward=1

Mit Strg + X, Y und Enter speichern und schließen. An dieser Stelle empfiehlt sich ein Neustart des Raspberry Pi mit

sudo reboot

Damit der Access Point auf dem Raspberry Pi auch die Internetverbindung weitergibt, ist ein NAT zwischen dem wlan0 und eth0 Interface einzurichten. Das erledigen folgende Kommandos:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state –state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Da diese Regeln bei jedem Neustart des Raspberry Pis anzuwenden sind, werden diese Regeln in die Datei /etc/iptables.ipv4.nat gespeichert:

sudo sh -c „iptables-save > /etc/iptables.ipv4.nat“

Zusätzlich ist noch die rc.local zu bearbeiten:

sudo nano /etc/rc.local

Über der Zeile mit exit 0 ist folgende Zeile einzufügen:

iptables-restore < /etc/iptables.ipv4.nat

Mit Strg + X, Y und Enter speichern und schließen.

Abschließend sind die verwendeten Dienste einmal neuzustarten.

sudo service hostapd start
sudo service dnsmasq start

Jetzt sollte der Raspberry Pi einen Access Point bereitstellen und die Internetverbindung weitergeben. Zur Sicherheit empfehle ich einen letzten Neustart, damit auch alles wie gewünscht funktioniert:

sudo reboot

Nach dem Neustart läuft der Raspberry Pi als WLAN Access Point und gibt die Internetverbindung über die Ethernetkarte an das interne WLAN-Modul weiter.

Raspberry Pi 2 als WLAN Access Point einrichten

Dieser Abschnitt bezieht sich auf den Raspberry Pi 2, der selbst kein internes WLAN-Modul enthält. Für einen Access Point benötigt der Raspberry Pi hierzu einen USB WLAN Adapter. Diese Anleitung bezieht sich auf den Adapter von Edimax. Der BeitragRaspberry Pi 2 Edimax WLAN einrichten zeigt Schritt für Schritt wie der USB-Adapter zu konfigurieren ist.

Die Einrichtung erfolgt vollständig über die Konsole. Alle notwendigen Schritte und Befehle werden nachfolgen aufgelistet und sind auch für Benutzer ohne Linux-Kenntnisse problemlos durchführbar.

Schritt 1: hostapd installieren

Die Konsole auf dem Raspberry Pi öffnen und folgenden Befehl eintippen und warten, bis der Vorgang von alleine beendet wird.

sudo apt-get install bridge-utils hostapd

Andere WLAN USB Adapter werden mit der installieren Kopie von hostapd über apt keine Probleme haben. Für den im Edimax befindlichen Chip RTL8188CUS ist diese Version jedoch inkompatibel. Das wird mit Schritt zwei behoben.

Schritt 2: hostapd Ersatz-Binary

Schritt 2 wird nur benötigt, wenn der oben erwähnte Edimax WLAN-USB-Stick im Einsatz ist.

Dave Conroy hat vom Edimax-Team einen passenden Treiber für hostapb erhalten und stellt diesen freundlicherweise auf seinem Webspace zur Verfügung. Über die Konsole muss jeder Befehl Schritt für Schritt auf dem Raspberry Pi eingegeben werden. Wer zu faul zum Tippen ist, kann das auch per Copy & Paste machen:

wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip
unzip hostapd.zip
sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak
sudo mv hostapd /usr/sbin/hostapd.edimax
sudo ln -sf /usr/sbin/hostapd.edimax /usr/sbin/hostapd
sudo chown root.root /usr/sbin/hostapd
sudo chmod 755 /usr/sbin/hostapd

Nur die ersten beiden Befehle werden mit einem Ergebnis quittiert. Alle anderen werden abgearbeitet, aber nicht vom System bestätigt. Wer der Quelle nicht traut, kann den Treiber hier herunter laden und selbst kompilieren.

Schritt 3: WLAN ausfindig machen

Jetzt wird der Name des WLAN-USB-Sticks oder des integrierten WLAN-Moduls benötigt. Mit dem nachfolgenden Kommando werden alle verfügbaren Netzwerkkarten angezeigt. In der Regel wird ein wlan-Gerät angezeigt, das der WLAN Stick ist. In meinem Fall heißt der Stick wlan0.

ifconfig

Schritt 4: Verbinden von Ethernet und WLAN

Damit der Raspberry Pi die Internetverbindung des heimischen Netzwerk weitergeben kann, muss eine Verbindung zwischen Ethernet und WLAN hergestellt werden. Das ist für den mobilen NAS-Server weniger wichtig, wird der Raspberry Pi als Access Point verwendet, muss das Internet durchgeleitet werden. Dazu werden die Netzwerk Interfaces bearbeitet.

sudo nano /etc/network/interfaces

Alle Zeilen die wlan0 enthalten, sollten gelöscht werden. Anschließend folgende Zeilen eintragen:

auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0

In meinem Fall sieht die interfaces jetzt so aus:

#loopback adapter
auto lo
iface lo inet loopback

#wired adapter
iface eth0 inet dhcp

#bridge
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0

Mit Strg + X wird der Editor geschlossen, mit Y das Speichern bestätigen und mit Enter wird der Vorgang bestätigt.

Schritt 5: Hostapd konfigurieren

Abschließend muss hostapd noch konfiguriert werden. Das wird über folgenden Befehl erreicht:

sudo nano /etc/hostapd/hostapd.conf

Folgende Werte sind einzutragen mit einer Ausnahme. Die Zeile driver=rtl871xdrv ist nur für den Einsatz des Edimax USB-WLAN-Stick relevant.

interface=wlan0
driver=rtl871xdrv
bridge=br0
ssid=DEIN_WLAN_NAME
channel=1
wmm_enabled=0
wpa=1
wpa_passphrase=DEIN_WLAN_PASSWORT
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0

Die Werte ssid für den WLAN Name und wpa_passphrase für das WLAN Passwort können beliebig angepasst werden. Mit Strg + X speichern, mit Y bestätigen und mit Enter schließen.

Schritt 6: Neustart des Raspberry Pi

Ab hier sollte der Raspberry Pi per Ethernet mit dem Netzwerk verbunden sein. Der Raspberry Pi kann über die Konsole neugestartet werden.

sudo reboot

Schritt 7: Test

Nach dem Neustart über die Konsole wird getestet, ob alles funktioniert. Der Raspberry Pi muss dafür weiterhin per Ethernet verbunden sein.

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

Das Konsolenfenster sollte anschließend eine Menge an Informationen ausgeben. Das kann alles ignoriert werden. Schaut einfach, ob ein neues WLAN verfügbar ist. Wenn ja, Glückwunsch, es hat funktioniert.

RaspberryPi WLAN Access Point einrichten (Bild: Screenshot).
RaspberryPi WLAN Access Point einrichten (Bild: Screenshot).

Per strg + c kann die Aktion im Konsolenfenster abgebrochen werden.

Schritt 8: Hostapd in den Autostart setzen

Wenn alles funktioniert hat, wird hostapd im Autostart des Raspberry Pi verankert, ansonsten muss es jedes Mal manuell gestartet werden, was umständlich ist.

sudo nano /etc/default/hostapd

In der Datei folgende Zeile suchen:

RaspberryPi WLAN Access Point
RaspberryPi WLAN Access Point (Bild: Screenshot).

Diese sollte wie folgt angepasst werden. Die # muss entfernt und die Zeile anschließend wie folgt aussehen:

DAEMON_CONF=“/etc/hostapd/hostapd.conf“

Ein abschließender Neustart und zukünftig spannt der Raspberry Pi automatisch ein WLAN auf, sobald er gestartet wird.

sudo reboot

Fertig. Viel Spaß mit dem Raspberry Pi als Access Point!

Raspberry Pi 2 WLAN Access Point Geschwindigkeit

An dieser Stelle soll noch darauf hingewiesen werden, dass der Raspberry Pi 2 nicht der schnellste WLAN Access Point ist. Trotz aktualisierter Hardware und USB WLAN Adapter der 150 Mbit/s unterstützt, bietet der kleiner Computer nur unterdurchschnittliche Performance.

Getestet wurde bei einer 16.000 Leitung mit 1.000 kbit/s Upload. Der Laptop steht in Sichtweite auf vier Meter Entfernung zum WLAN Router.

Speedtest auf dem MacBook über das heimische WLAN (Bild: Screenshot Speedtest.net).
Speedtest auf dem MacBook über das heimische WLAN (Bild: Screenshot Speedtest.net).

Der Raspberry Pi 2 steht exakt neben dem Router. Beide Speedtests wurden sofort hintereinander durchgeführt. Dem Minicomputer fehlen hier ganze 10 Mbit/s beim Download. Das ist ein gewaltiger Abschlag.

Speedtest auf dem MacBook über das Raspberry Pi 2 WLAN (Bild: Screenshot Speedtest.net).
Speedtest auf dem MacBook über das Raspberry Pi 2 WLAN (Bild: Screenshot Speedtest.net).

Sollte jemand die Ursache kennen oder Tipps zur Steigerung des WLAN Performance auf dem Raspberry Pi haben, immer her damit.

Persönliche Meinung

Den Raspberry Pi als Access Point verwenden ermöglicht weitere spannende Möglichkeiten. Wie im Test zum Raspberry Pi 2 Model B geschrieben, sind die Hardwarekosten sehr niedrig, wodurch für kleines Geld ein individueller WLAN Repeater gebaut werden kann, der zudem deutlich mehr leistet als seine Pendants von der Stange.  So kann der Raspberry Pi als WLAN Repeater und als NAS Server gleichzeitig eingesetzt werden während man nebenher noch einen kleinen Webserver auf dem Mini-Computer laufen lässt. Das alles für unter 50 Euro wenn man denn will.

Die ganze Konfiguration des Raspberry Pi wurde über eine SSH Verbindung vorgenommen. Keine Tastatur, keine Maus kein Bildschirm waren notwendig um den Raspberry Pi als Access Point einzurichten. Wer der Schritt für Schritt Anleitung folgt, sollte das ebenfalls problemlos hinbekommen. Als nächsten Schritt wird versucht, das Internet ohne Ethernet durchleiten zu lassen. Dann kann der Raspberry Pi unabhängig von einem Netzwerkkabel platziert werden. Dafür wird jedoch ein zweiter WLAN USB Adapter benötigt.

Werbung

Wer keine Lust auf Basteln hat aber ein Raspberry Pi sein Eigen nennen möchte, solle sich den ionas-Server Home Testbericht durchlesen. Hier wurde ein Raspberry Pi, eine externe Festplatte und mit Open Source Software zu einem günstigen kleinen Server kombiniert. Die private Cloud für zu Hause und unterwegs. Keine Notwendigkeit mehr für Google Drive & Co.

12 Gedanken zu „Raspberry Pi als WLAN Access Point nutzen

  • Pingback: Testbericht: Raspberry Pi 2 Model B | random brick [DE]

  • Pingback: Raspberry Pi bekommt offizielles Gehäuse | random brick [DE]

  • Pingback: 30.000 Besucher auf RandomBrick.de | random brick [DE]

  • 12. Oktober 2015 um 12:43
    Permalink

    Tolle Anleitung,
    es ist die erste mit der ich (ansatzweise) einen AP aufm Rpi2 hinbekommen habe.
    Leider nur ansatzweise, da der Daemon nicht automatisch startet, lediglich wenn ich ihn im debug modus starte funktionert es.

    Aber trotzdem vielen Dank für die Mühe 🙂

    Antwort
    • 27. Februar 2016 um 20:31
      Permalink

      Ersetze bei DAEMON_CONF=“/etc/hostapd/hostapd.conf“ die Anführungszeichen, durch welche die Du manuell eingibst.

      Antwort
  • 19. November 2015 um 14:13
    Permalink

    Klasse Anleitung!
    Nun such ich genau danach:
    „Als nächsten Schritt wird versucht, das Internet ohne Ethernet durchleiten zu lassen. Dann kann der Raspberry Pi unabhängig von einem Netzwerkkabel platziert werden.“

    Gibt es dazu schon eine Lösung?

    Antwort
  • 24. Januar 2016 um 22:04
    Permalink

    Wlan Speed bekommt man erst wenn man in der hostapd-Konfiguration den Modus 80211n Aktiviert !

    In dieser Anleitung wird leider nur der Wlan Standart g genutzt und der ist tot langsam.

    Dazu im Terminal eingeben

    sudo nano /etc/hostapd/hostapd.conf

    und dort diese beiden Zeilen DAZU schreiben

    hw_mode=g
    ieee80211n=1

    Antwort
  • 27. Februar 2016 um 20:29
    Permalink

    Prima Anleitung, hat auf fast auf Anhieb funktioniert! Leider ist die Bridge Lösung nicht optimal, da ich dann nicht mehr remote auf den Raspi zugreifen kann.
    Bitte ändere die Zeile DAEMON_CONF=“/etc/hostapd/hostapd.conf“ das sie nicht kursiv ist. Wenn man sie mit Copy & Paste einsetzt, hat man falsche Anführungszeichen. Dann klappte der Autostart nicht mehr.

    Antwort
  • 22. Juni 2016 um 17:10
    Permalink

    Hallo,

    gutes Tutorial. Hat sofort geklappt. Was ich allerdings noch gern wüsste, ob es möglich ist hier möglich ist noch OpenVPN nachzuziehen oder ob es da mit irgendwas Probleme gibt. Vielleicht weiß ja auch jemand einen Link wo ich das hierzu passende finde.

    Im Netz gibt es einige andere gute Tutorial (welche ich noch nicht probiert hab) und die machen das dann doch im Detail vermutlich etwas anders. Meine Bedenke sind hat, dass das nicht immer zu der Installation hier paßt.

    Antwort
  • 10. August 2016 um 12:42
    Permalink

    Hallo!
    Ich habe es für meinen Raspberry pi3 nur fast hinbekommen.
    Ein WLAN Netz wird aufgebaut, aber wenn ich“ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state –state RELATED,ESTABLISHED -j ACCEPT“ eingebe bekomme ich die Fehlermeldung „Bad argument `RELATED,ESTABLISHED`.
    Kann mir da einer weiterhelfen?
    MfG Frank

    Antwort
  • Pingback: Raspberry Pi: Resilio Sync installieren und einrichten – random brick [DE]

Kommentar verfassen