Mit PiVPN sicher zum Heimnetz verbinden

Als nächster Teil meiner Raspberry Pi Serie möchte ich euch das PiVPN nun etwas näher bringen. Es handelt sich hierbei um gesicherten VPN-Heimnetz-Zugang welcher einfach zu installieren und konfigurieren ist. Bei PiVPN kann man sich zwischen zwei Methoden entscheiden: OpenVPN und WireGuard.

In unserem Beitrag verwenden wir zur Konfiguration den Raspberry Pi als OpenVPN Server.

Voraussetzungen

Grundsätzlich gelten die gleichen Voraussetzungen wie für den Betrieb von AdGuard Home mit dem Raspberry Pi welche in diesem Artikel beschrieben sind.

Dynamisches DNS oder feste öffentliche IP-Adresse?

Um eine VPN-Verbindung aufzubauen benötigt man ein fest definiertes Ziel, bestehend entweder aus deinem FQDN (full qualified domain name) oder einer fest definierten öffentlichen IP-Adresse. Eine solche IP-Adresse kann man unter bestimmten Voraussetzungen bei seinem Internetanbieter gegen einen Aufpreis erwerben. Sofern man dies nicht möchte oder dies auch gar nicht möglich ist, nutzt man einen dynamischen DNS-Dienst. In der Regel besitzt z.B. der heimische Internetanschluss keine feste öffentliche IP-Adresse und wechselt diese je nach Provider-Einstellungen. Im weiteren Verlauf des Artikels wird hier der Einfachheit halber auf den Dienst MyFritz! von der Fritz!Box gesetzt.

Hierzu navigiert man in der Fritz!Box zu Internet → MyFritz!-Konto und erstellt sich einen Zugang. Im Anschluss findet man unter “MyFritz!-Internetzugriff” den öffentlichen FQDN seiner Fritz!Box.

Fritz!Box MyFritz!Konto

Portforwarding bzw. Destination-NAT (DNAT)

Nachdem nun das Ziel bekannt ist auf das wir uns verbinden wollen, müssen die Datenpakete nun an den Raspberry Pi, der hinter dem Router bzw. der Fritz!Box steht, weitergegeben werden. Dies passiert über ein Verfahren, welches als Portforwarding bezeichnet wird bzw. auch unter den Begriffen Destination-NAT bzw. abgekürzt DNAT bekannt ist. Dieses Verfahren übersetzt grob gesagt die Ziel-Adresse (= Destination) und reicht unter einer bestimmten Portnummer die Datenpakete weiter und stellt die Kommunikation hierzu sicher.

Um nun einen solchen Eintrag in der Fritz!Box zu hinterlegen begibt man sich im Hauptmenü unter Internet → Freigaben und richtet die Portweiterleitung für den gewünschten Port (in unserem Fall UDP 1194) für den Raspberry Pi ein.

Fritz!Box Freigaben

OpenVPN Client

Und selbstverständlich benötigt man auch eine Client-Software. In unserem Fall dann natürlich der OpenVPN Client. Diesen kann man über die Webseite beziehen. Für Mac-User kann die Software „Tunnelblick“ verwendet werden.

Öffentlicher DNS Eintrag erstellen (optional)

Sofern man über eine eigene Internetdomain verfügt wie z.B. <meinedomain>.de kann man sich einen DNS Eintrag für die VPN-Verbindung setzten. Der Eintrag kann entweder auf eine dynamische DNS-Adresse verweisen (z.B. MyFritz) oder sofern vorhanden auf die fest vergebene öffentliche IP-Adresse des Internetanschlusses. Man kann genau so gut die MyFirtz!-Adresse verwenden, es ist aber in vieler Hinsicht besser einen sprechenden DNS-Namen zu besitzen. Dieser ist aber als optional zu sehen und hat keinen Einfluss auf die Funktionalität des VPNs.

Für die die Nutzung der MyFritz!-Adresse ist ein sog. CNAME Eintrag (Aliasname) nötig der auf den FQDN der Fritz!Box verweist. Sofern man eine feste öffentliche IP-Adresse besitzt steht an dieser Stelle ein A-Eintrag für IPv4 oder ein AAAA-Eintrag für IPv6 mit der entsprechenden IP-Adresse als Ziel.

PiVPN installieren

Die Installation von PiVPN selbst ist sehr einfach. Hierzu werden nur diese zwei Zeilen benötigt. Die erste installiert das Programm “curl” auf das System (sofern es noch nicht vorhanden ist). In der zweiten Zeile ruft man von der Homepage ähnlich wie bei AdGuard Home ein Installationsscript auf.

sudo apt install curl -y
sudo curl -L https://install.pivpn.io | bash

Nachdem das Setup gestartet wurde durchläuft man einen Assistenten mit mehreren Schritten zur Konfiguration. Hierbei werden folgende Einstellungen für unsere Installation in Verbindung mit der Fritz!Box gesetzt:

  • DHCP-Reservierung bzw. Konfiguration einer festen IP-Adresse
  • Installation mode: OpenVPN
  • Protokoll: UDP mit Port 1194
  • Search Domain: fritz.box
  • DNS Eintrag: vpn.<meinedomain>.de oder der erstellte MyFritz! Eintrag in der Fritz!Box
  • Verschlüsselung des Zertifikats: 256 bit
  • Aktivieren von Sicherheitsupdates

Nachdem man die Installation erfolgreich abgeschlossen hat kann man nun mit folgenden Kommando den ersten VPN-Benutzer anlegen:

pivpn add

Es wird nun nach Benutzername und Passwort gefragt und als nächster Schritt die Konfiguration und die dazu nötigen Zertifikate erstellt.

Damit die Konfiguration nun angewendet werden kann, muss diese noch vom Raspberry Pi heruntergeladen und in die Konfiguration des OpenVPN Clients übernommen werden.

Wenn man die nun fertige Konfiguration in den OpenVPN Client (z.B. durch Doppekklick) importiert hat, kann man die Verbindung auch sofort starten. Es wird das zuvor gewählte Passwort für das Zertifikat verlangt um die Verbindung zu starten.

Im Anschluss ist wird die Verbindung erfolgreich aufgebaut.