Raspberry Pi als WLAN-Bridge einrichten

ELektronik-KOmpendium.de
Online

Preis auf Anfrage
Vergleichen Sie diesen Kurs mit ähnlichen Kursen
Mehr ansehen

Wichtige informationen

  • Kurs
  • Online
Beschreibung

Raspberry Pi als WLAN-Bridge einrichten (WLAN-Access-Point) Mit Raspbian Jessie geprüft. Typischerweise sind WLAN-Router für den Internet-Zugang gleichzeitig auch WLAN-Access-Points. In solchen Fällen verfügt der Access-Point über einen DHCP- und DNS-Server. Man konfiguriert also ein eigenes IP-Netzwerk. Wenn man aber schon einen DHCP- und DNS-Server im lokalen Netzwerk hat, macht der Betrieb eines zusätzlichen WLAN-Routers nicht so viel Sinn. Vor allem, weil sich durch das Kaskadieren von Routern unnötigerweise Schwierigkeiten ergeben. Meistens äußert sich das mit Verbindungsproblemen. In der Regel reicht es aus, den Raspberry Pi als Netzwerk-Brücke zu betreiben, der die Datenpakete und Verbindungen zwischen WLAN und LAN vermittelt.
Eine Netzwerk-Brücke, im Englischen Bridge, verbindet zwei Netzwerk-Segmente. Die verbundenen Rechner liegen alle im selben logischen IP-Netzwerk und erhalten ihre IP-Konfiguration aus dem selben Adressbereich. Der Betrieb des Raspberry Pi als Netzwerk-Brücke setzt natürlich voraus, dass sich in dem lokalen Netzwerk bereits ein DHCP-Server, ein DNS-Server und ein Standard-Gateway befinden.

Wichtige informationen

Themenkreis

Aufgabe
  1. Prüfen, ob der WLAN-Adapter einen Access-Point-Modus hat.
  2. Den WLAN-Adapter als WLAN-Zugangspunkt einrichten.
  3. Den Ethernet-Port als Übergang ins leitungsgebundene Netz einrichten.
Voraussetzungen

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
Lösung: Software installieren

Wenn der Raspberry Pi und der WLAN-Adapter alle Voraussetzungen erfüllen, dann können wir loslegen. Wir beginnen mit der Installation der notwendigen Software. Davor führen wir noch ein Upgrade durch.

sudo apt-get update sudo apt-get upgrade

Dann brauchen wir zwei Dinge: Einmal einen Access-Point-Daemon und eine Software für die Netzwerk-Brücke. Der Host Access Point Daemon (HostAPD), kurz "hostapd", ist ein WLAN-Authenticator. Er kümmert sich darum, WLAN-Funktionen verschlüsselt anzubieten und die dazu notwendige Authentifizierung der WLAN-Clients vorzunehmen. Beispielsweise per WPA2-PSK.
"bridge-utils" enthält Bibliotheken und Kommandos, um Netzwerk-Brücken einzurichten.

sudo apt-get install hostapd bridge-utils Lösung: WLAN-Host einrichten (hostapd)

Nach der Installation geht es ans Einrichten von "hostapd". Das ist die Software, die das WLAN erzeugt.

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.

# Bridge-Betrieb bridge=br0 # Schnittstelle und Treiber interface=wlan0 #driver=nl80211 # WLAN-Konfiguration ssid=WLANbridge 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 die eingerichtete WLAN-Bridge 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: Netzwerk-Brücke konfigurieren und in Betrieb nehmen

Jetzt müssen wir noch die Brücke und die Netzwerk-Interfaces konfigurieren.

sudo nano /etc/network/interfaces

Dazu nehmen wir folgende Minimal-Konfiguration in der Konfigurationsdatei für die Netzwerk-Einstellungen vor.

# Localhost auto lo iface lo inet loopback # Ethernet auto eth0 allow-hotplug eth0 iface eth0 inet manual # WLAN auto wlan0 allow-hotplug wlan0 iface wlan0 inet manual wireless-power off # Netzwerkbrücke auto br0 iface br0 inet manual bridge_ports eth0 wlan0 # build bridge bridge_fd 0 # no forwarding delay bridge_stp off # disable Spanning Tree Protocol

Anschließend speichern und schließen mit 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 die WLAN-Bridge den Vorteil, dass sie 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)

Damit alle Änderungen übernommen werden, empfiehlt sich jetzt ein Neustart.

sudo reboot

Wenn der Neustart erfolgreich war, kann man den WLAN-Host in Betrieb nehmen.

Lösung: hostapd (WLAN-Host) in Betrieb nehmen

Zuerst starten wir den "hostapd" im Debug-Modus. Dabei werden uns "alle" Fehlermeldungen angezeigt.

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

"hostapd" wird in jedem Fall Meldungen produzieren, wobei es sich dabei nicht um Fehlermeldungen handeln muss. Der "hostapd" ist in diesem Fall nur sehr auskunftsfreudig. 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.

