NordVPN in unRAID


Tiras

Recommended Posts

Hallo Zusammen,

 

gibt es vielleicht jemanden, der weiß wie man eine VPN Verbindung mit NordVPN herstellen kann?

 

In meinem System sind 2 Netzwerkkarten verbaut. 

eth0 wird verwendet für:

  • VMs
  • Docker mit Networktype = Host

eth1 soll ausschließlich für eine VPN Verbindung verwendet werden. Dazu soll eine Verbindung mit NordVPN hergestellt werden, damit bestimmte Docker-Apps ihre Verbindung dann nur noch über diese VPN herstellen.

 

Leider kann ich die OpenVPN Client App aus dem App Pool nicht installieren und eine anständige Anleitung habe ich auch nicht finden können.

 

Kann mir da vielleicht jemand weiterhelfen?

 

Beste Grüße

Link to comment

Hatte ein ähnliches Problem. Das Hauptproblem ist allerdings, dass du nicht nur bestimmten Docker-Apps den eth1 zuweisen kannst, sondern du nur allen Docker-Containern eine bestimmte Schnittstelle zuweisen kannst.

 

Ich habe das Problem gelöst indem ich eine VM mit Ubuntu aufgesetzt habe, die ausschließlich über VPN nach außen kommuniziert. Von SpaceInviderOne gibt es dazu eine schöne Anleitung. In der VM lasse ich dann auch die paar Programme laufen, die über VPN kommunizieren sollen, halt nativ installiert und nicht als Docker-App. VM nutzt ebenfalls exklusiv eth1.

Edited by Coke84
Link to comment

Das hier sieht mir genau nach der richtigen Lösung aus:

https://jordanelver.co.uk/blog/2019/06/03/routing-docker-traffic-through-a-vpn-connection/

 

Er erstellt den NordVPN Container, der eine Verbindung aufbaut und dann ergänzt er beim anderen Container "--net=container:vpn", damit dieser die Internetverbindung des NordVPN Containers verwendet.

 

In Unraid bedeutet das, dass man einen Container hinzufügt und die Variablen und Pfade usw manuell hinzufügen muss. Eventuell hilft das um zu verstehen wie das geht:

https://forums.unraid.net/topic/99771-solved-container-template-redmine/

 

Link to comment
  • 1 month later...

Guten Morgen zusammen,

 

vielen Dank für Eure Antworten und sorry für die späte Rückmeldung. Ich habe vor 2 Tagen gesehen, dass es in der CA Apps eine App "NordVPN" gibt.

Ich habe die App ausprobiert und in den Einstellungen der App z.B. als Country "Sweden" eingetragen. Anhand meiner Benutzerdaten wurde eine Verbindung aufgebaut. Das konnte ich sehen, als ich über die Console dieser Docker-App "curl ifconfig.io" - wie in dem Video von SpaceInVader beschrieben - eingetragen und ausgeführt habe. Die IP Adresse wurde in Schweden lokalisiert. Soweit alles prima.

Aus der Docker-App "jDownloader2" habe ich eine Verbindung zu der NordVPN Docker-App hergestellt, was auch soweit funktioniert hat. Hier ist mir jedoch folgendes aufgefallen:

  1. In der JD2 Docker-App Console kann ich nur "ifconfig" und nicht "curl ifconfig.io" ausführen. Ich bekomme nur eth0, lo und tu0 angezeigt. eth0 erhält die IP-Adresse der Docker-App "NordVPN", die standardmäßig für Docker verwendet und zu meinem Intranet gemappt wird. lo hat die local IP-Adresse und tu0 hat eine IP-Adresse, die ich nicht nachvollziehen kann, weil sie weder lokalisiert werden kann noch verwende ich diesen IP-Adressraum.
  2. Für mein Vorhaben habe ich die binhex-delugevpn und NordVPN Docker-App getestet. Bei NordVPN kann ich die JD2 GUI aufrufen und bei binhex-delugevpn nur, wenn ich "Privileged" deaktiviere. Wenn ich Privileged deaktiviere, dann kann ich zwar die JD2 GUI aufrufen, aber es wird keine VPN Verbindung hergestellt. Sprich, die Docker-App benutzt die eigentliche IP meines Anschlusses.
  3. Mit NordVPN kann ich nur eine Dedicated VPN Verbindung herstellen. Ich habe eine Windows 10 VM erstellt in der ich die NordVPN App installiert habe. Stelle ich dort beispielsweise eine Double VPN oder Dedicated VPN her, dann ist der DL in dieser VM auf max. 6MBit/s limitiert. Mache ich einen DL-Test mit der JD2 Docker-App mit der ich über die NordVPN Docker-App eine Verbindung hergestellt habe, dann habe ich einen DL von > 14 MBit/s. Das ist die eigentliche DL von meinem Anschluss.

