Über uns | Kontakt

info@experte.de

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

Als virtuelles Netzwerk innerhalb Ihres Heimnetzwerks bietet ein selbst eingerichtetes VPN hervorragende Möglichkeiten, auf das eigene Heimnetzwerk von überall auf der Welt aus zugreifen zu können. Darüber hinaus bewegen Sie sich über ein verschlüsseltes virtuelles privates Netzwerk deutlich sicherer im Internet und schützen dadurch Ihre persönlichen Daten effektiv vor dem Zugriff durch Dritte.

Neben dem Einrichten des eigenen Rechners oder des Routers als VPN-Server oder der Nutzung eines spezialisierten VPN Anbieters, gibt es auch die Möglichkeit, dies über einen Raspberry Pi zu tun, der direkt mit dem Router verbunden ist. Wie genau der Aufbau eines VPN-Tunnel auf dem Pi funktioniert, was die Vorteile sind und welche beiden Varianten Ihnen zur Verfügung stehen, haben wir hier für Sie zusammengefasst

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 er 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 über OpenVPN die Möglichkeit haben, die kostenfreie VPN-Server-Software komplett kostenfrei zu nutzen. Neben anderen Betriebssystemen wie Windows, MacOS, Android oder iOS wird eben auch Linux für den Raspberry Pi unterstützt.

Zu guter Letzt ist auch der einfache Aufbau des Mini-Rechners ein großer Vorteil. Denn dadurch ist nicht nur die Einrichtung sehr einfach, sondern der VPN-Server läuft am Ende auch stabil und zuverlässig, 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 über 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 auf den Raspberry Pi per SSH zugreifen zu können, müssen Sie lediglich die IPv4-Adresse des Gerätes kennen, die sich beispielsweise über Ihren Router einfach herausfinden lässt, wenn der 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, damit Sie ihn immer unter einer festen IP-Adresse erreichen. 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 auch unter der gleichen Adresse im Internet erreichbar sein, wenn Sie von außen 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.

  1. Dem VPN-Server eine feste IP im LAN zuweisen
    Die einfachste Möglichkeit, dies zu tun, ist über den Administrator-Bereich des Routers. Hier können Sie anhand der Mac-Adresse dem Raspberry Pi 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, dass Sie eine feste IP-Adresse bekommen.
    Andernfalls sollten Sie einen Dienst wie zum Beispiel 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, ist es empfehlenswert, nach Updates für das Betriebssystem zu suchen und diese auszuführen. Dies können Sie einfach über folgende Befehle tun:

sudo apt-get update
sudo apt-get upgrade

Benutzername und Passwort neu vergeben

Wir empfehlen, Standardpasswort und Benutzernamen Ihres Raspberry Pi („Pi“ und „Raspberry“) zu ändern. Dies erhöht die Sicherheit deutlich. Dies kann sowohl lokal als auch per SSH über folgenden Befehl vorgenommen werden:

sudo raspi-config

Variante 1: Mit PiVPN einen VPN-Server einrichten

Open VPN ist die verbreitetste VPN-Lösung für Linux-Systeme und damit auch für den Raspberry Pi. Es ist nicht nur sehr sicher, sondern auch Open Source und damit komplett kostenlos. Da insbesondere für Einsteiger die Einrichtung durch die textbasierte Kommandozeile mitunter schwierig ist, gibt es mit PiVPN eine deutlich vereinfachte Möglichkeit, mithilfe von textbasierten Menüs die Einrichtung des VPN zu erleichtern.

Da es auf Open VPN basiert, ist es für sämtliche Systeme inklusive der aktuellen Linux-Distributionen wie Raspbian, Debian oder auch Ubuntu inklusive seiner Abkömmlinge.

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:

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

Schritt 2: PiVPN verwalten

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

Im Anschluss daran müssen Sie ein lokales Benutzerkonto einrichten, in dem die Konfiguration des Open-VPN-Dienstes hinterlegt wird. Hier wählen Sie den eigenen Nutzer einfach 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 dann 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:

pivpn add

Sie werden dann 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 jeden beliebigen Open-VPN-Client importieren.

Mit dem Befehl

pivpn revoke

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, der kann alternativ auch 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 sowie OpenSSL (das Verschlüsselungsprotokoll) installieren Sie über folgenden Befehl:

sudo apt-get install openvpn openssl

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

sudo cp -r /usr/share/easy-rsa /etc/openvpn/easy-rsa

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

sudo nano /etc/openvpn/easy-rsa/vars

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

export EASY_RSA="/etc/openvpn/easy-rsa"

Darüber hinaus kann hier auch die Schlüssellänge angepasst werden. Wenn Sie keinerlei Performance-Einbußen haben möchten, sollten Sie bei einem Raspberry Pi Modell 3 eine Schlüssellänge von 2048 Bit wählen. Beim Modell 2 hingegen führt dies bereits zu Einbrüchen, sodass hier gegebenenfalls 1024 auf Kosten eines geringeren Sicherheitsstandards gewählt werden sollte. 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 ausführen, 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:

cd /etc/openvpn/easy-rsa
sudo su
source vars
ln –s openssl-1.0.0.cnf openssl.cnf

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.

./clean-all
./build-ca OpenVPN

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

./build-key-server server

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

./build-key desktop-pc

Alternativ können Sie statt dem Befehl 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:

./build-dh

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:

sudo nano /etc/openvpn/openvpn.conf

Sie wird nun mit folgenden Zusätzen ergänzt. Dabei wird einerseits das Prokoll UDP ausgewählt, das Routing per IP-Tunnel wird aktiviert und es wird der Port (Standard 1194) festgelegt.

Nun müssen sowohl SSL/TSL Root-Zertifikat (ca) als auch das digitale Zertifikat (cert) und der Schlüssel (key) über das Verzeichnis easy-rsa erstellt werden. 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 dann ein, dass der Raspberry Pi als VPN-Server genutzt werden soll. Außerdem stellen Sie über redirect-gateway def1 bypass-dhcp ein, 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 andere IPv4 Adressen eines anderen DNS-Servers verwendet werden. Dann wird die Log-Information in die Datei openvpn geschrieben.

Zu guter Letzt werden noch weitere Parameter ergänzt 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:

dev tun
proto udp
port 1194
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
server 192.168.2.100 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
log-append /var/log/openvpn
persist-key
persist-tun
user nobody
group nogroup
status /var/log/openvpn-status.log
verb 3
client-to-client
comp-lzo

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 das Internet Ihres Heimnetzwerks zugreifen zu können, müssen Sie eine entsprechende Weiterleitung erstellen. Dazu legen Sie zunächst mit folgendem Befehl die Datei rpivpn an.

sudo nano /etc/init.d/rpivpn

In diese Datei werden Kommentare eingefügt, die als Header für das Linux-Init-Skript dienen.
Darüber hinaus werden ip_forward aktiviert, iptables als Paketfilter für die Weiterleitung angelegt und es muss der Zugang zum LAN und Internet gewährt werden. Die Datei sollte dann etwa so aussehen:

#! /bin/sh
### BEGIN INIT INFO
# Provides: rpivpn
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: VPN initialization script
### END INIT INFO
echo 'echo "1" > /proc/sys/net/ipv4/ip_forward' | sudo -s
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s 192.168.2.100 /24 -o eth0 –j MASQUERADE

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

Zum Schluss müssen dem Skript noch Rechte zugewiesen werden, was Sie über folgenden Befehl tun können:

sudo chmod +x /etc/init.d/rpivpn
sudo update-rc.d rpivpn defaults

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

sudo /etc/init.d/rpivpn
sudo /etc/init.d/openvpn restart

Schritt 6: Client-Einrichtung abschließen

Nun ist es fast geschafft. Zum Abschluss müssen nur noch die Zertifikate und Schlüssel der jeweiligen Clients (sofern mehrere angelegt wurden) gebündelt und zum Export vorbereitet werden. 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“.

sudo su
cd /etc/openvpn/easy-rsa/keys
nano desktop-pc.ovpn

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 sieht dann beispielhaft so aus:

dev tun
client
proto udp
remote 10.10.10.10 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert desktop-pc.crt
key desktop-pc.key
comp-lzo
verb 3

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

zip /home/pi/raspberry_desktop-pc.zip ca.crt desktop-pc.crt desktop-pc.key desktop-pc.ovpn

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