VPN auf dem Raspberry Pi - So einfach geht's!

Sicheres Internet gibt es nicht überall, und gerade öffentliche Netze sind zum sorglosen Surfen nur bedingt geeignet. Warum also nicht einfach das Heimnetzwerk überallhin mitnehmen? Genau das ist mit einer VPN-Verbindung möglich. Eine besonders bequeme Methode, die sichere VPN-Verbindung selbst bei sich Zuhause einzurichten, ist der Weg übers Raspberry Pi als VPN-Server. Wie das geht, erklären wir hier.

Ein Raspberry Pi ist ein Mini-Computer ohne Gehäuse zum Niedrigpreis. Bastler nutzen das günstige Gerät gerne zum Experimentieren, denn falls etwas kaputtgeht, ist der Schaden nicht besonders groß. Wenn Sie Ihren Raspberry Pi als heimischen VPN-Server einrichten, können Sie auch in weit entfernten Netzwerken über einen sicheren VPN-Tunnel Ihr Heimnetzwerk betreten, um ohne Risiken zu surfen und auf heimische Anwendungen zuzugreifen.

Vorteile eines Raspberry Pi als VPN-Server mit OpenVPN

Der größte Vorteil des Raspberry Pi ist sicherlich sein geringer Preis. Im Vergleich zu einem kompletten Linux-Rechner als VPN-Server sind nicht nur die Einstandskosten, sondern auch die laufenden Kosten deutlich geringer. Schließlich kann das Gerät ungekühlt bei geringem Stromverbrauch dauerhaft am Netz bleiben und so den VPN-Tunnel rund um die Uhr aufrechterhalten.

Ein weiterer großer Vorteil ist zudem, dass Sie mit OpenVPN auf eine völlig kostenfreie VPN-Server-Software zugreifen können. Sie unterstützt eine große Anzahl an Betriebssystemen wie Windows, MacOS, Android, iOS oder Linux.

Der einfache Aufbau des Mini-Rechners macht die Einrichtung relativ simpel und sorgt dafür, dass der VPN-Server am Ende auch stabil und zuverlässig läuft, sodass Sie sich zu 100% auf ihn verlassen können.

Vorbereitung für die Einrichtung

Was Sie für die Umsetzung benötigen:

  1. Einen Raspberry Pi (idealerweise ab Modell 2 oder neuer)
  2. Eine Micro-SD-Speicherkarte, auf der Raspbian-Jessie als Betriebssystem installiert ist.
  3. Eine dauerhafte Internetverbindung per Netzwerkkabel (oder WLAN) zum Raspberry Pi
  4. Eine Micro-USB-Verbindung zur Stromquelle

Außerdem sollten Sie sich überlegen, ob Sie am Raspberry Pi direkt einen Monitor sowie Maus und Tastatur anschließen oder lieber per SSH auf das Gerät zugreifen möchten. In der Regel macht die Wartung des Servers über SSH am meisten Sinn, denn so können Sie einfach von Ihrem gewohnten Rechner über Tools wie PuttY, WinSCP oder OpenSSH auf den Raspberry Pi zugreifen.

Um per SSH auf Ihren Raspberry Pi zugreifen zu können, müssen Sie lediglich die IPv4-Adresse des Gerätes kennen. Sie können sie beispielsweise über den Router herausfinden, wenn der Raspberry Pi mit dem Netzwerk verbunden ist.

IP-Adressen anpassen

Wenn Sie per SSH auf den VPN-Server zugreifen möchten, macht es Sinn, dem Server eine feste IP-Adresse zuzuweisen, unter der Sie ihn stets erreichen können. Auch für OpenVPN ist es wichtig, dass der Server eine feste lokale IP-Adresse in Ihrem Netzwerk hat und dort permanent erreichbar ist.

Natürlich sollte der VPN-Server stets unter der gleichen Adresse im Internet erreichbar sein, wenn Sie von außerhalb darauf zugreifen möchten. Die meisten Internet-Provider vergeben allerdings alle 24 Stunden eine neue, dynamische IP-Adresse an Ihren Router, sodass Sie zusätzlich einen Dienst für eine dynamische DNS (DDNS)  nutzen sollten.

