Aus Raspberry Pi Geek 06/2015

Der Raspberry Pi als 3G-Hotspot (Seite 3)

Sobald die WAN-Verbindung über den UMTS-Stick steht, geben Sie den Befehl sudo vnstat -u -i ppp0 ein. Ab jetzt protokolliert der Vnstat-Dienst den Datenverbrauch der UMTS-Schnittstelle, mit vnstat -i ppp0 geben Sie die aktuelle Statistik aus – es dauert jedoch eine Weile, bis sich diese füllt. Damit Sie zur Kontrolle des noch vorhandenen Datenvolumens nicht immer ein Terminalfenster öffnen müssen, richten wir gegen Ende des Artikels noch ein Webfrontend für Vnstat ein. Verlassen Sie sich jedoch nicht allein auf die von Vnstat ermittelten Daten: Zum einen aktualisiert der Daemon seine Datenbank nur in (konfigurierbaren) Abständen. Zum anderen wirkt sich der “Schlupf” durch die fehlende Echtzeituhr auf dem RasPi aus. Der Mini-PC aktualisiert seine Systemzeit erst mit Zustandekommen einer Netzwerkverbindung. In der Regel stimmt daher die Zuordnung des Verbrauchs zu einzelnen Tagen am Anfang einer Verbindung nicht.

Router

Der RasPi soll als Router und Firewall dienen, also Datenpakete weiter ins Internet schicken und gleichzeitig das interne Netz vor Angriffen von außen schützen. Das erfordert noch ein paar weitere Handgriffe: Fügen Sie erst einmal der Konfigurationsdatei /etc/sysctl.conf die Zeile net.ipv4.ip_forward=1 hinzu. Diese Option sorgt für das Weiterleiten von Netzwerkpaketen auf Kernel-Ebene und wird nach einem Neustart aktiv.

Auf der Seite der Firewall müssen Sie einmalig die Befehle aus Listing 6 ausführen. Die letzte Zeile sichert die Konfiguration in der Datei /etc/iptables.3ghotspot. Das System lädt diese beim Einrichten der Netzwerkschnittstelle entsprechend Listing 4, Zeile 8 automatisch. Mit Seiten wie dem Heise-Netzwerkcheck [4] prüfen Sie, ob das RasPi-System wirklich keine Ports nach außen öffnet – so gehen Sie sicher, dass das System möglichst wenig Angriffsfläche bietet. Weitergehende Informationen zum Thema gibt es zum Beispiel im Debian-Firewall-Wiki [5].

Listing 6

 

$ sudo iptables -A FORWARD -i ppp0 -o br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i br0 -o ppp0 -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
$ sudo iptables-save > /etc/iptables.3ghotspot

Intern

Nachdem die Verbindung nach außen nun steht, kommt das interne Netz an die Reihe. Der RasPi spannt als Access Point und Router ein eigenes Netz auf. Wie eingangs beschrieben, schalten wir WLAN und Ethernet zu einer Bridge zusammen. Das erledigen die Zeilen 10 bis 17 aus Listing 4 – hier vergeben Sie auch die IP-Adresse des Routers und des privaten Netzwerks (im Beispiel 192.168.100.0/24). Mehr gibt es nicht zu tun – das Paket bridge-utils steht in Listing 1 nur zur Dokumentation, unter Raspbian ist es im Gegensatz zu Bananian für den Banana Pi [6] (sollten Sie die etwas leistungsfähigeren RasPi-Alternativen bevorzugen) schon installiert.

Für das Aufspannen eines WLAN-Access-Points benötigt das System die Access-Point-Software aus dem Paket hostapd. Hier lauert eine Hürde in der Hardware, denn nicht jeder WLAN-Chip unterstützt den Access-Point-Modus: Bevor Sie einen USB-WLAN-Dongle anschaffen, sollten Sie daher mit einer kurzen Internetrecherche prüfen, ob das gewünschte Exemplar die Funktionen unterstützt. Manche Chipsätze bieten zudem zwar den AP-Modus an, aber er funktioniert nicht mit dem Standard-Hostapd von Raspbian. Im Zweifelsfall hilft simples Ausprobieren mittels sudo iw list: Erscheint hier eine Fehlermeldung wie nl802ll not found, dann unterstützt der aktuelle Hostapd den Chip nicht. Wie Sie WLAN-Chips auf Basis des Realtek RTL8192 zum Laufen bringen, beschreibt der Kasten “WLAN-AP mit Realtek-Chip RTL8192”.

WLAN-AP mit Realtek-Chip RTL8192

