Raspberry Pi VPN-Router – RaspAP und NordVPN / OpenVPN (einfach)

27 Kommentare Autor: Jürgen (jdo)

Moderne Raspberry Pis haben sowohl Ethernet-Schnittstelle als auch eine WLAN-Netzwerkkarte. Wie Du damit einen Access Point bauen kannst, habe ich Dir im Beitrag über RaspAP ausführlich beschrieben. Nun gehen wir einen Schritt weiter und verwandeln den Raspberry Pi Hotspot in einen VPN-Router.

Das hat den Vorteil, dass Du so viele Geräte wie Du willst, über durch das VPN leiten kannst. Du bist also nicht davon abhängig, wie viele simultane VPN-Verbindungen Dein Provider gestattet. Voraussetzung ist aber, dass Du einen VPN-Provider nimmst, der eine Installation auf einem Router erlaubt.

Ich habe mich in dieser Anleitung für NordVPN* entschieden und damit einen NordVPN Router gebastelt. Der Grund ist, dass der Provider einen Linux-Client anbietet, der auch auf dem Raspberry Pi läuft. Der Client lässt sich über die Kommandozeile bedienen und das ist genau, was ich in diesem Fall brauche. Außerdem bietet mir der Linux Client von NordVPN die Möglichkeit, mich mit verschleierten Servern zu verbinden und ich kann CyberSec aktivieren. Die Funktion blockiert Werbung, Malware und Tracker. Jedes Gerät, das den Raspberry Pi als Hotspot und VPN-Router benutzt, profitiert dann von CyberSec.

Im Prinzip funktioniert jeder Provider, der ovpn-Dateien zur Verfügung stellt. Damit verbindest Du Dich via OpenVPN-Protokoll mit dem Provider. Ich zeige Dir in der Anleitung zuerst, wie Du den Linux-Client von NordVPN einsetzt, um einen VPN-Router zu basteln. Im Anschlussverrate ich Dir, wie das mit einer ganz normalen OpenVPN-Verbindung funktioniert. Weitere VPN in Deutschland habe ich hier für dich geprüft.

Schnellanleitung – mit Raspberry Pi VPN-Router basteln

Hier ist eine Schnellanleitung, die ausgezeichnet mit den neuesten Versionen von RaspAP und NordVPN funktioniert. Ich möchte anmerken, dass es sich bei der nachfolgenden Anleitung nur um eine mögliche Variante von sehr vielen handelt. Es gibt so viele Feinheiten bei so einem Projekt und je nach Einsatz musst Du das Finetuning im Laufe der Zeit vornehmen. Du musst Dir auch Gedanken zum VPN für Raspberry Pi machen. Für diese Anleitung hier konzentriere ich mich auf NordVPN, weil ich das selbst nutze. Weiter unten beschreibe ich aber auch eine Methode, wie Du einen VPN-Router ohne VPN-Client einrichten kannst – das ist aber komplizierter.

Time needed: 45 minutes

Raspberry Pi zum VPN-Router wandeln

  1. NordVPN installieren

    Hole Dir NordVPN* und installiere den Client (hier ist vielleicht ein Neustart notwendig). Es handelt sich hier um den Linux-Client des Anbieters, den es für die Kommandozeile gibt.

  2. Richte den Linux-Client ein

    Konfiguriere den Client, dass er Deinen Anforderungen entspricht. Vielleicht willst Du statt OpenVPN lieber WireGuard (NordLynx) nutzen, die Firewall deaktivieren und so weiter.

  3. Melde Dich an

    Führe den Befehl nordvpn login aus, um Dich beim VPN-Anbieter anzumelden. Ist eine eine rein Konsolen-basierte Anmeldung, nimmst Du den Befehl: nordvpn login –legacy

  4. Wichtige Ports freischalten

    Setze die Port 22 sowie 68 und 69 auf die Whitelist (nordvpn whitelist add port oder nordvpn whitelist add ports)

  5. Wechsle zu NordLynx (optional)

    Nordlynx ist die WireGuard-Option des VPN-Anbieters. Das Protokoll ist schlanker und schneller. Ich benutze es beim VPN-Router lieber als OpenVPN (nordvpn set technology nordlynx)

  6. Deaktiviere die NordVPN Firewall

    Zu Hause brauchst Du diese Firewall nicht und sie kann Probleme bereiten, wenn die VPN-Verbindung ausfällt. Ich fahre auf dem VPN-Router besser ohne die Firewall (nordvpn set firewall off)

  7. Ändere SSID, Passwort und so weiter bei RaspAP

    Dieser Schritt ist optional, aber wichtig, vor allen Dingen, wenn sich fremde Leute in Deinem Netzwerk befinden, solltest Du das Passwort für RaspAP ändern. An dieser Stelle kann es auch nicht schaden, das Passwort für den Raspberry Pi selbst zu ändern.

  8. DNS-Adressen anpassen

    Bei Deiner RaspAP-Installation kannst Du DNS-Adressen selbst hinzufügen. Um Datenlecks zu vermeiden, nutze am besten die DNS-Server von NordVPN (103.86.96.100 und103.86.99.100)

  9. NordVPN Raspberry Pi Router neu starten

    Im letzten Schritt ist ein Neustart des Systems notwendig. Danach ist Dein VPN-Router einsatzbereit.