Was ich nun nicht verstehe ist:

  • Wieso bekomme ich in der JD2 Console nicht die IP-Adresse der NordVPN Docker-App angezeigt, wenn ich mit NordVPN eine VPN Verbindung hergestellt habe?
  • Wieso bekomme ich eine tu0 Verbindung in der JD2 Docker-App angezeigt und was bedeutet sie bzw. was tut sie?
  • Warum kann ich JD2 GUI nur aufrufen, wenn ich unter Verwendung der binhex-delugevpn Docker-App die Funktion Privileged deaktiviere? Wie kann ich dies ändern, weil mit dieser Docker-App kann ich die NordVPN configs für eine Double VPN herunterladen und problemlos verwenden.
  • Wie kann ich sicherstellen, dass ich bei Verwendung einer VPN Verbindung über die NordVPN Docker-App auch wirklich einen DL über diese VPN mache, obwohl der DL viel höher ist als in der erstellten VM?
  • Warum ist der DL höher als in der VM?

Ich weiß, dass das viele Fragen am Morgen sind, aber vielleicht hat einer von euch einen kurzen Moment Zeit und kann mir das erklären. 

Ich danke euch und wünsche euch einen guten Start in die Woche.

 

VG 

Tiras =)

Link to comment

Möchte dir kurz darauf Antworten. ich habe seit geraumer Zeit den JD2 über nordvpn am laufen und das ohne probleme. Der gesamte traffic wird über nordvpn geroutet. Ich nutze folgende docker image. bubuntux/nordvpn und ich777/jdownloader2. Die ports die du für den jd2 container nutzen möchtest musst du nur am nordvpn container freigeben. 

als netwerktyp am jd2 container habe ich folgendes eingestellt: 

Netzwerktyp:  Custom : container:nordvpn

Wie du das Netzwerk erstellst wird auf der bubuntux seite erklärt.

 

  • Like 1
Link to comment

Danke für eure Rückmeldungen.

 

@cracyfloyd In dem Tutorial von SpaceInVadder wurde gesagt, dass der Netzwerkverbindungstyp auf "none" und als External Parameter der Docker angegeben werden soll.

So habe ich es gemacht, die Verbindung zum NordVPN Docker wird auch hergestellt, aber die Übertragungsrate passt nicht. Ich vermute, dass dennoch die Host IP genutzt wird und der Traffic nicht 100%ig über die VPN Verbindung geht. Wieso sonst sollte die Übertragungsrate in einer VM mit dem NordVPN Client bei 42Mbit/s liegen und mit dem NordVPN Docker zu dem selben Server bei 178 MBit/s, was meine generelle Bandbreite zu meinem Anschluss entspricht. 

Ich würde jedoch gerne mal deinen Vorschlag testen. Vielleicht übersehe ich es auf der bubuntux Seite, aber bisher konnte ich leider keine Beschreibung finden, wie man das von Dir genannte Netzwerk erstellt. Hast du hierzu evtl. einen Link?

 

Danke für Eure Hilfe.

 

Viele Grüße

 

Link to comment
On 6/15/2021 at 2:37 PM, ich777 said:

Hat NordVPN auch OpenVPN profile?

 

Wenn ja könntest mal versuchen den OpenVPN-Client container aus der CA App zu versuchhen ob sich der auch so verhält.

Hi ich777,

ja, die NordVPN App hat auch ein OpenVPN Profil. Vor langer Zeit habe ich es mit der OpenVPN versucht, aber leider ist Aufgrund dieser Fehlermeldung eine Installation nicht möglich.

image.thumb.png.edb4c6a39289d4fcfc023ee27a645d02.png

 

Aus diesem Grund habe ich nach einer anderen Lösung gesucht.

Link to comment

Du bist mir zuvor gekommen 😃

 

Ich habe es noch einmal probiert und es war scheinbar eine falsche Konfiguration der Netzwerkkarte. OpenVPN lies sich nun installieren, aber leider wird keine Verbindung zu dem Server hergestellt, der in dem Ordner "openvpn-client" mit den relevanten Benutzerdaten hinterlegt ist.

 

