Raspberry Pi als VPN Gateway mit NordVPN

VPN-Gateway NordVPN

In wenigen Schritten hast du die Möglichkeit deinen Raspberry Pi in ein VPN Gateway zu verwandeln. Dies hat den Vorteil, dass jedes Endgerät deines Heimnetzwerks die Vorteile von NordVPN nutzen kann.

NordVPN

NordVPN ist einer der bekanntesten und beliebtesten VPN Anbieter weltweit. Dies ist vor allem darauf zurückzuführen, dass dieser Anbieter eine Vielzahl an Sicherheitsfunktionen sowie eine sehr Verschlüsselung bietet. Darüber hinaus bricht NordVPN immer wie Geschwindigkeitsrekorde. Dies ist darauf zurückzuführen, dass der Anbieter eine abgewandelte Version der VPN Software WireGuard mit der Bezeichnung NordLynx einsetzt. Ein weiterer Pluspunkt des VPN Anbieters NordVPN ist, dass dieser auch mit Netflix & Co. sehr zuverlässig funktioniert.

Raspberry Pi

Für dieses Projekt wird ein Rasperry Pi und Rasperberry Pi OS benötigt. Wir empfehlen dir einen Raspberry Pi mit folgenden Spezifikationen:

  • Raspberry Pi 4 mit 4GB Arbeitsspeicher (Link)
  • 64GB SD-Karte (Link)
  • Originales Raspberry Pi Netzteil (Link)
  • Gehäuse inkl. Lüfter (Link)

Alternativ kannst du auch ein aufeinander abgestimmtes Raspberry Pi 4 Bundle verwenden. Hier empfehlen wir dir folgendes:

  • Raspberry Pi 4 Model B 4GB  Bundle (Link)

VPN Gateway

Bevor wir im nächsten Schritt mit der Installation des Raspberry Pi beginnen, möchten wir dir noch kurz erklären um was es sich bei einem VPN Gateway handelt. Ein VPN Gateway ist eine zentrale Einheit in deinem Heimnetz, welche es dir ermöglicht, dass alle deine Endgeräte deinen VPN Zugang nutzen können ohne das diese hierfür eine spezielle Software benötigen. Ein weiterer Vorteil dieses VPN Gateways ist, dass die Einstellungen nur einmal zentral umgesetzt werden müssen und dir somit das Leben sehr erleichtern.

Installation

Beginnen wir nun mit der Installation der benötigten Software. Im ersten Schritt müssen wir dafür sorgen, dass dein Raspberry Pi die VPN-Software WireGuard unterstützt. Anschließend werden die von NordVPN bereitgestellte VPN Software installieren. Zum Abschluss installieren wir noch eine Software, mit welcher wir die Geschwindigkeit des VPN Tunnels messen können.

WireGuard

Damit wir sicherstellen können, dass WireGuard seine volle Geschwindigkeit entfalten kann, ist es notwendig die dafür vorgesehene Software zu installieren. Führe hierfür folgenden Befehl aus:

sudo apt install wireguard wireguard-tools

Werbung

Die Installation kann einige Zeit in Anspruch nehmen. Sobald diese abgeschlossen ist, solltest du einen Neustart bei deinem Raspberry Pi durchführen. Sobald du dies erledigt hast können wir mit der Installation der NordVPN Software beginnen.

NordVPN Software

NordVPN bietet ein Installationspaket für die Installation ihrer Software an. Mit folgendem Befehl kannst du dieses herunterladen. Sobald der Download abgeschlossen ist, beginnt die Installation automatisch. Bitte beachte, dass die Prozess wieder einige Zeit dauern kann.