Das sollte hervorragend funktionieren. Mein VPN-Router läuft auf jeden Fall wie geschmiert und damit ziehe ich auch meinen Chromecast in ein anderes Land um.

Hinweis: Seit NordVPN Linux Client 3.9.0 kannst Du Dir selbst aussuchen, ob die Firewall aktiviert werden soll oder nicht. Das geht so:

nordvpn set firewall on/off

Das könnte helfen, wenn Du keine Verbindung übe den Router bekommst.

Friert Deine Verbindung hin und wieder ein, kannst Du das vielleicht mit so einem Script abfedern:

! /bin/bash

PING="/bin/ping -q -c1"
HOST=example.com

${PING} ${HOST}
if [ $? -ne 0 ]; then
/usr/bin/systemctl restart nordvpnd.service
sleep 45
/usr/sbin/runuser -l pi -c 'nordvpn c DE'
fi

Anpassen musst Du hier HOST, wenn Du etwas anderes anpingen möchtest und möglicherweise den Anwender nach runuser -l – in meinem Fall steht hier pi, weil das Script auf einem Raspberry Pi läuft. Im Endeffekt startet sich der NordVPN-Daemon neu, wenn der Ping fehlschlägt und verbindet sich dann nach einer gewissen Zeit mit Deutschland. Auch das kannst Du anpassen.

Was brauchst Du, um aus Deinem Raspberry Pi einen VPN-Router zu machen?

Ich würde Dir raten, einen Pi 3 oder höher zu benutzen. Es ist am einfachsten, weil diese Modelle sowohl Ethernet-Schnittstelle als auch WLAN-Netzwerkkarte haben.

Außerdem benötigst Du eine microSD-Karte und es gibt kaum noch welche unter 16 GByte. Eine angemessene Stromversorgung ist natürlich auch notwendig. Zum Schutz bietet sich noch ein Gehäuse an, das muss aber nicht sein.

Ebenso gehe ich davon aus, dass Du auf Deinem Raspberry Pi die Hotspot-Lösung RaspAP installiert hast. Du könntest auch manuell mit dnsmasq, hostapd und so weiter hantieren. Das muss aber wirklich nicht sein, da Dir RaspAP nicht nur viel manuelle Konfigurationsarbeit abnimmt, sondern Du auch eine grafische Administrationsoberfläche bekommst.

Installierst Du RaspAP zuerst, wird Dein Pi ganz schnell zu VPN-Router
Installierst Du RaspAP zuerst, wird Dein Pi ganz schnell zu VPN-Router

Außerdem benötigst Du natürlich ein Virtual Private Network (VPN). Wie bereits erwähnt, funktioniert jeder Anbieter, der manuelle OpenVPN-Konfiguration ermöglicht. Die Vorteile des Linux-Clients von NordVPN habe ich bereits erwähnt.

Mein Pi war übrigens auch auf dem neuesten Stand.

sudo apt dist-upgrade

Ich aktualisiere grundsätzlich alle Pakete, bevor ich neue Sachen installieren.

NordVPN auf dem Raspberry Pi installieren

Willst Du meiner Anleitung folgen, brauchst Du ein Abonnement bei NordVPN. Du erstellst Dir damit ein Raspberry Pi NordVPN Gateway. Toll ist, dass der VPN Provider eine 30-tägige Geld-Zurück-Garantie anbietet. Du kannst zunächst ausprobieren, ob Dein Raspberry Pi vernünftig als VPN-Router läuft und wenn nicht, verlangst Du Dein Geld einfach wieder zurück. Der Anbieter stellt keine dummen Fragen und erstattet normalerweise sehr schnell.

NordVPN risikofrei testen*

Mein Raspberry Pi läuft headless, also ohne Peripheriegeräte wie Bildschirm, Maus und Tastatur. Ich melde mich via SSH am Gerät an. Danach lade ich die deb-Datei von NordVPN herunter.

wget -c https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb

Im Anschluss installierst Du die Datei:

sudo dpkg -i nordvpn-release_1.0.0_all.deb

