Raspberry Pi Zero W als Reise-Router einrichten

Der Raspberry Pi Zero W ist der Nachfolger des beliebten Raspberry Pi Zero. Die Entwickler haben ihn zusätzlich On-Board WLAN und Bluetooth spendiert. Mit einem Mini HDMI- und zwei micro USB OTG Anschlüssen hat der Pi Zero alles für eine optimale Verbindung unter der Haube. Wir wollen in diesem Test feststellen, ob er als als Mini-Router nutzbar ist und damit ein effektiver Reisebegleiter sein kann.

Technische Daten

  • BCM 2835 SOC @ 1GHz
  • 512MB RAM
  • On-board Wireless LAN – 2.4 GHz 802.11 b/g/n (BCM43438)
  • On-board Bluetooth 4.1 + HS Low-energy (BLE) (BCM43438)
  • micro-SD Slot
  • mini-HDMI Typ C Anschluss
  • 1x micro-B USB für Daten
  • 1x micro-B USB für Stromversorgung
  • CSI Camera Connector (benötigt ein separat erhältliches Adapterkabel)
  • Unbestückter 40-Pin GPIO Connector
  • Kompatibel mit vorhanden pHAT/HAT Add-On Boards
  • Abmessungen: 65 x 30 x 5mm

Als Software kommt OpenWrt zum Einsatz, dass für alle Varianten des Raspberry zur Verfügung steht.

Wie funktioniert das?

Der Raspberry Pi Zero W verfügt über eine interne WLAN-Schnittstelle (wlan0). Hiermit wird die Verbindung zu einem Access-Point im Internet, z.B. in einem Hotel, Café oder Büro aufgebaut. Der externe USB-Dongle (wlan1) leitet die Verbindung an ein lokales Netzwerk weiter. Oder andersherum: Die Laptops im lokalen Netzwerk verbinden sich mit „Travel“ und erhalten dann einen Zugriff ins Internet über „Starbucks“.

Was wird für die Installation benötigt?

  • Raspberry Pi Zero W inklusive Netzteil (min. 2,1A)
  • Micro-SD Speicherkarte
  • USB-Kartenleser für Micro-SD-Speicherkarte
  • Mini HDMI zu HDMI Adapter
  • USB-OTG Adapter (Mini-USB-Stecker aud USB-Buchse Typ A)
  • Wifi-USB-Adapter (Linux kompatibel)
  • Tastatur
  • Monitor

Leider ist die interne WLAN-Schnittstelle (wlan0) auf dem Raspberry Pi Zero W nach der Übertragung des OpenWrt-Image nicht automatisch aktiviert. Wir müssen daher die Komponenten (wie Monitor und Tastatur) anschließen, um diese Einstellungen vornehmen zu können. Später können wir den Mini-Router ohne Peripherie betreiben. Der Raspberry Pi Zero W ist mit einem optionalen „USB-A Addon Board“ versehen. So kann er später an jedem USB-Netzteil, direkt an einer USB-A Buchse betrieben werden. Als Wifi-Adapter habe wir uns für einen Dongle entschieden, der mit dem Chipsatz RT5370 ausgestattet ist.

Wir richten unseren Reise-Route in sieben Schritten ein:

Schritt 1: OpenWrt-Image herunterladen
Schritt 2: WLAN auf Raspberry Pi Zero W aktivieren und Konfiguration anpassen
Schritt 3: Netzwerkkonfiguration auf Konsole anpassen
Schritt 4: Firewallregeln auf der Konsole anpassen
Schritt 5: Verbindung zum Internet herstellen
Schritt 6: Updates und zusätzliche Treiber installieren
Schritt 7: USB-Dongle einrichten
Schritt 8: MAC-Adresse ändern
Fazit

Schritt 1: OpenWrt-Image herunterladen und auf Speicherkarte installieren

Laden Sie das aktuelle Image für den Raspberry Pi Zero W von den Webseite herunter. Achten Sie darauf, dass Sie die richtige Datei für Ihr Modell auswählen. Zu diesem Zeitpunkt ist das folgende:

http://downloads.openwrt.org/releases/21.02.1/targets/bcm27xx/bcm2708/openwrt-21.02.1-bcm27xx-bcm2708-rpi-ext4-factory.img.gz

Nutzer eines Mac empfehlen wir, den Raspberry Pi Imager zu nutzen, der auch für die anderen Betriebsysteme zur Verfügung steht.

Alternativ, z.B für Windows Nutzer, können Sie den BalenaEtcher verwenden, der ebenfalls intuitiv bedienbar ist.