sh <(curl -sSf https://downloads.nordcdn.com/apps/linux/install.sh)
Code-Sprache: JavaScript (javascript)

Sobald die Installation abgeschlossen ist, ist der NordVPN Client bereits einsatzfähig. Bevor du dich das erste Mal verbinden kannst, muss du dich jedoch mittels eines Token anmelden. Wie dieser Schritt funktioniert erklären wir dir im Abschnitt Konfiguration.

Speedtest Software

Damit wir am Ende die tatsächliche Geschwindigkeit des VPN-Tunnels ermitteln können, installieren wir uns nun eine Software, welche für uns eine Messung vornimmt. Hierzu verwenden wir folgenden Befehl:

sudo apt install speedtest-cli

Konfiguration

Nachdem nun alle notwendigen Pakete installiert wurden, kümmern wir uns in diesem Abschnitt um die Konfiguration von NordVPN, die Aktivierung der Routing-Option sowie die Erstellung der notwendigen Firewall-Regeln.

NordVPN Einstellungen

Bevor wir eine Verbindung zu den NordVPN Servern herstellen können, müssen wir uns mittels eines Tokens bei NordVPN anmelden. Diesen Token findest du in deinen Benutzereinstellungen. Melde dich hierfür zunächst auf der Webseite von NordVPN mit deinem Zugangsdaten an. Klick anschließend in der linken Menüleiste unter dem Punkt Dienste auf NordVPN. Etwas weiter unten findest du anschließend den Punkt Zugangstoken. An dieser Stelle kannst du dir nun den notwendigen Token generieren. Bitte beachte hierbei, dass dieser Token nur bei der Generierung dargestellt wird, weshalb wir dir empfehlen diesen an einem sicheren Ort abzuspeichern. Anschließend kannst du dich mit folgendem Befehl bei NordVPN anmelden:

nordvpn login --token TOKEN

Das Schlüsselwort TOKEN musst du hierbei durch deinen eben generierten Token ersetzen. Anschließend solltest du eine Rückmeldung erhalten, dass du dich erfolgreich bei NordVPN angemeldet hast.

Im nächsten Schritt solltest du ein paar weitere Einstellungen vornehmen. Zu diesen zählen die Deaktivierung der NordVPN Firewall. Dieser Schritt ist notwendig, da du dich ansonsten nicht mehr per SSH mit deinem Raspberry Pi verbinden kannst. Im nächsten Schritt aktivieren wir die NordVPN Technologie NordLynx. Sobald du diese Schritte durchgeführt hast, kannst du dich mit einem gewünschten NordVPN Server verbinden. Zur Umsetzung der eben beschriebenen Einstellungen kannst du folgende Befehle verwenden:

nordvpn set firewall disable nordvpn set technology nordlynx nordvpn connect LAND SERVER-STANDORT
Code-Sprache: JavaScript (javascript)

Im letzten Befehl musst du die beiden Punkte LAND und SERVER-STANDORT durch das gewünschte Land und den Server-Standort ersetzen. Hier ein kurzes Beispiel:

nordvpn connect Germany Frankfurt

Raspberry PI Routing

Werbung

Nachdem wir nun mit einem NordVPN Server verbunden sind, müssen wir dafür sorgen, dass alle Datenpakete über den VPN Tunnel geschickt werden. Hierfür müssen wir zunächst eine Option aktivieren, welche das Routing ermöglicht. Hierfür muss der Befehl IPv4.ip_forward in der Datei sysctl.conf aktiviert werden. Hierzu kannst du folgende Befehle verwenden:

sudo nano /etc/sysctl.conf net.ipv4.ip_forward=1 #Suche diesen Befehl und entferne das vorstehende Zeichen
Code-Sprache: PHP (php)

Firewall-Regeln

Nun müssen zusätzlich drei Firewall-Regeln angelegt werden. Diese Stellen dabei sicher, dass jeder ausgehende Datenverkehr über den VPN Tunnel geschickt wird. Darüber hinaus legen diese Regeln fest, dass nur der eingehende Datenverkehr erlaubt ist, welche auf einer internen Anfrage beruht. Die Befehle hierfür lauten:

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

Nun sind wir am Ende der Installation und Konfiguration des VPN-Gateways angelangt, sodass ihr nun ein voll funktionsfähiges VPN Gateway besitzt. Im nächsten Abschnitt geben wir dir noch ein paar Tipps im Umgang mit einem VPN Gateway.

Tipps

Wir möchten dir zum Abschuss noch ein paar hilfreiche Tipps im Umgang mit deinem VPN-Gateway mitgeben. Diese sind ein automatisierter Speedtest, welcher dafür sorgt, dass bei einer langsamen Verbindung automatisch eine Verbindung zu einem neuen NordVPN Server hergestellt wird. Darüber hinaus kam es bei uns vor, dass der NordVPN-Server bei einer längeren Verbindung nicht mehr geantwortet hat, weshalb wir uns eine kleines Shell-Skript geschrieben haben, welches diesen Ausfall bemerkt und anschließend eine neue Verbindung herstellt. Darüber hinaus kann es vorkommen, dass bestimmte Mail-Anbieter wie beispielsweise GMX oder Web.de das Abrufen von E-Mails über einen VPN Dienst blockieren. In diesem Fall müssen diese Verbindungen vom VPN Tunnel ausgenommen werden.

Speedtest

Mit folgendem Shell-Skript kannst du einen automatisierten Speedtest des VPN-Tunnels durchführen. Kopier hierzu einfach folgende Zeilen in eine Datei und erstelle anschließend einen Cronjob.

#!/bin/bash SPEED=$(/usr/bin/speedtest --simple --secure | /usr/bin/awk '$1 == "Download:" { rounded = sprintf("%.0f",$2); print rounded; }') declare -i min=200 #Festlegung der minimalen Geschwindigkeit if [ $(($SPEED)) -lt $min ] then /usr/bin/nordvpn connect Germany >> /dev/null fi
Code-Sprache: PHP (php)

Erreichbarkeit des Server überprüfen

Mit folgendem Shell Skript kannst du unter der Verwendung eines Cronjobs überprüfen, ob das Internet über den jeweiligen VPN Server erreichbar ist:

#!/bin/bash /bin/ping -c1 google.de >/dev/null if [ $? -ne 0 ] then /usr/bin/nordvpn disconnect /usr/bin/nordvpn connect Germany exit 0 fi
Code-Sprache: JavaScript (javascript)

Mail-Anbieter vom VPN-Tunnel ausnehmen

Zum Abschluss zeigen wir dir noch eine Möglichkeit, wie du mit Hilfe einer Firewall-Regel bestimmte Dienste, wie beispielsweise einen Mail-Anbieter von deinem VPN Tunnel ausnehmen kannst. Hierzu musst zunächst ein Shell-Skript mit der Bezeichnung exculde_from_vpn.sh mit folgendem Inhalt anlegen:

#!/bin/sh INTERFACE="dev0" GATEWAY="XXX.XXX.XXX.XXX" #IP-Adresse deines Routes (z.B. FritzBox) for name in $@ do echo "Hostname: $name" for ip in $(dig +short $name) do $(sudo ip route add $ip via $GATEWAY dev $INTERFACE); done done

Dieses Shell-Skript rufst du anschließend mit folgendem Befehl auf:

bash exclude_from_vpn.sh HOSTNAME
Code-Sprache: CSS (css)

Den Hostname musst du hierbei beispielsweise durch imap.web.de ersetzen. Ab jetzt solltest du wieder einen Zugriff auf deine E-Mails haben.

Wenn dir diese Anleitung gefallen hat, würden wir uns über ein kurzes Feedback in den Kommentaren freuen. Wir wünschen dir viel Spaß mit deinem neuen VPN Gateway!

Werbung

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.