Die deb-Datei trägt im Endeffekt nur das Repository ein. Nun aktualisierst Du die Paketinformationen und installierst danach den Linux-Client von NordVPN.

sudo apt update

sudo apt install nordvpn

Das sieht dann so aus:

NordVPN unter Raspbian Buster installieren
NordVPN unter Raspbian Buster installieren

NordVPN Client konfigurieren

Als ersten Schritt meldest Du Dich am Client mit Deinen Zugangsdaten von NordVPN an:

nordvpn login

Der Client fragt nun nach Username und Passwort.

Der Linux Client von NordVPN stellt eine sogenannte Whitelist zur Verfügung. Ich hinterlege hier sicherheitshalber Port 22, damit der SSH-Zugriff auf jeden Fall möglich ist.

nordvpn whitelist add port 22

Die Einstellungen des Clients kannst Du jederzeit so anzeigen lassen:

nordvpn settings

Eine Schnellverbindung mit dem Netzwerk von NordVPN stellst Du so her:

nordvpn c

Allerdings funktioniert ab diesem Zeitpunkt RaspAP oder der Hotspot nicht mehr vernünftig! Bist Du mit dem Pi-Hotspot verbunden, ist alles kein Problem. Aber neue Verbindungen sind nicht mehr möglich.

NordVPN verändert iptables (sofern Firewall aktiv)

Der Grund für das Verhalten ist, dass der Linux Client von NordVPN iptables modifiziert, wenn die Firewall des Linux-Clients aktiviert ist. Ich empfehle Dir, die Firewall zu deaktivieren, weil das viel Kopfschmerzen spart. Will Du dennoch mit aktiver Firewall weitermachen, sind hier ein paar Hinweise und Tipps:

Du kannst die aktuellen Regeln wie folgt einsehen:

sudo iptables -S

Machst Du das vor und nach einer Verbindung, dann siehst Du, was ich meine.

iptables vor und nach einer Verbindung zum NordVPN-Netzwerk
iptables vor und nach einer Verbindung zum NordVPN-Netzwerk

Will ich mich nun zum Pi Hotspot verbinden, bekomme ich nicht einmal mehr eine IP-Adresse. Führe ich die beiden nachfolgenden Befehle aus, weist mir der Hotspot wieder eine IP-Adresse zu:

sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT

Allerdings routet mich das Gerät nicht durch und ich haben keinen Zugriff auf das Internet. Dafür sind noch nachfolgende iptables-Einträge notwendig.

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT

Nun funktioniert die Sache, allerdings gibt es einen Haken.

Einstellungen für NordVPN Router permanent machen

Mit den Befehlen oben sind die Einstellungen nur temporär. Sie wären also verloren, wenn Du den Raspberry Pi zum Beispiel neu startest. Die beiden ersten Befehle werden außerdem überschrieben, sobald Du Dich mit einem anderen NordVPN-Server verbindest.

Nun gibt es mehrere Optionen, die Einstellungen permanent zu machen. Ich möchte natürlich, dass sich NordVPN gleich mit Systemstart verbindet. Ein Cronjob via Datei /etc/crontab ist eine Option. Dafür lege ich zunächst eine Skript-Datei an, die bei mir einfach nordvpn.sh heißt

nano nordvpn.sh

und folgenden Inhalt hat:

NordVPN auf dem VPN-Router mit Verzögerung starten
NordVPN auf dem VPN-Router mit Verzögerung starten

Die Zeile mit sleep 30 brauche ich, da der Daemon von NordVPN anscheinend bei Systemstart nicht sofort bereitsteht und der Befehl

nordvpn c UK

ins Leere läuft. Wie Du Dir denken kannst, verbindet mich der Befehl mit einem Server in Großbritannien. Vielleicht willst Du Dich lieber mit der Schweiz verbinden, um Zattoo Schweiz gucken zu können. Fast werbefreies Formel 1 und diverse andere Sportveranstaltungen sind dann möglich. Auch RTL Live Stream ist damit kostenlos möglich.

Ich habe es mit sleep 20 versucht, aber da hat die Sache manchmal geklappt, manchmal nicht. Bei einem Systemstart sind 30 Sekunden Wartezeit schon zu verschmerzen. Ich mache die Datei außerdem noch ausführbar. 

chmod +x nordvpn.sh

Nun trage ich in der Datei /etc/crontab diese Zeile am Ende ein:

@reboot pi /home/pi/nordvpn.sh

Das sieht dann so aus:

Beim Systemstart verbindet sich das VPN und macht meinen Raspberry Pi zum VPN-Router
Beim Systemstart verbindet sich das VPN und macht meinen Raspberry Pi zum VPN-Router