Ich nutzte ausschließlich IPv4 Adressen. Der Docker lässt sich ohne Probleme starten, aber in der console mit "ifconfig" wird mir eth0 und die entsprechende IP dazu aufgelistet, obwohl ich eht1 in den Docker Einstellungen aktiviert habe. Ich bin davon ausgegangen, dass ich nun die IP-Adresse des VPN Server aufgelistet bekomme, zudem ich eine Verbindung hergestellt habe. 

Hast du evtl. eine Erklärung, wieso ich eht0 statt eth1 angezeigt bekomme und ich nicht die neue IP-Adresse vom VPN Server aufgelistet bekomme?

 

Danke für deine Rückmeldung.

Link to comment
9 minutes ago, Tiras said:

Verbindung zu dem Server hergestellt

Wie sieht dein Ordner aus in appdata für OpenVPN, diese 2 Dateien sollten drin sein:

grafik.png.0508ce20206b6f0e98a7a50a1f76dbdf.png

 

Hast du ein log output vom Container oder was genau nicht funktioniert?

 

11 minutes ago, Tiras said:

Hast du evtl. eine Erklärung, wieso ich eht0 statt eth1 angezeigt bekomme und ich nicht die neue IP-Adresse vom VPN Server aufgelistet bekomme?

Nein, vielleicht kann hier @Ford Prefect helfen, bin nicht wirklich ein Netzwerkprofi... :D

Link to comment
37 minutes ago, ich777 said:

Nein, vielleicht kann hier @Ford Prefect helfen, bin nicht wirklich ein Netzwerkprofi... :D

...worum geht es genau? Hab den faden jetzt nicht durchgelesen....

 

49 minutes ago, Tiras said:

Ich nutzte ausschließlich IPv4 Adressen. Der Docker lässt sich ohne Probleme starten, aber in der console mit "ifconfig" wird mir eth0 und die entsprechende IP dazu aufgelistet, obwohl ich eht1 in den Docker Einstellungen aktiviert habe. Ich bin davon ausgegangen, dass ich nun die IP-Adresse des VPN Server aufgelistet bekomme, zudem ich eine Verbindung hergestellt habe. 

Hast du evtl. eine Erklärung, wieso ich eht0 statt eth1 angezeigt bekomme und ich nicht die neue IP-Adresse vom VPN Server aufgelistet bekomme?

 

....ist dies das Problem?

@Tiras Welche console meinst Du?

Auf dem unraid Host und im template verwendest Du die Nomenklatur eth0, eth1 des unraid Host...im innern des Containers läuft ja ein eigenes Mini-System ...dort werden Schnittstellen neu nummeriert (oder wird das Device direkt 1:1 in den Container gemappt - kenne den Docker nicht ... für eine Netzwerk-Schnittstelle eigentlich nicht, eher für eine (i)GPU würde ich denken).

 

  • Thanks 1
Link to comment

Ok, ich bin dank deinen Fragen etwas weiter gekommen. 

image.thumb.png.89803cfba64297a78fbd2178b44b8d8b.png

 

Die erste sowie die letzten 3 Markierungen sind lokale IP-Adressen meines Intranets. Die anderen Markierungen ist die IP-Adresse des VPN-Servers, zu der eine Verbindung scheinbar erfolgreich hergestellt wurde, oder?

 

Ich habe in der console von OpenVPN nochmal mit ip address die IP-Adressen abgefragt: 

image.png.f0819d0d97b34a3b0b2d900022193469.png

 

Es wird weiterhin bei 51: eth0 angezeigt, obwohl wie schon gesagt eth1 in den Docker-Einstellungen aktiviert wurde.

Nachdem du mich gefragt hast, welche Dateien in dem Ordner sind, habe ich nachgeschaut. Dort waren keine Dateien vorhanden. Ich habe in den Einstellungen von OpenVPN geprüft, wie der Path ist. Da habe ich festgestellt, dass der Path auf meine NVMe´s geht, die für VMs verwendet werden. Komisch ist, dass dort ein Ordner appdata/openvpn-client vorhanden ist und dort die von Dir genannten Dateien enthalten sind.

Ich habe den Path auf den Ordner geändert, wo ich die Dateien habe und anschließend bekam ich die Informationen, die in der obigen Log zu sehen sind. 

Prüfe ich die IP-Adresse, die mir als VPN-Verbindung angezeigt wird, dann erhalte ich die richtige location. 

 

Wieso wird mir jedoch unter ip address weiterhin die lokale IP-Adresse angezeigt?

Link to comment
13 minutes ago, Ford Prefect said:

...worum geht es genau? Hab den faden jetzt nicht durchgelesen....

 

 

