Der Raspberry Pi als OpenVPN-Server
Inhaltsverzeichnis
Vorbereitung – Benötigte Hardware
Bei der Vielzahl an Raspberry Pi-Modellen stellt sich die Frage, welche Ausführung einen guten Job als OpenVPN-Server machen wird. Auch wenn ich im Sinne der Einfachheit gerne ein spezifisches Gerät genannt hätte, folgt stattdessen eine allgemeine Antwort: Es kommt darauf an. Aber worauf denn?
- Wie viele Menschen werden den OpenVPN-Server im selben Moment für welche Zwecke nutzen wollen?
- Wird dein Dienst für schlichte alltägliche Aufgaben, wie das Browsen im Web verwendet oder werden hochauflösende Inhalte gestreamt?
Die „gute“ Nachricht: In der Regel wird mitnichten die Leistung des Einplatinencomputers, sondern seine oder die Internetanbindung der Clients der Flaschenhals sein.
Die absolute Untergrenze für das Vorhaben ist der Raspberry Pi 3 Model B+. Im Sinne der Zukunftssicherheit und weiteren Services, die ich über das Gerät betreiben wollte, griff ich zum Raspberry Pi Model 4 mit 4GB RAM und echtem Gigabit-Anschluss. Die folgende Schritt-für-Schritt-Anleitung wurde mit folgender Hardware auf ihre Funktionsfähigkeit getestet.
- Raspberry Pi Model 4 4GB RAM (https://www.rasppishop.de/Raspberry-Pi-4-Modell-B- 4GB-SDRAM)
- Offizielles USB-C-Netzteil (https://www.rasppishop.de/Raspberry-Pi-15W-USB-C- Netzteil-Schwarz-EU)
- Gehäuse mit aktiver Kühlung, weil dem verwendeten Modell nachgesagt wird, dass das Gerät unüblich warm wird (https://www.rasppishop.de/Pi4-Gehaeuse-farbig-mit- Luefter)
- Rudimentäre Hardware-Komponenten, wie eine microSD-Karte für das Betriebssystem und mindestens Cat5e-Patchkabel zum Anschluss via LAN an das heimische Netzwerk.
Vorbereitung – Benötigte Software
- Lade das offizielle Betriebssystem für den Einplatinencomputer namens Raspberry Pi OS Lite (ehemals Raspbian) von der Website der Stiftung herunter: https://www.raspberrypi.org/ software/operating-systems/#raspberry-pi-os-32-bit
- Downloade das ebenfalls kostenlose Software-Tool balenaEtcher unter https://www.balena.io/etcher/ für dein Betriebssystem.
- Sämtliche Befehle, die der Raspberry Pi ausführen soll, werden per Fernzugriff (SSH) über den gewöhnlichen Heimcomputer erteilt. Für macOS eignet sich das vorinstallierte Terminal. Für Windows empfiehlt sich die Software PuTTY, die unter https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html zu finden ist.
- Die OpenVPN-Konfigurationsdateien für die Clients werden auf dem Raspberry Pi ablegt. Um diese auf einen anderen Rechner herunterzuladen, braucht es das (S)FTP- Tool FileZilla; Download unter https://filezilla-project.org/.
Schritt 1: Raspberry Pi OS installieren
- Entpacke das Zip-Archiv, welches das Betriebssystem beinhaltet. Das Archiv ist nach folgendem Schema benannt: YYYY-MM-DD-raspios-buster-armhf-lite.zip.
- Stecke jetzt das microSD-Speichermedium in deinen Computer ein.
- Starte den balenaEtcher mit einem Doppelklick auf die entsprechende .exe-Datei.
- Im ersten Schritt verlangt das Programm ein Image (hier: Software-Abbild), welches es auf das Speichermedium schreiben soll. Wähle Flash from file und navigiere zur entpackten Datei aus Schritt 1.
- Oft wird die microSD-Karte korrekt erkannt und als Ziel ausgewählt. Sei besonders achtsam, wenn a) die Laufwerke mit den Laufwerksbuchstaben C:\ oder D:\ ausgewählt sind oder b) das Laufwerk übermäßig viel Speicherplatz hat. Im schlimmsten Fall wirst du deinen PC inklusive allen darauf befindlichen Daten löschen.
- Sobald du mit der Schaltfläche Flash den Schreibvorgang startest (vgl. Abb.: Raspberry PiOS Lite wird auf microSD-Karte geschrieben), werden alle Dateien auf der microSD- Karte unwiderruflich gelöscht. Vergewissere dich, dass das Speichermedium entweder leer ist oder sämtliche Dokumente an einem zweiten Ort existieren.
Schritt 2: Raspberry Pi OS für den SSH-Zugriff präparieren
- Sobald die Datenträgerimagedatei vollständig erfolgreich auf das externe Speichermedium geschrieben wurde, ziehe die microSD-Karte aus deinem Heimcomputer und stecke sie erneut ein.
- Navigiere (bei Windows über den Dateiexplorer) in das Root-Verzeichnis, sprich Laufwerksbuchstabe:\, z.B. F:\.
- Erstelle ein neues Textdokument: Rechtsklick → Neu → Textdokument und öffne es im Anschluss.
- Wähle in der obigen Menüleiste Datei → Speichern unter…
- Navigiere in dem Popup in das Root-Verzeichnis à la Schritt 2.2. Der Dateiname muss ssh.ssh sein. Um zu verhindern, dass schlicht ein weiteres Textdokument abgespeichert wird, ändere Dateityp von Textdateien (*:txt) zu Alle Dateien um.
- Schließe den Texteditor. Im Root-Verzeichnis deines Massenspeichers sollte nun eine Datei namens ssh.ssh vorhanden sein.
- Mache einen Rechtsklick auf den Dateinamen, dann Umbenennen.
- Lösche alles bis inklusive dem ersten Punkt, sodass ssh.ssh zu ssh umbenannt wird. Bestätige mögliche Warnmeldungen mit Ja.
- Lösche das in Schritt 2.3 erstellte Textdokument, denn es war lediglich Mittel zum Zweck.
- Ziehe die microSD-Karte aus deinem Computer heraus.
Schritt 3: Erstinstallation
- Baue deinen Raspberry Pi zusammen. Dieser Schritt ist optional, denn der Minicomputer lässt sich auch ohne Gehäuse sowie aktiver Kühlung betreiben.
- Stecke die microSD-Karte in den vorgesehenen Kartenslot auf der Geräteunterseite.
- Verbinde den Raspberry Pi via LAN mit dem Netzwerk.
- Sobald der Einplatinencomputer mit Energie versorgt wird, bootet er. Gerade beim ersten Mal kann es eine gewisse Zeit dauern ehe dein zukünftiger OpenVPN- Server ansprechbar ist.
Schritt 4: IPv4-Adresse des Raspberry Pis über die Router-Konfiguration ermitteln
Während der Server sich einrichtet, musst du seine interne IPv4-Adresse ermitteln. Andernfalls ist das Gerät ein Energieentwerter ohne Funktion.
- Logge dich hierfür auf die Web-Oberfläche deines Routers ein. Im Fall einer FRITZ!Box von AVM geschieht dies über den FQDN http://fritz.box.
- Navigiere über die linke Seitenleiste zu Heimnetz → Netzwerk → Netzwerkverbindungen.
- Suche in der Tabelle nach einem Netzwerk-Client mit dem Namen raspberrypi. In der dritten Spalte (Spaltentitel: IP Adresse) steht die lokale IPv4-Adresse.
- Merke oder notiere dir die IP-Adresse. Du wirst diese im Laufe der nächsten Zeit mehrfach benötigen.
Schritt 5: Fernzugriff via SSH mit PuTTY
- Öffne die Terminal-Software PuTTY.
- Im Feld Host Name (or IP adress) hinterlegst du die in Schritt 4.3 ermittelte IP- Adresse. Port 22 ist der Standard-Port für SSH. Wer ihn geändert haben sollte, weiß was stattdessen hier einzutragen ist.
- Klicke auf die Schaltfläche Open.
- Der Standard-Benutzername ist pi und sein Passwort raspberry (vgl. Abb.: SSH-Verbindung herstellen und System aktualisieren). Bestätige jeden Schritt mit der Enter-Taste. Sei nicht verwundert, wenn sich beim Eintippen des Passworts augenscheinlich nichts tut. Dies ist eine reine Vorsichtsmaßnahme seitens PuTTY, damit auch nicht die Länge der Passphrase ausgespäht werden kann.
- Bevor wir mit der eigentlichen Installation unseres OpenVPN-Servers beginnen können, werden die Paketlisten aktualisiert und vorhandene Updates eingespielt: sudo apt-get update && apt-get upgrade –y. Je nach Umstand kann das bis zu einer halben Stunde dauern.
Schritt 6: OpenVPN-Server installieren
Dank dem Entwicklerteam hinter PiVPN braucht es kaum Erfahrungen in der Konsolenbenutzung. Nachdem der Befehl sudo curl -L https://install.pivpn.io | bash abgeschickt wurde, startet der grafische Setup-Wizard. Wird der Schritt mit einer Fehlermeldung quittiert, hat es womöglich die Ursache, dass die Programmbibliothek und das Kommandozeilen-Programm cURL nicht installiert ist, obwohl es in aller Regel Teil von Raspberry Pi OS ist. Du kannst es mit sudo apt install curl installieren. Wiederhole dann den aktuellen Schritt.
Ein Server sollte nur aus triftigen Gründen seine IPv4-Adresse wechseln, bspw. Serverumzug von einem Provider zu einem Performanteren. Statte deinen Raspberry Pi gemäß der Anleitung aus dem Kapitel Eine Portfreigabe einrichten – Schritt 2: Eine statische IPv4-Adresse für den VPN-Server vergeben mit einer fixen IPv4-Adresse aus. Nun kannst du mit <Yes> zum nächsten Schritt übergehen.
Schritt 6.1: OpenVPN-Server-Port auswählen
OpenVPN-Server beanspruchen standardmäßig den Port 1194 für sich. Du darfst es dabei belassen. Wenn Port 1194 UDP/ TCP bereits belegt sein sollte, beachte die Hinweise aus Kapitel Das Synology NAS als OpenVPN-Server – Schritt 2: OpenVPN-Server einrichten unter dem Stichwort Port. Bejahe die Frage im Installationsschritt Confirm Custom Port Number (Abb.: Port für OpenVPN-Server bestimmen).
Schritt 6.2: DNS-Server auswählen
Die Wahl des DNS-Anbieters (zuständig für die Auflösung von Hostnamen in IP-Adressen) hängt von den persönlichen Präferenzen ab. Bis auf einen 27-minütigen Ausfall aufgrund einer selbstverschuldeten fehlerhaften Routerkonfiguration im Sommer 2020 waren die Cloudflare-DNS-Resolver stets ansprechbar.
Schritt 6.3: Eine Domain für deinen OpenVPN-Server
PiVPN verlangt nun eine Domain. Wenn du zu denjenigen zählst, deren Hausanschluss mit einer fixen öffentlichen IPv4-Adresse ausgestattet ist, darfst du ebenso diese hier eintragen. Die meisten werden hier ihre DynDNS-Domain – kostenlos oder –pflichtig – eintragen. Vergewissere dich, dass der Name korrekt geschrieben ist. Dann bestätige mit <Ok> (Abb.: Abb.: DynDNS-Domain eintragen).
Drücke ein erneutes Mal <Ok>.
Schritt 6.4: Server-Zertifikat generieren
Die Folgefrage (Abb.: Server-Zertifikat generieren) hängt vom persönlichen Sicherheitsbedürfnis ab. Ich ging mit einem 384-Bit Zertifikat den Mittelweg aus Performance und Sicherheit. Mit <Ok> (Abb.: Server-Zertifikat generieren) wird das Schlüsselpaar letztendlich generiert.
Schritt 6.5: Sicherheitsupdates automatisch einspielen
Bei einem Server, der weltweit angefragt werden kann, sofern keine weiteren Firewall-Einstellungen getroffen wurden, ist es ratsam Sicherheitspatches automatisch einspielen zu lassen (vgl. Abb.: Automatische Updates erlauben). Dennoch ist manchmal dein Zutun notwendig, denn manche Updates werden erst nach einem Geräteneustart möglich. Das tut der automatische Updater im Sinne der Service-Verfügbarkeit nicht. Möchtest du dir ein wenig Arbeit abnehmen lassen?
Schritt 6.6: OpenVPN-Server-Installation beenden
Beende die OpenVPN-Server-Installation mit <Yes> (Abb.: 26) und <Ok> (Abb.: 27).
© Leon Ebersmann