Tipp: Möchtest Du das Script via /etc/rc.local ausführen, dann pass auf, dass der Befehl als Anwender pi abgefeuert wird. Die Anmeldedaten des NordVPN-Clients sind für die einzelnen User gespeichert. Die Datei rc.local wird per Standard aber von root ausgeführt!

su pi -c '/Pfad/zum/Script'

So müsstest Du das ausführen, wenn sich der User pi bei NordVPN angemeldet hat.

VPN automatisch wieder verbinden – VPN-Router muss neu konfiguriert werden

Nun kann es sein, dass die Verbindung zum VPN-Netzwerk ausfällt. In diesem Fall würde der Datenverkehr Deines Geräts nicht mehr über das VPN-Netzwerk geroutet. Wir wollen, dass sich das VPN bei einem Ausfall automatisch wieder verbindet. Das erreichst Du mit dem Befehl:

nordvpn set autoconnect on

Damit würde sich der VPN-Client bei einem Neustart übrigens auch automatisch verbinden. Allerdings fehlen und dann die iptables-Einträge und deswegen lasse ich mein Skript bei Systemstart so oder so ausführen.

Du kannst auch direkt ein Land angeben:

nordvpn set autoconnect enabled CH

Nun würde sich die Software automatisch mit der Schweiz verbinden.

Was passiert, wenn die Verbindung ausfällt?

Ich habe den Router vom Internet getrennt (Kabel gezogen) und eine Minute gewartet, was passiert. Nach dem Einstecken des Kabels hat sich die DSL-Leitung zunächst synchronisiert und kurz darauf war die Internet-Verbindung wiederhergestellt.

Mein VPN-Router hat noch wie vorher funktioniert. Willst Du auf Nummer Sicher gehen, könntest ein weiteres Mini-Script auch jede Minute als Cronjob laufen lassen. Zum Beispiel als User pi die Crontab aufrufen:

crontab -e

und danach folgende Zeile eintragen:

* * * * * /home/pi/nordvpn-minute.sh > /dev/null 2>&1

Ist alles in Ordnung, hat das Script keine Auswirkungen. Steht die VPN-Verbindung, wird sie nicht nochmal etabliert. Sind die iptables-Einstellungen korrekt, überschreibt sie das System nicht. Die Ausgabe des Cronjobs verschwindet außerdem komplett in /dev/null.

nordvpn-minute.sh als minütlicher Cronjob auf dem VPN-Router
nordvpn-minute.sh als minütlicher Cronjob auf dem VPN-Router

Der Grund für das Script ist klar. Sollte sich der VPN-Daemon komplett neu verbinden, setzt er INPUT und OUTPUT auf DROP und damit funktioniert unser Hotspot nicht mehr.

DROP und nicht ACCEPT
DROP und nicht ACCEPT

Ja, das ist eine kleine Holzhammer-Methode, aber sie scheint zuverlässig zu funktionieren. Ich habe es ausprobiert. Lässt Du den Befehl so via Cronjob ausführen, musst Du Dir auch beim Systemstart keine Sorgen machen. Spätestens eine Minute nachdem der NordVPN-Daemon verfügbar ist, wird eine Verbindung zum VPN-Netzwerk hergestellt.

Vielleicht willst Du sogar, dass der VPN-Router nicht mehr funktioniert, sollte es einen Ausfall geben. Das wäre auch eine Art Kill Switch und Du kannst nachsehen, was schief gelaufen ist.

Im Endeffekt musst Du ein bisschen experimentieren, welche Lösung sich für Dich am besten eignet. Aber mit ein bisschen Geduld und etwas Ausprobieren ist Dein VPN-Router schnell einsatzbereit.

Tipp: Sollte Dein Client keine IP-Adresse vom WLAN-Hotspot bekommen, setze die Port 68 und 69 UDP mit auf die Whitelist. Das sind die Ports für DHCP:

nordvpn whitelist add ports 68 69 protocol UDP

Versuche es dann nochmals, eventuell mit einem Neustart dazwischen. Wie bereits oben erwähnt, könnte es auch helfen, die Firewall zu deaktivieren. Hier musst Du etwas experimentieren.

Ein paar Denkanstöße

Vielleicht willst Du Deinen VPN-Router einmal pro Tag neu starten. Das könntest Du ebenfalls mit einem Cronjob erledigen.

Trennst Du die VPN-Verbindung und meldest Dich dann neu an, bekommst Du vielleicht einen schnelleren Server zugewiesen.

Ziemlich schick wäre ein WebGUI, bei dem Du das gewünschte Land eingeben kannst, mit dem Du Dich verbinden willst.

OpenVPN-Verbindung via ovpn-Datei