....ist dies das Problem?

@Tiras Welche console meinst Du?

Auf dem unraid Host und im template verwendest Du die Nomenklatur eth0, eth1 des unraid Host...im innern des Containers läuft ja ein eigenes Mini-System ...dort werden Schnittstellen neu nummeriert (oder wird das Device direkt 1:1 in den Container gemappt - kenne den Docker nicht ... für eine Netzwerk-Schnittstelle eigentlich nicht, eher für eine (i)GPU würde ich denken).

 

Danke für deine Rückmeldung. Ich meine die Console des jeweiligen Dockers. Ich habe kein pass through der Hardware in eine Docker gemacht. Das geht glaube ich auch nicht. Ich bin absoluter Neuling was unraid und linux angeht. Ich komme aus dem WinDoof Umfeld. Deswegen war mir nicht klar, dass die zur Verfügung gestellte Hardware in einem Docker neu benannt werden. 

 

Ich teste jetzt mal, ob die Geschwindigkeiten die selben sind, wenn ich in der VM eine VPN-Verbindung zu dem selben Server herstelle, wie mit dem OpenVPN Docker.

Ich melde mich mit den Ergebnissen und evtl. Rückfragen.

 

Vielen Dank für eure Hilfe....

Link to comment
2 hours ago, Tiras said:

Danke für deine Rückmeldung. Ich meine die Console des jeweiligen Dockers.

Ja, dann ist das klar....in einem Docker findest DU eben auch nicht notwenmdigerweise die gleichen Befehel, wie auf dem Host.

 

2 hours ago, Tiras said:

Ich bin absoluter Neuling was unraid und linux angeht. Ich komme aus dem WinDoof Umfeld. Deswegen war mir nicht klar, dass die zur Verfügung gestellte Hardware in einem Docker neu benannt werden. 

...stell Dir einen Docker wie eine (linux) VM-light vor.

In einem Linux läuft der Kernel. Alles, was drum herum ist (Geräte/Devices, ...) und auch das ("Apps"), was mit dem Kernel oder Geräten kommunizieren (uni- oder bidirektional) muss liegt in einem Verzeichnisbaum, der mit "/" beginnt.

Kennst Du den Pfad und hast Du die Berechtigungen, kannst Du die Ressource an der Stelle x im Baum nutzen.

Welche "Apps" im Docker verfügbar (installiert) sind ist eben unterschiedlich

 

Ein Docker ist nichts anderes, als ein eigenständiger, seperater, Baum...ein Linux System, welches von den anderen Linux-Systemen/Bäumen abgetrennt ist.

Die Trennung erfolgt aber nicht physisch (wie bei einer VM), sondern nur auf Ebene von besonderen Berechtigungen im Kernel.

Jeder Docker nutzt also den gleichen (auch die gleiche Instanz) Kernel (des Host).

 

Eine Netzwerkkarte im Docker kennt also nur dieser Docker und damit beginnt für den Docker der Kontext neu, mit eth0 -- auch wenn im physischen System schon 3 reale NICs und 20 Docker laufen.

 

2 hours ago, Tiras said:

Ich habe kein pass through der Hardware in eine Docker gemacht. Das geht glaube ich auch nicht.

Doch, das geht...eben durch ein Mapping/Overlay zwischen (Teilen) des Baum-A (der unraid Host) in den Baum-B (des Dockers). Typisch um zB auf USB-Geräte oder eine iGPU zugreifen zu können.

Auch das Appdata Verzeichnis im Docker template wird mit sowas "gebaut". Der Laufzeit-container legt seinen Baum aber eben im RAM ab.