Das Überspielen des Images ist selbsterklärend. Auf der einen Seite wählen sie die Datei aus, die Sie auf die MicoSD-Karte übertragen wollen und danach wählen Sie die Karte selbst aus.

Schritt 2: WLAN auf Raspberry Pi Zero W aktivieren und Konfiguration anpassen

Schließen Sie nun Tastatur und Monitor an den Raspberry Pi Zero W an. Das Netzteil muss an die erste USB-Schnittstelle (gleich neben dem USB-A Stecker) angeschlossen werden. Bleibt noch der zweite Anschluss für die Tastatur (weißer Adapter) und der HDMI-Anschluss für den Monitor.

Der Bootvorgang dauert nur wenige Sekunden. Melden Sie sich als Benutzer root ein. Ein Passwort ist zur Zeit nicht vergeben. Nutzer einer deutschen Tastatur müssen aufpassen. Im OpenWrt ist standardmäßig nur die englische Tastatur aktiv, was problematisch bei der Vergabe eines Passwortes werden kann. Geben Sie folgende Befehle ein, um ein Passwort einzurichten und in den Ordner für die Konfigurationsdateien zu wechseln. Hier finden Sie Hilfe, um mit dem US-Zeichensatz auf einer deutschen Tastatur zurechtzukommen.

passwd 
cd /etc/config

Die OpenWrt-Entwickler setzen standmäßig auf Vi als Editor. Die wichtigsten Befehle finden Sie hier. Diesen müssen wir nun nutzen, um die Konfiguration anzupassen. Wir nehmen die erste Änderung in der Datei wireless vor. Hier ist im wifi-device die Option „disabled“, von „1“ auf „0“ zu setzen.

Nachdem Sie die Datei gespeichert haben, machen Sie die Änderung im System mit folgendem Befehl bekannt.

uci commit wireless
wifi

In Ihrer WLAN-Umgebung sollte nun ein neuer Access-Point mit der SSID „OpenWrt“ zu finden sein. Melden Sie sich dort an. Ein Passwort wird nicht benötigt. Im Moment wird keine Verbindung ins Internet gefunden. Wir benötigen diese „unsichere“ Verbindung nur, um noch weitere Dateien zu ändern. Alternativ können Sie die Konfiguration auch weiterhin über die extern angeschlossene Tastatur vornehmen. Um das Problem mit der Tastatur zu umgehen, empfehlen wir aber, eine Verbindung mittels ssh zum Raspberry Pi Zero W herzustellen.

ssh root@192.168.1.1

Auf einem Windows System kann man auch Putty nutzen. Wenn Sie ihr Passwort noch nicht vergeben haben, können Sie es jetzt tun.

Die Datei /etc/config/wireless hat folgenden Inhalt:

Alternativ können Sie nun die Konfiguration auch über das Webinterface vornehmen. Nutzen Sie dazu die folgende URL und verwenden Sie für das Login root und das von Ihnen festgelegte Passwort:

http://192.168.1.1

Schritt 3: Netzwerkkonfiguration auf Konsole anpassen

Wir bevorzugen die notwendigen Änderungen über die ssh-Verbindung vorzunehmen und ändern nun die Datei network im Verzeichnis /etc/config wie folgt ab:

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd60:4740:068d::/48'

config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'wlan0'

config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.180.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wwan'
        option proto 'dhcp'
        option peerdns '0'
        option dns '1.1.1.1 8.8.8.8'

Änderungen sind rot markiert.

Wie haben hier die IP-Adresse im LAN-Interface auf 192.168.180.1 geändert. Über diese Adresse können Sie später über die URL auf das Webinterface bzw. per ssh auf die Konsole zugreifen.

Weiterhin wurde das neue Interface „wwan“ mit den dazugehörigen Optionen angelegt. Setzen Sie in der letzten Zeile die IP-Adressen ihrer bevorzugten DNS-Server ein.

Achtung: Sie müssen jetzt die Verbindung im Webinterface und per ssh nach einen Neustart mit der neuen IP-Adresse herstellen.

Schritt 4: Firewallregeln auf der Konsole anpassen

Passen Sie dazu die Datei firewall im Verzeichnis /etc/config/ wie folgt an:

config defaults
	option syn_flood '1'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'REJECT'

config zone
	option name 'lan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'
	list network 'lan'

config zone
	option name 'wan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'
	list network 'wan'
	list network 'wan6'
	list network 'wwan'

config forwarding
	option src 'lan'
	option dest 'wan'

config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'Allow-Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-DHCPv6'
	option src 'wan'
	option proto 'udp'
	option src_ip 'fc00::/6'
	option dest_ip 'fc00::/6'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-MLD'
	option src 'wan'
	option proto 'icmp'
	option src_ip 'fe80::/10'
	list icmp_type '130/0'
	list icmp_type '131/0'
	list icmp_type '132/0'
	list icmp_type '143/0'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Input'
	option src 'wan'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Forward'
	option src 'wan'
	option dest '*'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-IPSec-ESP'
	option src 'wan'
	option dest 'lan'
	option proto 'esp'
	option target 'ACCEPT'

config rule
	option name 'Allow-ISAKMP'
	option src 'wan'
	option dest 'lan'
	option dest_port '500'
	option proto 'udp'
	option target 'ACCEPT'

config rule
	option name 'Support-UDP-Traceroute'
	option src 'wan'
	option dest_port '33434:33689'
	option proto 'udp'
	option family 'ipv4'
	option target 'REJECT'
	option enabled 'false'

config include
	option path '/etc/firewall.user'

Hier ist nur der Eintrag von „REJECT“ auf „ACCEPT“ zu ändern.

Wenn Sie die Einstellungen vorgenommen haben, starten Sie den Raspberry Pi Zero W neu.

reboot

Schritt 5: Verbindung zum Internet herstellen

Um weitere Pakete und Treiber auf dem Raspberry Pi Zero W zu installieren, benötigen wir Zugriff auf das Internet. Nutzen Sie dazu einen Access-Point in ihrer Nähe. Halten Sie die SSID und das dazugehörige Passwort bereit.

Loggen Sie sich nun in das Webinterface ein. Wenn Sie die oben beschriebene Konfiguration übernommen haben, dann sollten Sie im Browser folgendes eingeben:

http://192.168.180.1

Klicken Sie nun auf Network – Wireless. Das Interface radio0 bezeichnet die interne WLAN-Karte des Raspberry Pi. Klicken Sie hier auf Scan, um Access-Points in Ihrer Nähe zu finden.

Klicken Sie hier auf „Join Network“, um sich mit Ihrem Access-Point zu verbinden.

Setzen Sie nun den Haken bei „Replace wireless configuration“ und tragen Sie das Passwort bei „WPA passphrase ein“. Klicken Sie danach auf „Submit“.

Sie sollten außerdem prüfen, ob unter „Interface Configuration – Wireless Security“ die Einstellungen für „Encryption richtig gestzt sind. Wird haben Sie auf WPA2/WPA3 geändert.

Klicken Sie zum Abschluss auf Save&Apply und starten danach den Raspberry Pi neu.

Nach dem Neustart sollte sich die Konfiguration des Router verändert haben. Das WLAN mit der SSID OpenWrt existiert nicht mehr. Wie Sie in der Datei /etc/config/wireless sehen können, wurde hier die SSID und das Passwort des Access-Point eingetragen, der den Zugriff ins Internet sicherstellt.

Alternativ zu der oben genannten Methode können Sie die relevanten Daten auch gleich in diese Datei eintragen und brauchen nicht über das Webinterface zu gehen.

Um weiterhin auf das Webinterface und per ssh auf den Raspberry PI Zero W zugreifen zu können, müssen Sie nun eine neue IP-Adresse verwenden. Diese finden sie in der Netzwerkübersicht Ihres Routers oder Access-Points. Wer eine FritzBox verwendet, findet den Eintrag unter Heimnetzwerk – Netzwerk. Nutzen Sie die hier angezeigte IP-Adresse (in unseren Fall 192.168.171.123), um auf das Webinterface zuzugreifen.

Rufen Sie das Webinterface mit der neuen IP-Adresse auf. Unter Status sollte als „Associated Station“ die SSID des Access-Points eingetragen sein, der die Internetverbindung zur Verfügung stellt. Das ist in unserem Fall Medusa.

Schritt 6: Updates und zusätzliche Treiber installieren

Stellen Sie nun eine ssh-Verbindung zu Raspberry Pi Zero W her …

ssh root@192.168.171.123

… und installieren sie die Updates:

opkg update

Da wir im Anschluss den USB-Dongle für die zweite Netzwerkverbindung einrichten wollen, benötigen wir dazu die notwendigen Treiber. Außerdem wird weitere Software installiert, die zusätzliche Funktionen (z.B. für eine VPN-Verbindung) ermöglichen.

opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb usbutils openvpn-openssl luci-app-openvpn nano kmod-usb2 

Schritt 7: USB-Dongle einrichten

Schließen sie nun den USB-Dongle an die USB-Schnittstelle des Rasperry Pi Zero W an. Sie benötigen dazu einen zusätzlichen Adapter von Mini-USB auf USB-A.

Stellen Sie nun wieder eine ssh-Verbindung zu Raspberry Pi Zero W her …

ssh root@192.168.171.123

… und öffnen Sie die Datei /etc/config/wireless

Wenn der Wifi-Dongle automatisch erkannt wurde, dann wurden hier bereits einige Einstellungen für radio1 vorgenommen, die Sie nun anpassen müssen. Nehmen Sie die Änderungen (rot markiert) für Ihre Umgebung vor. Wählen Sie sichere Passwörter!

config wifi-device 'radio0'
        option type 'mac80211'
        option channel '11'
        option hwmode '11g'
        option path 'platform/soc/20300000.mmcnr/mmc_host/mmc1/mmc1:0001/mmc1:0001:1'
        option htmode 'HT20'
        option disabled '0'
        option cell_density '0'

config wifi-iface 'wifinet1'
        option device 'radio0'
        option mode 'sta'
        option network 'wwan'
        option ssid 'Medusa'
        option key 'Geheim'
        option encryption 'sae-mixed'

config wifi-device 'radio1'
        option type 'mac80211'
        option channel '11'
        option hwmode '11g'
        option path 'platform/soc/20980000.usb/usb1/1-1/1-1:1.0'
        option htmode 'HT20'
        option disabled '0'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'Travel'
        option encryption 'psk2'
        option key 'Travel0815'

Nach einem Neustart sollte nun der Reise-Router betriebsbereit sein. Sie werden Ihn unter der SSID „Travel“ finden. Verwenden Sie das Passwort „Travel0815“, um sich im WLAN anzumelden.

Das Webinterface und die Verbindung per ssh können sie nun wieder über die LAN-IP-Adresse (in unserem Beispiel 192.168.180.1) aufrufen. Unter Status und „Associated Stations“ können Sie sehen, welche Clients sich mit ihrem Reise-Router verbunden haben.

Schritt 8: MAC-Adresse ändern

In Hotels oder Restaurants ist es durchaus üblich, dass die Betreiber den Zugriff auf ihr WLAN begrenzen. Oftmals sind dann nur ein bis zwei Geräte des Gastes zugelassen. Stimmt die MAC-Adresse des genutzten Gerätes nicht mit den hinterlegten überein, wird der Zugriff geblockt.

Wir müssen daher sicherstellen, dass unser Reise-Router eine der hinterlegten MAC-Adressen übernimmt und dauerhaft für den Aufenthalt zur Verfügung stellt. Da die Verbindung zum WLAN des Hotels durch die interne WLAN-Schnittstelle des Raspberry Pi Zero W (also wlan0) hergestellt wird, müssen wir diese anpassen und dauerhaft speichern.

Hier bietet sich an, die Konfiguration im Webinterface anzupassen und je nach Bedarf zu ändern. Rufen Sie dazu das Webinterface auf und tragen unter System – Startup – Local Startup folgende Zeilen ein:

sleep 5
ifconfig wlan0 down
sleep 5
ifconfig wlan0 hw ether 12:22:33:44:55:77
sleep 5
ifconfig wlan0 up
exit 0

Passen Sie nun die hier eingetragene MAC-Adresse (rot markiert) ihren Erfordernissen an. Nach einem Neustart werden die Einstellungen übernommen. Die von Ihnen vorgenommenen Änderungen werden in der Übersicht unter Network – Interfaces – WWAN dargestellt.

Wer ein Steckernetzteil mit integriertem USB nutzen möchte, der sollte eines verwenden, dass mindesten 10 W Leistung und über einen Output von 5V und 3A verfügt. Dieses Netzteil hat unseren Ansprüchen genügt.

In einem zweiten Teil dieses Tutorials zeigen wir, wie Sie eine VPN-Verbindung im Reise-Router integrieren können.

Fazit

Der Rasperry Pi Zero W ist hardwareseitig kein „Wunderkind“. Die Komponenten reichen aber aus, um einen kleinen Router zu konfigurieren, der in jede Hosentasche passt. Wer etwas leistungsstärkere Hardware verwenden möchte, der kann die gleiche Konfiguration auf einem Raspberry Pi 3 oder 4 nutzen. Beim einfachen Surfen im Internet, für drei bis vier Clients, macht der kleine Bruder aber durchaus eine gute Figur.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.