Die meisten guten VPN-Provider stellen ovpn-Dateien zur Verfügung, damit Du eine OpenVPN-Verbindung manuell einrichten kannst. Clients haben den Vorteil, dass Du das Land bequemer wechseln kannst. Im Fall von NordVPN kannst Du wie erwähnt CyberSec und auch die Stealth Server nutzen.

Eine Verbindung via ovpn-Datei hat den Vorteil, dass der Hotspot ohne weitere Verrenkungen wie gehabt funktioniert. Der Befehl trägt überhaupt keine neuen iptables-Regeln ein.

Damit das funktioniert, musst Du auf dem Raspberry Pi zunächst OpenVPN installieren:

sudo apt install openvpn

Danach holst Du Dir die gewünschte ovpn-Datei. Um beim Beispiel NordVPN zu bleiben, findest Du die OpenVPN-Konfigurationsdateien für alle Server auf dieser Seite. Die Liste ist ziemlich lang und suchst Du einen bestimmten Server, ist die dafür zuständige Seite angenehmer.

ovpn-Datei für Deinen VPN-Router herunterladen
ovpn-Datei für Deinen VPN-Router herunterladen

Das reicht schon, um eine Verbindung herzustellen. In neueren Versionen von RaspAP kannst Du einen OpenVPN-Client installieren und die .ovpn-Datei direkt in der Web-Oberfläche importieren.

OpenVPN-Client in RaspAP
OpenVPN-Client in RaspAP

Manuell funktioniert das natürlich auch.

sudo openvpn uk1418.nordvpn.com.udp.ovpn &

Nun möchte der Vorgang aber mit Username und Passwort gefüttert werden. Das dürfte bei den meisten VPN-Anbietern Standard sein.

Username und Passwort bitte
Username und Passwort bitte

Für einen Test ist das OK, aber eine automatische Verbindung ist damit nicht möglich. Deswegen legst Du eine Datei an, zum Beispiel logindaten.txt, die im gleichen Verzeichnis wie die ovpn-Datei ist.

In der ersten Zeile steht der Username und in der zweiten Zeile das Passswort!

Im Anschluss trägst Du die nachfolgende Zeile in Deiner ovpn-Datei ein oder modifizierst sie entsprechend: auth-user-pass logindaten.txt

auth-user-pass logindaten.txt
auth-user-pass logindaten.txt

Rufst Du nun den OpenVPN-Befehl von oben erneut auf, meldet sich Dein System automatisch beim VPN-Server an. Jetzt kannst Du den Vorgang auch automatisieren.

Vorsicht! DNS-Leck!

Allerdings benutzt Du nun weiterhin die DNS-Server des Hotspots. Hast Du sie nicht geändert, sind das die von RaspAP festgelegten 1.1.1.1 (Cloudflare) und 8.8.8.8 (Google). Du findest sie in der Datei /etc/dhcpcd.conf, da dort die statische IP-Adresse von wlan0 hinterlegt ist.

Das ist im Prinzip eine DNS-Leck. Bei meiner Lösung oben mit dem Client, nutze ich auch die DNS-Server des VPN-Anbieters und damit sind auch meine DNS-Anfragen anonymisiert.

Natürlich kannst Du das auch anders lösen. Vielleicht hast Du sowieso ein Pi-Hole im Netzwerk und nutzt den als DNS-Server. Hier gibt es viele Möglichkeiten, unter anderem auch FreeDNS. Ich wollte nur auf das potenzielle DNS-Leck an dieser Stelle hinweisen.

Im DHCP-Server Deines RaspAP-Hotspots kannst Du ebenfalls DNS-Server hinterlegen, die die Clients bekommen. Dort kannst Du zum Beispiel die DNS-Server von NordVPN eintragen, um DNS-Lecks zu vermeiden: 103.86.96.100 und 103.86.99.100.

Funktioniert das auch mit NordLynx (WireGuard)?

Wer einen aktuellen Client installiert hat, der hat auch bei NordLynx eine einheitliche Netzwerk-Schnittstelle. Sie nennt sich nordlynx. Hier ein Screenshot:

Bei neueren Clients ist die Schnittstelle einheitlich
Bei neueren Clients ist die Schnittstelle einheitlich

Nun kann ich auch entsprechenden Routing-Einträge machen. WireGuard ist geringfügig schneller als OpenVPN und Du kannst Dir selbst überlegen, was Du benutzen möchtest. Die Lösung mit OpenVPN als VPN-Router funktioniert sehr sauber und das ist ebenfalls keine Schnecke.

Geschwindigkeitsmessung mit OpenVPN – das reicht für den VPN-Router
Geschwindigkeitsmessung mit OpenVPN – das reicht für den VPN-Router