Der Realtek-Chip RTL8192 und seine Varianten kommen in vielen kostengünstigen WLAN-Sticks vor, so zum Beispiel auch in dem bei RasPi-Nutzern zu Recht beliebten Stick Edimax EW-7811UN. Er baut sehr kompakt, kostet wenig und bietet doch guten Empfang. Den Access-Point-Modus beherrscht der Chip, allerdings arbeitet er nicht mit der aktuellen Version des von Raspbian ausgelieferten Hostapd zusammen.

Der Workaround gestaltet sich unkompliziert, denn Realtek stellt die Quellen für Treiber und Hostapd bereit [14]. Ein Beitrag im Forum des Banana-Pi-Herstellers LeMaker [15] beschreibt im Detail die notwendigen Schritte für den Selbstbau der beiden Programme hostapd und hostapd_cli. Damit der Hostapd-Daemon beim Start das alternative Binary auch findet, müssen Sie den Pfad zur Datei in der Startdatei /etc/init.d/hostapd anpassen. Zudem verweisen Sie in der Konfigurationsdatei statt auf den generischen Treiber nl80211 auf den manuell installierten Treiber rtl871xdrv (Listing 7, Zeile 6).

Die Konfiguration des Hostapd erfolgt in einer eigenen Datei, deren Pfad und Namen Sie frei wählen dürfen, etwa /etc/hostapd.conf. Den Inhalt übernehmen Sie aus Listing 7. Damit der Dienst die Konfigurationsdatei findet, tragen Sie diese in der /etc/default/hostapd ein (Variable DAEMON_CONF). Den Kanal in Zeile 7 wählen Sie am besten nach lokalen Gegebenheiten aus – eine Wi-Fi-Scanner-App wie etwa Jaws [7] leistet hier gute Dienste. Optional schalten Sie in Zeile 11 mit ieee80211n=1 den 80211n-Modus ein und erhöhen in Kombination mit geeigneten Geräten die maximal möglichen Transferraten – ab und an führt dies jedoch zu instabileren Verbindungen. Das zum Aufbau der Verbindung nötige WLAN-Passwort steht in Zeile 16. Bei den Verschlüsselungsmethoden in den Zeilen 18 und*19 lauern weitere Fallstricke, insbesondere mit einfacheren Geräten wie WLAN-Druckern. Bei Problemen hilft ein Blick in die Dokumentation und eine Suche im Internet.

Ob alles klappt, zeigt ein Neustart des Hostapd mit sudo service hostapd restart und ein Blick auf die Liste der in der Nähe aktiven WLANs. Prüfen Sie dies zum Beispiel mit Ihrem Smartphone. Damit aber tatsächlich eine Verbindung zustande kommt, benötigen Sie noch einen DHCP- und DNS-Server. Beides erledigt der Dienst Dnsmasq, den Sie eingangs schon installiert haben.

Listing 7

 

ssid=rpi-hotspot
ctrl_interface=/var/run/hostapd
interface=wlan0
bridge=br0
driver=nl80211
channel=11
beacon_int=100
hw_mode=g
ieee80211n=0
wmm_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40-]
wpa=2
wpa_passphrase=Bitte+unbedingt-ändern!
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP TKIP
max_num_sta=8
wpa_group_rekey=86400
ignore_broadcast_ssid=0

IP-Adressen

Passend zur Netzwerkkonfiguration des Router-RasPi gilt es, ein paar Zeilen in der Konfigurationsdatei des Dienstes /etc/dnsmasq.conf zu ergänzen (Listing 8). Zeile 1 interface sorgt dafür, dass der Dienst IP-Adressen nur an Geräte im lokalen Netz vergibt. Durch expand-hosts in Zeile 2 löst Dnsmasq auch Namen aus der eigenen /etc/hosts auf – sehr praktisch, wenn Geräte im lokalen Netz aufeinander zugreifen müssen. Diesen sollten Sie allerdings dann statische IP-Adressen zuweisen.

Listing 8

 

interface=br0
expand-hosts
domain=pihotspot.local
dhcp-range=192.168.100.100,192.168.100.150,12h

Die dhcp-range definiert den Adressbereich, aus dem der DHCP-Server IP-Adressen vergibt. Im Beispiel verwendet er dazu IPs zwischen 192.168.100.100 und 192.168.100.150, wobei die Zuordnung über 12 Stunden erhalten bleibt. IPs unterhalb von 192.168.100.100 eignen sich daher für Rechner, denen Sie statische IPs zuweisen möchten. Als letzte Nacharbeit schalten Sie mit dem Aufruf von sudo update-rc.d -f dhcpcd remove den bei Raspbian von Haus aus aktiven DHCP-Client ab.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 8 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben