Der Raspberry Pi als OpenVPN-Server

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.

Vorbereitung – Benötigte Software

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.
Bild: Raspberry PiOS Lite wird auf microSD-Karte geschrieben
Abb.: Raspberry PiOS Lite wird auf microSD-Karte geschrieben

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 → NeuTextdokument und öffne es im Anschluss.
  • Wähle in der obigen Menüleiste DateiSpeichern 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 HeimnetzNetzwerkNetzwerkverbindungen.
  • 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.
Abb.: SSH-Verbindung herstellen und System aktualisieren
Abb.: SSH-Verbindung herstellen und System aktualisieren

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.

Abb.: Benutzerdefiniertes Setup einleiten.
Abb.: DHCP-Reservierung, IP-Adressverwaltung wird von Router organisiert.

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).

Abb.: Port für OpenVPN-Server bestimmen
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.

Abb.: Benutzerdefinierter DNS-Server, hier: Cloudflare
Abb.: Benutzerdefinierter DNS-Server, hier: Cloudflare

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).

Abb.: DynDNS-Domain eintragen
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.

Abb.: Server-Zertifikat generieren
Abb.: Server-Zertifikat generieren

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?

Abb.: Automatische Updates erlauben
Abb.: Automatische Updates erlauben

 

Schritt 6.6: OpenVPN-Server-Installation beenden

Beende die OpenVPN-Server-Installation mit <Yes> (Abb.: 26) und <Ok> (Abb.: 27).

Abb.: OpenVPN-Server erfolgreich installiert
Abb.: OpenVPN-Server erfolgreich installiert

© Leon Ebersmann

Von Leon