Verwendest Du einen aktuellen Client mit einheitlichen Schnittstellen-Namen, sehen die Regeln wie folgt aus (ich empfehle Dir außerdem, die Firewall von des NordVPN-Clients zu deaktivieren: nordvpn set firewall off):

sudo iptables -t nat -A POSTROUTING -o nordlynx -j MASQUERADE
sudo iptables -A FORWARD -i nordlynx -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o nordlynx -j ACCEPT

Hast Du nun Lust, Dir selbst einen VPN-Router zu basteln? Es ist wirklich nicht schwer und NordVPN ist ein guter Partner dafür.

NordVPN für Deinen VPN-Router*

Wie gesagt, sollten die meisten renommierten VPN-Anbieter die Ressourcen für Dein Vorhaben zur Verfügung stellen. Ich mag NordVPN, weil ich den Kommandozeilen-Client unter Linux nutzen kann. Der Anbieter stellt aber auch einen tollen Android-Client zur Verfügung. Es ist einer der benutzerfreundlichsten Anbieter, die es gibt.

Normalerweise kannst Du bei NordVPN bis zu 6 Geräte gleichzeitig nutzen. da VPN-Router erlaubt sind, zählt Dein Raspberry Pi als 1 Gerät, egal wie viele andere damit verbunden sind.

Der VPN-Anbieter gestattet auch Torrent-Downloads und P2P-Verbindungen / Filesharing.

FAQ – häufig gestellte Fragen zu VPN-Router via Raspberry Pi

Warum brauche ich einen VPN-Router?

Das hat mehrere Gründe. Zum einen wird ein VPN-Router nur als 1 Gerät gezählt. Du kannst danach so viele Geräte wie Du willst, mit dem Router verbinden. Zum anderen kannst Du damit auch Geräte mit dem VPN verbinden, für die es keinen Client gibt – Smart-TVs, Chromecast und so weiter. Nachfolgend siehst Du einen Chromecast, der ebenfalls mit dem VPN-Router verbunden ist.Chromecast mit VPN-Router verbunden

Welche Vorteile hat ein Raspberry Pi VPN-Router?

Du kannst nicht auf alle Router ein VPN installieren. Häufig musst Du die Firmware des Routers flashen und andere manuelle Eingriffe durchführen. Mit einem VPN bist Du sehr flexibel und kannst Dir günstig einen VPN-Router basteln. Gibt es noch einen Client für den Raspberry Pi, ist das umso besser und Du hast schnell einen Raspberry Pi NordVPN Gateway konfiguriert.

Darf ich mein VPN auf einem Router installieren?

Die meisten Top-VPNs erlauben die Installation auf einem Router. NordVPN* und Surfshark* darfst Du auf jeden Fall auf einem Router einsetzen.

Was sind die besten VPNs für einen Router?

Grundsätzlich sind die VPNs am besten, die OpenVPN-Konfigurationsdateien (.ovpn) zur Verfügung stellen. Nimmst Du die hier vorgestellte Methode mit einem Raspberry Pi, dann eignen sich solche VPNs am besten, die einen Kommandozeilen-Client für den Raspberry Pi anbieten. Ein NordVPN Raspberry Pi Router lässt sich damit auf jeden Fall einfach basteln.

Funktioniert ein Raspberry Pi VPN-Router auch mit 2 WLAN-Schnittstellen?

Theoretisch schon, dann übernimmt die zweite Wi-Fi-Schnittstelle (USB-WLAN-Karte) den Part der Ethernet-Schnittstelle. Wenn es möglich ist, würde ich aber eine Kabelverbindung für das Interface vorziehen, das mit dem Internet verbunden ist. Das ist meiner Erfahrung nach stabiler.

Kann ich einen NordVPN Router selbst basteln?

Ja. Das ist gar nicht so schwer, macht Spaß und Du kannst dabei jede Menge über Raspberry Pi und Linux lernen. Folge einfach meiner Schritt-für-Schritt-Anleitung hier und Dein NordVPN Raspberry Pi Router läuft mit wenig Aufwand.




 Alle Kommentare als Feed abonnieren