Wenn der "hostapd" 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 Aufruf des Kommandos.
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.

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 die WLAN-Bridge 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 beendet.

Hinweis: Wenn man die Konfiguration per SSH vornimmt, dann sollte man das Prüfen der WLAN-Bridge 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 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.

Nach einem Neustart wird "hostapd" automatisch mit der angelegten Konfiguration gestartet. Die WLAN-Bridge sollte dann als WLAN-Access-Point zur Verfügung stehen.

sudo reboot Lösung: Wenn man die Konfiguration geändert hat

Wenn man die hostapd-Konfiguration während dem laufenden Betrieb ändert, dann sollte man danach einen Restart des Daemons vornehmen.

sudo service hostapd restart

Alternativ kann man ihn auch stoppen und wieder starten.

sudo service hostapd stop sudo service hostapd start

Wenn der automatische Start im Hintergrund beim Booten nicht gewünscht ist, kann man das auch abstellen:

sudo update-rc.d hostapd disable

Den automatischen Start im Hintergrund beim Booten einschalten:

sudo update-rc.d hostapd enable Problem: Add randomness

Die "Add randomness"-Meldungen haben damit zu tun, dass der Entropie-Pool des Systems zu klein ist. Entropie ist das Material, dass für Zufall zur Verfügung steht. Das wird gebraucht, damit "hostapd" kryptografische Funktionen beim WLAN-Schlüsselaustausch ausführen kann.
Normalerweise erzeugt ein guter und schneller Zufallsgenerator Zahlen aus nicht vorhersagbaren Daten. Wenn zu wenig Zufall vorhanden ist, die Entropie also gering ist, müssen bestimmte Prozesse warten, bis genug Zufall zur Verfügung steht. Es kommt also zu einer insgesamt schlechteren Performance, weil Prozesse länger zum Starten benötigen.
Das Problem ist, dass nicht genug Zufall in Embedded Devices, wie dem Raspberry Pi, zur Verfügung steht. Solche Geräte sind für kryptografische Anwendungen also eher nicht so gut geeignet. Gefordert werden aber Zufallswerte von hoher Qualität.

  • Mehr Informationen über Zufallszahlengeneratoren

Eine Lösung für dieses Problem verspricht Havege (Hardware Volatile Entropy Gathering and Expansion). Das ist ein Algorithmus, der aus der normalen Nutzung der CPU Zufall generiert. Geschickterweise gibt es Havege als unauffällig arbeitenden Daemon.

Die Notwendigkeit von Havege sollte man aber erst einmal prüfen:

cat /proc/sys/kernel/random/entropy_avail

Dieser Befehl zeigt, über wie viel Zufall das System verfügt. Wenn die angezeigte Zahl kleiner als Tausend (1000) ist, dann ist nicht genug Zufall für kryptografische Anwendungen vorhanden. Das bedeutet in der Regel, dass diese Anwendungen langsamer arbeiten, als sie es eigentlich tun würden. Darunter leidet dann natürlich die Gesamtperformance des Systems.

Man kann das ignorieren. Besser ist es, man kümmert sich darum. Dazu installieren wir den Havege-Daemon.

sudo apt-get install haveged

Der Havege-Daemon wird automatisch gestartet. Auch beim Booten. Man sollte das testen und einen Reboot vornehmen.

sudo reboot

Nach dem Neustart prüft man noch einmal den Zufall.

cat /proc/sys/kernel/random/entropy_avail

Der Wert sollte im Optimalfall über Tausend (1000) liegen. Wenn nicht, dann bedeutet das nicht, dass Havege-Daemon nicht funktioniert. Auch er ist darauf angewiesen, dass die CPU belastet wird, um genug Entropie zu produzieren.

Hinweise zum Raspberry Pi als WLAN-Bridge

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
Erweiterung: Die WLAN-Bridge als Man-in-the-Middle fürs Netzwerk-Monitoring verwenden

Mit dieser WLAN-Bridge lässt sich hervorragend Netzwerk-Verkehr aufzeichnen. Beispielsweise fürs Netzwerk-Monitoring oder auch für Man-in-the-Middle-Angriffe.
Ein Man-in-the-Middle ist eine Netzwerk-Einrichtung, die in der Lage ist Netzwerkverkehr abzuhören, aufzuzeichnen und zu manipulieren. Damit das gelingt, muss sich das entsprechende Gerät in einer Netzwerk-Verbindung zwischen zwei Endpunkten befinden. Genau das ist mit der WLAN-Bridge der Fall.

  • Netzwerk-Monitoring bzw. Man-in-the-Middle auf dem Raspberry Pi einrichten
Weitere verwandte Themen:
  • Raspberry Pi als WLAN-Access-Point einrichten
  • Raspberry Pi als WLAN-Router 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.


Vergleichen Sie diesen Kurs mit ähnlichen Kursen
Mehr ansehen