DIY VPN Router mit dem Raspberry Pi, OpenWrt und openVPN

In Zeiten von Video on Demand und gemischt-sprachigen Haushalten gibt es eines was so richtig nervt: Geoblocking. Meine Freundin möchte gern Inhalte aus ihrem Heimatland (Spanien) sehen, die leider nicht immer hier (Deutschland) verfügbar sind. Natürlich kann ich ihr einen VPN Client einrichten, aber sie ist jetzt auch kein richtiger Techie. Da kam die Idee einen AP (Access Point) aufzusetzen, der direkt in ein gewünschtes Land tunnelt. Man kann sich dann kinderleicht mit dem WiFi des VPN Router verbinden, statt dem normalen Heim-WLan und schon ist man virtuell da, wo man sein will. Damit kann man natürlich noch andere tolle Dinge im Netz machen, u know what i mean 🙂

Eigentlich wollte ich einen alten <$>TP-Link Router</$>, den ich als Repeater in der alten Wohnung benutzt hatte, nutzen. Die Firmware ließ sich aber nicht mit dem OpenWrt Image per Update überschreiben, wie es eigentlich hätte sein sollen. Dann hab ich an den Raspberry Pi gedacht. Und da kann man ganz leicht OpenWrt aufspielen:

Hardware auswählen & Image flashen

Zuerst brauchen wir ein geeignetes OpenWrt Image für den Raspberry Pi. Ich nutze den <$>Raspi 4b+</$>. Hier verlinkt ist ein Set mit Netzteil und Housing etc. Man merkt, das ganze Projekt ist aktuell nicht ganz billig. 150€ für einen Raspi, den wir zum VPN Router machen…

Aktuell ganz neu: Der <$>RaspberryPi 5</$>. Mit über 100 tacken auch nicht gerade ein Schnäppchen. Evtl. habt ihr ja noch einen 3b+ rumfliegen.

Außerdem brauchen wir eine SD-Karte. Spart hier nicht am falschen ende, da ggf. die SD Karte nach X-Zyklen den geist aufgibt.

Zurück zum Image: Eigentlich wäre es so: Je nach dem welchen Pi ihr benutzt, müsst ihr einmal <hier/> schauen, dass ihr das richtige Image findet.


Aber: Bei GitHub hostet jemand ein Voreingerichtetes Image, wo man nicht alles konfigurieren muss.
<zum Image/>. Ich habe das ext4-factory Image genommen.

Ich nutze wie immer den geliebten Pi Imager, den ihr von den Websiten des Raspi-Projekts runterladen könnt.

Wir wählen unter Betriebssystem – OS Wählen im Dropdwon den Punkt „Eigenes Image“. Dann stecken wir noch die SD-Karte ein, wählen diese unter „SD-Karte wählen“ aus – Achtung, sicher ist sicher, nicht dass ihr eure Festplatte flasht – und starten den Flash vorgang.

Nun meldet sich ggf. Windows einmal und möchte die Karte formatieren. Einfach schließen, das brauchen wir nicht. Wenn alles geklappt hat stopfen wir die SD Karte in den Slot des RaspberryPi. Diesen verbinden wir am besten per Netzwerkkabel mit unserem Router und schließen den Strom an. Wer hat, kann den Raspi in ein schickes Gehäuse stecken. Nun sollte der Raspi booten und wir sehen ein neues Netzwerk „OpenWrt“. Das Kennwort steht auch in der Repo von Rehan Kumar und lautet „tastypi1$2“.

Root Passwort vergeben & openwrt einrichten

Wir können im Browser die 10.10.10.1 in die Adresszeile eingeben und landen auf der Weboberfläche unseres neuen VPN Routers. Als erstes müssen wir nun ein root-passwort vergeben. Nun geht einmal auf eine neue Website (am besten in einem neuen Tab) und testet, ob der Raspi euch durchstellt. Wenn alles geklappt hat, gehts weiter. Sorry das ich hier nicht so viele Screenshots wie sonst hab, aber ich hab das System schon am laufen, will nicht von vorne Anfangen und hab aktuell keinen Spare Raspi rumfliegen.

OpenWrt updaten

Nun laden wir uns doch noch ein aktuelles Image <hier/> von OpenWrt. Und zwar das Sysupgrade, damit unsere Einstellungen nicht überschrieben werden:

Dazu gehen wir im Web Interface von OpenWrt (im Browser 10.10.10.1 eingeben) auf den Reiter System – Backup/Flash Firmware. Hier wählen wir im Feld das Image aus und bestätigen um das System zu aktualisieren. Nicht wundern, danach sieht das ganze Interface viel moderner aus 🙂

So lange wir also noch mit dem OpenWrt Verbunden sind, können wir wieder 10.10.10.1 aufrufen.

openVPN installieren

Nun wollen wir openVPN installieren. Ohne das wäre es ja kein VPN Router, sondern nur ein openWRT Router. Das geht entweder hacker-mäßig über das geliebte Terminal oder eben n00b-style per Web-Interface.

Terminal