Das geht folgendermaßen:

  1. Dem VPN-Server eine feste IP im LAN zuweisen
    Im Administrator-Bereich des Routers können Sie dem Raspberry Pi anhand der Mac-Adresse eine feste IPv4 –Adresse zuweisen. Bei einer Fritzbox erreichen Sie die Admin-Oberfläche über die Eingabe von fritz.box in der Adressleiste des Browsers.
  2. Portweiterleitung am Router
    Mithilfe einer Weiterleitung des Ports am Router wird die feste lokale IP-Adresse von außen erreichbar gemacht. Üblicherweise wird für OpenVPN der Port 1194 verwendet. Hat der Raspberry Pi im LAN also beispielsweise die IP 192.168.1.10, dann muss am Router sämtlicher Datenverkehr des Typs UDP über den Port 1194 auf den gleichen Port des Raspberry Pi weitergeleitet werden.
  3. Hostnamen per DNS-Dienst zuweisen
    Wenn Sie von außen auf Ihr Netzwerk zugreifen möchten, müssen Sie einen dynamischen DNS-Dienst einrichten, da Ihr Internet-Provider höchstwahrscheinlich alle 24 Stunden Ihre IP-Adresse ändert. Gegebenenfalls können Sie alternativ nachfragen, ob es möglich ist, eine feste IP-Adresse zu bekommen.
    Andernfalls sollten Sie einen Dienst wie No-IP nutzen, der von den meisten Routern unterstützt wird. Hierüber erhält Ihr Router einen festen Hostnamen, der automatisch bei Aktualisierung der IP-Adresse Ihres Routers zur neuen IP-Adresse weiterleitet. Wie Sie NO-IP einrichten, können Sie auf der Webseite des Dienstes im Detail nachlesen.

Raspberry Pi updaten

Bevor Sie mit der Installation von OpenVPN oder Pi VPN beginnen, sollten Sie alle verfügbaren Updates für das Betriebssystem ausführen. Dies erreichen Sie mit folgenden Befehlen:

Benutzername und Passwort neu vergeben

Wir empfehlen, das Standardpasswort und den Benutzernamen Ihres Raspberry Pi („Pi“ und „Raspberry“) zu ändern, um auf der sicheren Seite zu sein. Dies können Sie sowohl lokal als auch per SSH über folgenden Befehl vornehmen:

2 Varianten: PiVPN vs. OpenVPN

OpenVPN ist die beliebteste VPN-Lösung für Linux-Systeme und damit auch für den Raspberry Pi. Das Programm ist nicht nur sehr sicher, sondern auch Open Source und damit komplett kostenlos. Da die Einrichtung besonders für Einsteiger durch die textbasierte Kommandozeile allerdings mitunter schwierig ist, gibt es mit PiVPN eine deutlich vereinfachte Möglichkeit.

Variante 1: Mit PiVPN einen VPN-Server einrichten

Da PiVPN auf OpenVPN basiert, ist es mit denselben Betriebssystemen inklusive der aktuellen Linux-Distributionen wie Raspbian, Debian oder auch Ubuntu kompatibel.

Schritt 1: Pi VPN installieren

Da es sich um ein Bash-Script handelt, müssen Sie PiVPN nicht herunterladen und wie eine gewöhnliche Software installieren. Es ist völlig ausreichend, wenn Sie in der Kommandozeile folgenden Befehl eingeben:

Schritt 2: PiVPN verwalten

Wenn PiVPN gestartet wird, erhalten Sie einen Hinweis, dass eine statische IP-Adresse verwendet werden sollte. Wenn Sie wie empfohlen bereits am Router eine feste IP-Adresse zugewiesen haben, können Sie diesen Punkt überspringen.

Im Anschluss müssen Sie ein lokales Benutzerkonto einrichten, in dem die Konfiguration des OpenVPN-Dienstes hinterlegt wird. Hier wählen Sie den eigenen Nutzer aus und aktivieren im nächsten Schritt automatische Updates (‘unattended upgrades‘).

Im folgenden Dialog wählen Sie UDP als VPN-Protokoll aus und belassen die vorgeschlagene Port-Nummer bei 1194, sofern Sie auch diesen Port wie vorgeschlagen am Router weitergeleitet haben.

Die Schlüssellänge können Sie auf 2048 Bit festlegen, denn dies reicht für einen guten Sicherheitsstandard absolut aus. Die Erstellung des Schlüssels kann je nach Modell des Raspberry Pi eine Weile dauern.

Im folgenden Schritt werden Sie gefragt, ob der VPN-Server per fester IP-Adresse oder per Hostname (‘DNS Entry‘) erreichbar ist. Sollten Sie einen DNS-Dienst wie No-IP am Router eingerichtet haben, geben Sie hier den entsprechenden Hostnamen ein.

Nach dem anschließenden Neustart ist die Ersteinrichtung bereits erledigt.

Schritt 3: Netzwerk-Clients hinzufügen und entfernen

Die Einrichtung der Client-Konfigurationen ist per PiVPN sehr einfach. Sie müssen lediglich in der Kommandozeile Folgendes eingeben:

Sie werden nach dem gewünschten Benutzernamen und einem Passwort gefragt. Die fertige Konfigurationsdatei wird dann ‘[Client].ovpn‘ genannt und im Ordner ‘~/ovpns‘ abgelegt.

Im Client, über den Sie auf den VPN-Server zugreifen möchten, benötigen Sie lediglich diese eine Datei, denn alle Schlüssel und das Serverzertifikat sind in der Datei bereits enthalten. Sie können sie also einfach in jedem beliebigen OpenVPN-Client importieren.

Mit dem folgenden Befehl lassen sich Clients einfach wieder entfernen:

Variante 2: Mit OpenVPN einen VPN-Server einrichten

Wer etwas mehr Erfahrung im Umgang mit Linux hat und mehr Freiheiten bei Einrichtung und Verwaltung des VPN-Servers möchte, kann alternativ OpenVPN direkt auf dem Rasberry Pi installieren.

Unsere Schritt-für-Schritt-Anleitung setzt dabei voraus, dass die aktuelle Version von Raspbian zum Einsatz kommt. Wenn Sie alle Schritte befolgen, ist die Einrichtung eines OpenVPN-Servers auf Ihrem Pi auch ohne große Vorkenntnisse kein Problem.

Schritt 1: OpenVPN installieren und rsa-Datei anlegen

Die Software selbst, wie auch das Verschlüsselungsprotokoll OpenSSL, installieren Sie über den folgenden Befehl:

Nachdem OpenVPN installiert wurde, müssen Sie die easy-rsa-Skripte in das entsprechende Konfigurationsverzeichnis kopieren. Dies können Sie mit dem folgenden Befehl erledigen:

Im Folgenden müssen Sie die Datei ‘’vars’ im entsprechenden Ordner öffnen und anpassen.

Die Zeile export EASY_RSA=“‘pwd‘“ muss hier durch folgende Zeile ersetzt werden:

Darüber hinaus können Sie hier auch die Schlüssellänge anpassen. Um Performance-Einbußen völlig zu vermeiden, sollten Sie bei einem Raspberry Pi Modell 3 eine Schlüssellänge von 2048 Bit wählen. Beim Modell 2 führt bereits dies zu Performance-Problemen, weshalb Sie mit einer Schlüssellänge 1024 etwas Sicherheit zugunsten einer besseren Leistung opfern können. Zum Ändern der Verschlüsselung müssen Sie lediglich den Wert in der Zeile „export KEY_SIZE=“ auf 2048 oder 1024 ändern.

Sie können nun zurück ins Konfigurationsverzeichnis easy-rsa wechseln und über root-Rechte die Einstellungen starten, indem Sie das Skript vars ausführen. Abschließend wird die Konfigurationsdatei über einen symbolischen Link zugänglich gemacht. Dies alles erledigen Sie mit den folgenden vier Zeilen:

Schritt 2: Zertifikate erstellen

Die Schlüsseldateien für OpenVPN werden nun zunächst zurückgesetzt und dann neu erstellt. Als Country-Namen geben Sie DE für Deutschland bzw. AT für Österreich und CH für die Schweiz ein. Alle weiteren Abfragen können Sie einfach bestätigen.

Nun können die Schlüsseldateien mit folgendem Befehl generiert werden:

Schritt 3: VPN-Client einrichten

Für jedes Gerät, von dem aus Sie auf den VPN-Server zugreifen möchten, muss ein Client eingerichtet werden. Jeder Client benötigt ein Zertifikat und den passenden Schlüssel. Auch hier müssen Sie bei der Erstellung den Ländercode eingeben und dem Client einen Namen zuweisen. In unserem Beispiel nennen wir den Client ‘desktop-pc

Alternativ können Sie statt des Befehls build-key auch build-key-pass verwenden, um ein Passwort für den Client festzulegen.

Die Zertifikate und Schlüssel schließen Sie nun mit folgendem Befehl ab:

Abschließend melden Sie den Root-Benutzer über den Befehl exit ab.

Schritt 4: Konfigurationsdatei generieren

Die OpenVPN-Konfigurationsdatei kann mit folgendem Befehl aufgerufen werden:

Diese Konfigurationsdatei müssen Sie nun mit einigen Zusätzen ergänzen, die wir im Folgenden kurz erklären. Dabei wird einerseits das Prokoll UDP ausgewählt, das Routing per IP-Tunnel aktiviert und der Port (Standard 1194) festgelegt.