Wenn der Docker Container (die mini-VM) nicht mehr läuft, wären alle Daten in dessen Baum ja weg...durch das Mapping auf den (weiterhin, laufenden) Baum/Verzeichnis des unraid host (das dann eine Disk, also ein persitentes Filesystem darunter hat, belieben diese auch weiterhin erhalten.

 

...nur eben für Netzwerkkarten macht es (eigentlich) nicht, da das ja auch für den Host da ist und eben kein "shared Medium" (etwas anderes wäre eine Netzwerkkarte, welche physisch SR-IOV unterstützt. Mit so einer könnte man das sogar probieren.

 

 

2 hours ago, Tiras said:

Ich teste jetzt mal, ob die Geschwindigkeiten die selben sind, wenn ich in der VM eine VPN-Verbindung zu dem selben Server herstelle, wie mit dem OpenVPN Docker.

Ich melde mich mit den Ergebnissen und evtl. Rückfragen.

Wenn da was abweicht, kann das auch andere Gründe haben.

melde Dich einfach dann, bei Fragen.

Link to comment

Vielen Dank für die schnelle und verständnisvolle Erklärung.

 

Mir ist aufgefallen, dass ich mit der JD2 DOcker ohne eine VPN-Verbindung und der Netzwerkeinstellung = Host einen DL von +7,58 Mb/s habe. Wenn ich JD2 Docker und eine VPN-Verbindung herstelle, dann erreiche ich einen DL von 500 Kb/s.

In der VM mit dem NordVPN Client erreiche ich einen DL mit JD2 Client zum gleichen Server von 1,35 Mb/s bis 4,87 Mb/s.

 

Was genau kann hier das Problem sein? Der Upload ist dementsprechend auch sehr niedrig.

 

 

Link to comment

...schwer zu sagen. Ich nutze keine VPNs.

 

Da es auch in einer VM, mit dort nativem Client nicht den vlolen Speed (JD2 Docker mit "host") bringt, tippe ich grundsätzlich mal auf unzureichende Ressourcen Deiner hardware.

Bei VPNs käme vor allen die Hardware-Beschleunigung für Verschlüsselung in der CPU zum tragen/in Betracht.

Hardware Verschlüsselung in der CPU ist AES, aber auch da gibt es Varianten der Ciphers in einem VPN, wo das mehr oder weniger einsetzbar/performancebingend ist.

Ebenso, bei verschachtelten Stacks, ob NAT (das hat auch keine Hardware-Unterstützung) im Spiel ist und Verschlüsselung evtl. eben auch mehrfach, verschachtelt zum Einsatz kommt (ggfls. ohne es bewusst zu merken/wollen).

 

Was ist eine Baseline (zB mit einem echten, nicht virtualiertem Client mit/ohne Hardware-Verschlüsselung ermittelt) und welchen Einfluss hat dann welche Komponenten/welcher Layer/welcher Netzwerk-Pfad im jeweiligen unraid Setup...welchen Einfluss haben unterschiedliche Ciphers im VPN?

 

Absolute Zahlen allein sind nicht wert, wenn Du die Nullline nicht kennst.

Erst dann macht es Sinn zu suchen.

Frage 1: Was wäre Deine Null-Linie?

Frage 2: Welche Hardware ist denn im unraid am Start?

Link to comment

Also was Null-Linie ist, kann ich Dir leider nicht beantworten.

Zu meiner Hardware:

 

AMD Ryzen 4650 Pro

Gigabyte x570 Gaming X

2 x 32 GB RAM

2 x Samsung Evon 970 Plus 1 TB

2 x WD NAS RED 4 TB HDD

1 x Toshiba 2 TB HDD

1 x 2 SanDisk 240 GB SSD

Link to comment

...OK, die CPU hat AES Support und hat zumindest genug Dampf um auch Cyphers ohne AES noch ordentlich bedienen zu können....32GB sind auch schon gut.

Da würde ich diesen Teil erstmal als Problem ausschliesen.

 

Null-Linie wäre jetzt mal, was den direkten Draht zum VPN angeht.

Kannst Du im/über das VPN einen iperf Test machen?

Iperf für den unraid host gibt es über das nerd-Pack.

Iperf in einem Docker?...müsste ich mal schauen. Docker-zu-Docker sollte "roh", ohne VPN/Verschlüsselung halt da die CPU-Bandbreite rauskommen.

 

Link to comment

Ok, nerdpack und iperf habe ich installiert. Nachdem ich ein Test zwischen der VM (ohne VPN Verbindung) und meinem unraid Server durchgeführt habe, erhielt ich eine Bandwidth von bis zu 8 GBit/s was mir sehr komisch vorkommt, weil ich nur ein 1 GBit/s LAN habe. 

Gleicher Test nur mit VPN-Verbindung durch den NordVPN Client zu meinem unraid Server und da erreiche ich nur 843 MBit/s.

 

Ich habe mir von SpaceInVadder das Video zu iperf angeschaut und alle dort gezeigten Tests versucht durchzuführen. Es ist jedoch nicht möglich, die VPN-Verbindung (mit OpenVPN Docker) durchzuführen, da der VPN-Server zu dem eine Verbindung hergestellt wird, nicht im meinem Netzwerk ist.

 

Ich verstehe ehrlich gesagt noch nicht ganz, wieso ich in der VM eine höhere DL und UL zu dem gleichen Server habe, zu dem ich auch mit OpenVPN Docker eine Verbindung herstelle.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.