Wir sind aktuell immernoch mit dem openWRT Wifi verbunden, öffnen die Konsole (aka. das Terminal, aka PowerShell) (Win + R – cmd – enter) oder über das Startmenü.

Hier geben wir den folgenden Befehl ein:

ssh root@openwrt

Nun werden wir nach dem Passwort gefragt und ob wir dem Host vertrauen möchten.

Zunächst wollen wir mal schauen ob es nicht updates gibt. Also tippen wir folgendes ein:

opkg update

Dann installieren wir open vpn:

opkg install openvpn-openssl

Ich hatte das natürlich schon vorher gemacht, daher hier ein wenig anderer Text.

Als nächstes brauchen wir noch:

opkg install ip-full

und:

opkg install luci-app-openvpn

Jetzt können wir wieder ins Webinterface wechseln, uns einmal ausloggen und dann wieder anmelden. Nun sehen wir hier das es den neuen Reiter gibt:

Alternative per Webinterface

Wer lieber im Webinterface bleibt kann einfach über den Reiter System – Software gehen und die gleichen Pakete installieren:

Hier suchen wir im Suchfeld nach openvpn und installieren die Version mit openSSL.

Dann wieder das Paket ip-full:

Und natürlich das Paket fürs Webinterface: luci-app-openvpn.

OpenVPN einrichten

Nun können wir unser openVPN einrichten. Ich nutze dazu ovpn Files von NordVPN, da ich hier bereits Kunde bin. Die Files für die jeweiligen Länder findet ihr hier:

https://nordvpn.com/de/ovpn/

Da wir ja erstmal nach Spanien wollen, suchen wir mit Strg + F nach es (dem Ländercode von Spanien) und werden so schnell fündig.

Nun haben wir die Wahl zwischen einer UDP und einer TCP File. Dabei handelt es sich um Protokolle. Soweit ich es verstanden habe ist UDP etwas schneller als TCP. Wer sich hier einlesen will, kann das ja mal googlen 🙂

Die Datei laden wir jedenfalls einfach runter und laden diese wiederum im Webinterface von openWRT hoch:

Ich nenne meine Konfiguration einfach nordvpn_es.

Nun erscheint es in der folgenden Liste, wo wir auf bearbeiten klicken. Keine Sorge, meine ist schon länger, weil ich das hier alles schon einmal durchgespielt hab.

In der neuen Ansicht sieht es in etwa so aus:

Hier müssen wir bei auth-user-pass den pfad von über dem zweiten Textfeld (im Screenshot blau markiert) kopieren. Bei mir lautet der wie folgt:

auth-user-pass /etc/openvpn/nordvpn_es.auth

Unten in das Textfeld müssen nun unsere NordVPN authentication credentials rein. Um die zu bekommen, loggen wir uns auf NordVPN ein, und gehen zunächst auf NordVPN (linker Rand) und dann ganz unten auf manuell einrichten.

Nun sollen wir unsere E-Mail verifizieren, in dem wir den Code eingeben, der uns an unsere E-Mail adresse geschickt wurde.

Nun sehen wir unsere Username und das Kennwort:

Diese müssen wir nun in das Textfeld kopieren und zwar einfach in zwei zeilen wie hier beispielhaft dargestellt:

Das speichern wir (weiter unten ist der grüne Save button) und sind damit eigentlich schon fertig mit unserem VPN Router. Auf der vorherigen Seite drücken wir nun einfach auf Start und die Verbindung wird aktiviert.

So könnt ihr euch einfache VPN-Tunnel in verschiedene Länder einrichten, die ihr bequem per Webinterface und klick auf Start wechseln könnt. Username und Passwort sind immer dieselben. Nur der Pfad mit der auth-datei muss entsprechend angepasst werden.

FireWall

Wir wechseln in die Firewall einstellungen unter Network – Firewall und klicken bei WAN auf edit. Hier wählen wir im Reiter Advanced Settings bei covered device unseren VPN-Tunnel und speichern:

Wir fügen einen neuen Eintrag hinzu per Button „add“. Ich nenne den einfach vpnfirewall. Hier stellen wir die settings wie auf dem Screenshot ein:

Das ganze speichern wir und danach nochmal mit save&apply.

Wenn ihr das Webinterface von allen Rechnern im Heimnetz erreichen möchtet, müsst ihr beim WAN den input auf accept setzen. Dann könnt ihr auch vom Heimnetz aus entspannt per ssh auf den Raspi zugreifen. Euer Hauptrouter vergibt dann eine Ip unter der ihr den Raspi wie gewohnt erreicht.

Ich hoffe ich hab nix vergessen 🙂

$ Die mit einem $ gekennzeichneten Links, sind Affiliate Links. Wenn du über diese in den Shop gelangst und etwas kaufst, bekomme ich eine kleine Provision

Schreibe einen Kommentar

Geb mir einen aus :)

Wenn du das Zeug hier magst, denk doch über eine Spende nach um Server und Domain zu finanzieren.

$ Die mit einem $ gekennzeichneten Links, sind Affiliate Links. Wenn du über diese in den Shop gelangst und etwas kaufst, bekomme ich eine kleine Provision.

Suche & Filter