27 Kommentare zu “Raspberry Pi VPN-Router – RaspAP und NordVPN / OpenVPN (einfach)”

  1. kartoff3l says:

    Ich finde deine Beiträge hier immer sehr interessant und überlege schon seit längerem ein VPN zu verwenden. Was mich immer davon abhält, ist mein Pi-Hole. Ich möchte bei Verwendung eines VPN nicht auf den tollen Werbeblocker des Pi-Holes verzichten. Wie hast du das gelöst? Nimmst du durch das VPN wieder Werbung in Kauf oder hast du eine bessere Lösung?

    • jdo says:

      Nein, Du musst keine Werbung in Lauf nehmen, mache ich auch nicht.
      Erstens hat NordVPN mit CyberSec selbst einen Adblocker. Aktivierst Du ihn, profitieren aller mit dem VPN-Router verbundenen Geräte davon. Außerdem könntest Du beim NordVPN Client sogar selbst einen DNS-Server hinterlegen und der könnte auf das Pi-Hole zeigen.
      Nimmst Du eine normale OpenVPN-Verbindung, stellst Du einfach den DNS-Server von RaspAP auf Dein Pi-Hole um (wie im Beitrag beschrieben über die Datei /etc/dhcpcd.conf). Alle Clients nehmen DNS dann vom Pi-Hole (damit wird geblockt) und der Traffic läuft aber über die VPN-Verbindung.

      • mt says:

        Ist es möglich Pi-hole und den VPN auf dem gleichen Pi laufen zu lassen?

        • jdo says:

          Möglich ist das schon. Allerdings musst Du dann aufpassen, ob das auch wünschenswert ist. Die DNS-Anfragen gehen dann außerhalb des VPN-Netzwerks und das ist ein potenzielles Leck.

          Verwendest Du einen VPN-Client, musst Du außerdem aufpassen, dass der nicht die DNS-Einstellungen ändern möchte, sonst könnten sich die beiden System "beißen".

  2. Kinakuta says:

    Super Tutorial, vielen Dank. Du kannst bei IPTABLES auch Wildcards (*) angeben für die Interface Namen indem du "+" nach dem Namen verwendest. So funktioniert es dann auch Wireguard, weil die nordvpn Anwendung das Interface ja nach dem Server benennt, aber immer nach dem gleichen Muster: nordvpn-SERVER

    Folgendes funktioniert bei mir mit Wireguard:

    sudo iptables -t nat -A POSTROUTING -o nordvpn+ -j MASQUERADE
    sudo iptables -A FORWARD -i nordvpn+ -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -i wlan0 -o nordvpn+ -j ACCEPT

  3. M says:

    Was passiert mit RaspAp wenn den Nordvpn läuft. Werden dann dort die OpenVpn Einträge leer gelassen?

    • jdo says:

      Bei RaspAP? JA. Die Sache ist so: RaspAP erleichtert Dir lediglich die Nutzung von ovpn-client und die Funktion befindet sich derzeit außerdem in einer Beta-Phase. Anders gesagt ist das die gleiche Methode, wie die von mir erwähnte .ovpn-Variante, nur ein bisschen schicker.

      Ein VPN brauchst Du aber so oder so. Deswegen nehme ich aber gleich eines, das mir einen guten Client unter Linux liefert und das ich auch auf Android und anderen Geräten einsetzen kann.

      Selbst wenn Du RaspAP als OpenVPN-Client nimmst, kann es übrigens genau zu den Verbindungsproblemen kommen, die ich beschrieben habe. Das ist bei den Entwicklern bekannt.

  4. M says:

    Danke fuer die Info.
    Benutze schon zwei Jahre NordVPN mit Begeisterung.
    Hatte die RaspAP Variante wie von Dir beschrieben aufgesetzt um ueber die PS4 mit einem O2 LTE Router Online zu spielen, da dieser keine Public IP hat. Das NordVPN Programm hat gegenueber der RaspAP Variante mit OpenVPN den Vorteil, dass er immer automatisch den schnellsten Server waehlt, daher moechte ich jetzt Nordvpn-App drueber installieren. Nehme dann die Daten aus dem OpenVPN in RaspAP raus. Danke nochmal.

  5. chris3107 says:

    Hallo,
    klasse Anleitung. Ich hatte das früher mit einem Banana PI und ovpn selbst gemacht. Sieht ja echt easy aus. Kannst du was zum Datendurchsatz sagen? Wäre der PI4 wegen der GBit Netzwerkschnittstelle am Besten?

    Danke

    • jdo says:

      Also ich benutze es derzeit mit einem Pi4, aber habe momentan nur eine 16 MBit Leitung ... Die ist aber kein Problem, das macht der

  6. chris3107 says:

    Vielen Dank. Könntest du mir vielleicht noch sagen was der Pi4 an Strom zieht wenn Ovpn läuft?
    Laut Tests sind es im normalen Betrieb 3-6 Watt. Kommt das auch bei dir hin?

    • jdo says:

      Das kann ich Dir leider nicht sagen, weil mir die notwendige Hardware dafür fehlt. Auf Deutsch: Ich habe kein Strommessgerät ...

      Was ich Dir sagen kann, weil ich es gerade versucht habe: mit einem Gerät verbunden und einem Speedtest gehen die 4 Cores eigentlich nicht selten 20 % Auslastung. Wenn ein Core drüber und bei 25 % ist, hängt ein anderer meist bei um die 10 % rum. Load ist bei 0,3 ... also das packt der ...

  7. chris3107 says:

    Danke dir. Ich denke mal die 2 GB Variante sollte reichen, wenn ich nur ovpn nutzen möchte, oder?

    • jdo says:

      Wenn nichts anderes darauf läuft, locker. Ich habe gerade noch mal geschaut und mit aktivem VPN braucht der Pi (headless versteht sich) gerade 200 MByte. Da ist ordentlich Luft nach oben …

  8. chris3107 says:

    Hallo,
    ich habe nun einige Versuche gemacht mit dem PI 4. Bei meiner 400Bmit Leitung bekomme ich über Nordvpn mit dem Linux client ca 80 MBit Durchsatz jedoch mit dem allgemeinen Openvpn-client ca 120 Mbit Durchsatz.

    Allerdings hängt sich der openvpn nach ca 10 Stunden auf. Bei beiden Clients. An der Überhitzung liegt es nicht. CPU ist bei 45 Grad.
    Läuft bei dir alles stabil?

    • jdo says:

      Von solchen Geschwindigkeiten kann ich nur träumen. Ich habe eine 16 MBit Leitung und damit läuft der Router aber stabil.
      Ein Script überwacht aber alles bei mir und wählt sich automatisch wieder ein.
      Wie viel bekommst Du mit NordLynx?

  9. chris3107 says:

    Ich habe NordLynx noch nicht ausprobiert. Ist es deiner Meinung nach einen Versuch wert?

    • jdo says:

      War bei mir schneller als OpenVPN (NordVPN Client) ... würde ich schon Mal testen

      Ist OpenVPN Client auch instabil, wenn Du mit Absicht per Wondershaper drosselst?

  10. TREX says:

    Hi,

    wie stellst du denn eigentlich fest, dass du eine VPN Verbindung hast?

    nordvpn sagt da ja leider nichts dazu? Also ausser nordvpn status...connected /disconnected

    beste Gruesse

    • jdo says:

      Du bekommst doch damit auch Informationen, wie Deine neue IP-Adresse ist.
      Hast Du den Killswitch aktiviert, dann ist ohne Verbindung zum VPN gar keine Internet-Verbindung vorhanden.
      Ich verstehe die Frage auch nicht ganz. Mit welchem Gerät willst Du feststellen, dass die VPN-Verbindung hergestellt ist?
      Du kannst auch die Website des Anbieters besuchen. Bist Du in seinem VPN, steht oben auf der Website in grün "protected"

  11. TREX says:

    Hi,

    nach meiner Erfahrung wird die nordvpn-minute.sh immer ausgeführt und führt dazu dass ich alle Minute eine neue IP Adresse bekomme und korrekterweise auch die Verbindung wieder neu aufgebaut wird.

    Gibt es da ein aktuell anderes Verhalten beim Aufruf von nordvpn c UK? Also keine Prüfung ob vorhanden sondern immer ein Neuaufbau einer VPN Verbindung?

    War das früher vielleicht anders?

    • jdo says:

      Ist NordVPN auf Autoconnect gestellt, dann verbindet es sich sowieso selbst. Der Cronjob ist nur da, dass das Routing funktioniert. Aber das mit dem Script und der E-Mail aus dem anderen Kommentar ist sicherlich auch eine akzeptable Lösung.
      Genau das mag ich an solchen Basteleien, dass man sie sich genau auf seine eigenen Vorlieben hindengeln kann 🙂

  12. TREX says:

    Jürgen,
    ich dachte dass es ausser der nordvpn status meldung vielleicht noch eine Möglichkeit gibt den VPN Status auch im Raspi festzustellen....

    Jetzt muss ich vermutlich ein Skript bauen das mir ebim Abbruch einer Verbindung eine Nachricht schreibt... 😉

    Danke.

    • jdo says:

      Gibt es sogar ... Wenn die Netzwerkschnittstelle "up" ist, sollte eine Verbindung hergestellt sein ... Müsste ich aber selbst experimentieren damit ...

  13. Thomas says:

    Hallo,

    ist es mögliche LibreElec gleichzeitig als VPN Router und zum kodi schauen zu nutzen?
    Danke
    Gruss T

    • jdo says:

      Theoretisch vielleicht, einfach ist es meiner Einschätzung nach aber nicht. Wie viel manuelle Eingriffe notwendig sind, kann ich auch nicht sagen. LibreElec ist halt genau darauf ausgelegt, Kodi zu betreiben und nicht mehr.
      Ich würde es ehrlich gesagt auch nicht tun. Lieber 2 Systeme mit separaten, dedizierten Aufgaben.