Sowohl das SSL/TSL Root-Zertifikat (ca) als auch das digitale Zertifikat (cert) und der Schlüssel (key) müssen Sie über das Verzeichnis easy-rsa erstellen. Achten Sie darauf, dass Sie die korrekte Verschlüsselung (1024 oder 2048) eingeben.

Über den Befehl server 192.168.2.100 255.255.255.0 stellen Sie ein, dass der Raspberry Pi als VPN-Server genutzt werden soll. Außerdem legen Sie über redirect-gateway def1 bypass-dhcp fest, dass der IP-Traffic über den IP-Tunnel geleitet werden soll.

Abschließend müssen Sie noch den öffentlichen DNS-Server benennen, über den der VPN-Server arbeiten wird. 8.8.8.8 ist beispielsweise ein öffentlicher DNS-Server von Google. Natürlich können auch IPv4 Adressen eines anderen DNS-Servers verwendet werden. Dann wird die Log-Information in die Datei openvpn geschrieben.

Zuletzt ergänzen Sie noch weitere Parameter wie beispielsweise persist-key, damit die Key-Dateien nicht erneut gelesen werden. persist-tun sorgt dafür, dass die Treiber nicht neu gestartet werden. Mittels user nobody und group nogroup werden die Rechte des Daemons herabgesetzt und per verb wird die Ausführlichkeit der Log-Datei vereinbart. Mit dem Zusatz 0 werden in der Log-Datei außer Fehlermeldungen keine weiteren Angaben gespeichert. Wir empfehlen einen Wert von 3. Abschließend definieren wir mit dem Parameter client-to-client noch, dass auch andere VPN-Clients erkannt werden, und aktivieren zudem mit comp-lzo die LZO-Komprimierung.

Die Config-Datei sollte nun etwa so aussehen:

Mit Strg+O können Sie sie speichern und mit Strg+X den Editor verlassen.

Schritt 5: Skript für den Internetzugang anlegen

Um über den VPN-Tunnel auf Ihr Heimnetzwerks zugreifen zu können, müssen Sie eine entsprechende Weiterleitung erstellen. Dazu legen Sie zunächst mit folgendem Befehl die Datei rpivpn an:

In diese Datei fügen Sie Kommentare ein, die als Header für das Linux-Init-Skript dienen. Darüber hinaus aktivieren Sie ip_forward, legen iptables als Paketfilter für die Weiterleitung an und gewähren dem Zugang zum LAN und Internet. Die Datei sollte dann etwa so aussehen:

Mit Strg+O und Strg+X speichern und schließen Sie die Datei.

Zum Schluss müssen Sie dem Skript noch Rechte zuweisen, was Sie über folgenden Befehl erreichen:

Jetzt können Sie das Skript ausführen und den Server anschließend neu starten.

Schritt 6: Client-Einrichtung abschließen

Nun ist es fast geschafft. Zum Abschluss müssen Sie nur noch die Zertifikate und Schlüssel der jeweiligen Clients (sofern mehrere angelegt wurden) bündeln und zum Export vorbereiten. Dazu erteilen Sie sich zunächst wieder Root-Rechte und rufen die Client-Datei auf, die Sie verändern möchten. Hierzu wählen wir wieder unseren Beispiel-Client „desktop-pc“.

Nun ergänzen Sie in dieser Datei in Zeile 4 Informationen zu Ihrem DNS-Anbieter bzw. geben Ihre statische IP-Adresse (im Beispiel 10.10.10.10) ein und tragen in der 10. und 11. Zeile die Bezeichnung des Clients ein. Abschließend speichern und schließen Sie den Editor mit Strg+O und Strg+X. Die Datei sollte daraufhin in etwa so aussehen:

Abschließend packen Sie die Konfigurationsdatei mit den Zertifikaten und Schlüsseln in eine ZIP-Datei (sollten Sie noch kein Zip-Paket installiert haben, können Sie dies über apt-get install zip ganz einfach nachholen).

Passen Sie anschließend die Rechte der Datei mit chown pi:pi /home/pi/raspberry_desktop-pc.zip an und beenden Sie die Einrichtung mit exit. Die erstellte Zip-Datei können Sie dann per SCP- oder SFTP-Software auf Ihren PC übertragen. 

Damit haben Sie alles erledigt und können ab sofort von jedem Endgerät aus auf Ihr lokales Netzwerk über den Raspberry Pi OpenVPN-Server zugreifen.

Autor Carsten Podszun
Carsten Podszun hat Informatik und Betriebswirtschaft studiert und war 15 Jahre lang selbständig im Einzelhandel tätig. Seit 2014 ist er Berater für Startups, freier Autor und schreibt bei EXPERTE.de rund um die Themen Homepage, Hosting & IT-Security.
Weitere Sprachen:
English