
Anwendungen über VPN-Tunnel mit temporären Netzwerk-Namespaces ausführen
 vopono ist ein Werkzeug, um Anwendungen über VPN-Tunnel durch temporäre Netzwerk-Namespaces auszuführen. So können Sie nur eine Handvoll Anwendungen gleichzeitig über verschiedene VPNs ausführen, während Ihre Hauptverbindung normal bleibt. vopono enthält integrierte Killswitches sowohl für Wireguard als auch für OpenVPN. Derzeit werden Mullvad, AzireVPN, MozillaVPN, ProtonVPN, iVPN, NordVPN, AirVPN und PrivateInternetAccess direkt unterstützt, wobei benutzerdefinierte Konfigurationsdateien mit dem Argument `--custom` ebenfalls unterstützt werden. Cloudflare Warp wird ebenfalls unterstützt. Für benutzerdefinierte Verbindungen werden auch die Protokolle OpenConnect und OpenFortiVPN unterstützt (z. B. für Unternehmens-VPNs). Weitere Einzelheiten finden Sie im [vopono-Benutzerhandbuch](https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md). ## Screenshot Screenshot, der ein Beispiel mit firefox, google-chrome-stable und lynx zeigt, die alle über verschiedene VPN-Verbindungen laufen:  ## Unterstützte Anbieter | Anbieter | OpenVPN-Unterstützung | Wireguard-Unterstützung | | ----------------------------- | --------------- | ----------------- | | Mullvad | ❌ | ✅ | | AzireVPN | ❌ | ✅ | | iVPN | ✅ | ✅ | | PrivateInternetAccess | ✅ | ✅\* | | ProtonVPN | ✅\*\* | ✅\*\*\* | | MozillaVPN | ❌ | ✅ | | NordVPN | ✅ | ❌ | | AirVPN | ✅ | ✅ | | Cloudflare Warp\*\*\*\* | ❌ | ❌ | | Selbst gehostet (--custom) | ✅ | ✅ | \* Port-Weiterleitung wird mit der Option `--port-forwarding` und `--port-forwarding-callback` unterstützt, um einen Befehl auszuführen, wenn der Port aktualisiert wird. \*\* Siehe das [Benutzerhandbuch](https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md) für Authentifizierungsanweisungen zum Erzeugen der OpenVPN-Konfigurationsdateien über `vopono sync`. Sie müssen den Authentifizierungs-Header der Form `AUTH-xxx=yyy` kopieren, wobei `yyy` der Wert des `x-pm-uid`-Headers in derselben Anfrage ist, wenn Sie in Ihrem Webbrowser angemeldet sind. \*\*\* Für ProtonVPN können Sie spezifische Wireguard-Konfigurationsdateien erzeugen und herunterladen und sie als benutzerdefinierte Anbieterkonfiguration verwenden. Siehe das [Benutzerhandbuch](https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md) für Details. [Port-Weiterleitung](https://protonvpn.com/support/port-forwarding-manual-setup/) wird mit dem Argument `--port-forwarding` sowohl für OpenVPN als auch für Wireguard unterstützt. Beachten Sie, dass bei Verwendung einer benutzerdefinierten Konfiguration mit Wireguard die zu verwendende Port-Weiterleitungsimplementierung mit `--custom-port-forwarding` angegeben werden sollte (d. h. mit `--provider custom --custom xxx.conf --protocol wireguard --custom-port-forwarding protonvpn`). `natpmpc` muss installiert sein. Beachten Sie, dass Sie für OpenVPN die OpenVPN-Konfigurationsdateien erzeugen müssen, indem Sie `+pmp` an Ihren OpenVPN-Benutzernamen anhängen, und Sie müssen Server wählen, die diese Funktion unterstützen (z. B. tun dies zum Zeitpunkt der Erstellung dieses Textes die Rumänien-Server). Der zugewiesene Port wird dann im Terminal ausgegeben, in dem vopono gestartet wurde - dieser sollte dann in allen Anwendungen gesetzt werden, die ihn benötigen. Der Port kann auch an ein benutzerdefiniertes Skript übergeben werden, das über das Argument `--port-forwarding-callback` innerhalb des Netzwerk-Namespace ausgeführt wird. \*\*\*\* Cloudflare Warp verwendet sein eigenes Protokoll. Setzen Sie sowohl den Anbieter als auch das Protokoll auf `warp`. Beachten Sie, dass Sie sich zuerst mit `sudo warp-cli registration new` registrieren und es dann einmal außerhalb von vopono mit `sudo warp-svc` und `sudo warp-cli connect` und `sudo warp-cli debug connectivity-check disable` ausführen müssen - beenden Sie dann `sudo warp-svc`, ohne `sudo warp-cli disconnect` auszuführen, damit es beim Start automatisch eine Verbindung herstellt. Bitte vergewissern Sie sich zuerst, dass dies funktioniert, bevor Sie es mit vopono ausprobieren. Die Port-Weiterleitung von AirVPN wird als Anbieterfunktion unterstützt, aber weitergeleitete Ports müssen derzeit im Kundenbereich von AirVPN konfiguriert werden; vopono beansprucht oder schaltet AirVPN-Kontoports nicht automatisch um. ## Verwendung VPN-Anbieterkonfigurationsdateien einrichten: ```bash $ vopono sync ``` Beachten Sie, dass es beim Erstellen und Hochladen neuer Wireguard-Schlüsselpaare eine leichte Verzögerung geben kann, bis sie verwendbar sind (z. B. etwa 30-60 Sekunden bei Mullvad). Führen Sie Firefox über eine AzireVPN-Wireguard-Verbindung zu einem Server in Norwegen aus: ```bash $ vopono exec --provider azirevpn --server norway firefox ``` Sie sollten vopono als Ihr eigener Benutzer ausführen (nicht mit sudo), da es die Rechteerweiterung bei Bedarf selbst übernimmt. Weitere Einzelheiten zur Ausführung als systemd-Dienst usw. finden Sie im [Benutzerhandbuch](https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md). ### Daemon-Modus Für ein reibungsloseres Erlebnis führen Sie den privilegierten Root-Daemon aus und verwenden `vopono` weiterhin als normaler Benutzer. Die CLI leitet `exec`-Anfragen automatisch an den Daemon weiter, wenn dieser läuft. - Einmal beim Booten über systemd starten: `sudo systemctl enable --now vopono` - Oder manuell als Root ausführen: `sudo vopono daemon` - Das explizite Äquivalent ist `sudo vopono daemon start`; prüfen Sie es mit `vopono daemon status --json`. - Verwenden Sie vopono dann wie gewohnt als Benutzer: `vopono exec --provider mullvad --server se firefox` Siehe [USERGUIDE.md](https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md) für eine fertig kopierbare systemd-Unit. vopono kann bis zu 255 separate Netzwerk-Namespaces verwalten (d. h. verschiedene VPN-Serververbindungen - wenn Ihr VPN-Anbieter dies erlaubt). Befehle, die mit demselben Serverpräfix und VPN-Anbieter gestartet werden, teilen sich denselben Netzwerk-Namespace. Standardkonfigurationsoptionen können in der Datei `~/.config/vopono/config.toml` gespeichert werden, zum Beispiel: ```toml firewall = "NfTables" provider = "Mullvad" protocol = "Wireguard" server = "usa-us22" ``` Beachten Sie, dass bei den Werten zwischen Groß- und Kleinschreibung unterschieden wird. Siehe das [vopono-Benutzerhandbuch](https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md) für wesentlich detailliertere Verwendungsanweisungen (einschließlich der Handhabung von Daemons und Servern). ## Installation ### AUR (Arch Linux) Installieren Sie das Paket `vopono-git` mit Ihrem bevorzugten AUR-Helfer. ```bash $ paru -S vopono-git $ vopono sync ``` Verwenden Sie alternativ das Paket `vopono-bin`, wenn Sie nicht aus dem Quellcode kompilieren möchten. ### Raspberry Pi (Raspbian) Laden Sie das Paket `vopono_x.y.z_armhf.deb` von der Release-Seite herunter und installieren Sie es: ```bash $ sudo dpkg -i vopono_0.2.1_armhf.deb ``` Sie müssen OpenVPN installieren (in den Raspbian-Repos verfügbar): ```bash $ sudo apt install openvpn ``` Sie können vopono dann wie oben verwenden (beachten Sie, dass die Chromium-Binärdatei `chromium-browser` ist): ```bash $ vopono sync --protocol openvpn protonvpn $ vopono exec --provider protonvpn --server sweden chromium-browser ``` Screenshot von vopono mit OpenVPN unter Raspbian:  Beachten Sie, dass Wireguard nicht in den Raspbian-Repositories enthalten ist, sodass die Installation nicht trivial ist. Sie können [dieser Anleitung](https://www.sigmdel.ca/michel/ha/wireguard/wireguard_02_en.html) folgen, um es zu versuchen, aber beachten Sie, dass Sie nicht nur Wireguard und `wireguard-tools` installieren müssen, um `wg` verfügbar zu haben, sondern auch `linux-headers`, um sicherzustellen, dass es korrekt funktioniert (d. h. Sie erhalten nicht nur `Protocol not supported`-Fehler, wenn Sie versuchen, eine Verbindung herzustellen). Prüfen Sie das [Benutzerhandbuch](https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md) für Details zur Port-Weiterleitung und zur Verwendung von vopono mit Daemons und Servern, falls Sie Ihren Raspberry Pi verwenden möchten, um privoxy oder transmission-daemon usw. auszuführen. ### Debian + Ubuntu Installieren Sie das auf der Release-Seite bereitgestellte deb-Paket. ### Fedora + OpenSUSE Installieren Sie das auf der Release-Seite bereitgestellte rpm-Paket (wählen Sie die richtige Version). ### Gentoo Linux Installieren Sie `vopono` aus dem Haupt-Repository. ```bash $ emerge -av net-vpn/vopono ``` ### Anderes Linux Verwenden Sie entweder die kompilierten Binärdateien auf der Release-Seite oder installieren Sie aus dem Quellcode mit Cargo, wie unten dokumentiert. ### Aus diesem Repository (mit Cargo) Führen Sie das bereitgestellte Installationsskript aus: `install.sh` - dies wird `cargo install` für das Repository ausführen und die Konfigurationsdateien nach `~/.config/vopono/` kopieren. Beachten Sie, dass die mindestens unterstützte Rust-Version 1.85 ist (erforderlich für Edition 2024). Sie können Ihre Version überprüfen mit: ```bash $ rustc --version ``` ## Bekannte Probleme - Beim Starten einer neuen Anwendung in einem vorhandenen vopono-Namespace werden Änderungen an den Firewall-Regeln (d. h. Weiterleiten und Öffnen von Ports) nicht angewendet (sie werden nur beim Erstellen des Namespace verwendet). Dasselbe gilt für die Port-Weiterleitung. - OpenVPN-Anmeldedaten werden immer im Klartext in der Konfiguration gespeichert - möglicherweise wird eine Option hinzugefügt, um Anmeldedaten nicht zu speichern, aber es scheint, dass OpenVPN sie im Klartext benötigt. - Es gibt keine einfache Möglichkeit, MozillaVPN-Geräte (Wireguard-Schlüsselpaare) zu löschen - anders als bei Mullvad kann dies _nicht_ auf der Webseite erledigt werden. Ich empfehle, [MozWire](https://github.com/NilsIrl/MozWire) zur Verwaltung zu verwenden. - `gnome-terminal` wird aufgrund des Client-Server-Modells nicht im Netzwerk-Namespace ausgeführt - siehe Issue [#48](https://github.com/jamesmcm/vopono/issues/48) - Die Port-Weiterleitung von innerhalb des Netzwerk-Namespace zum Host (z. B. zum Ausführen von `transmission-daemon`) funktioniert nicht korrekt, wenn vopono als Root ausgeführt wird - siehe Issue [#84](https://github.com/jamesmcm/vopono/issues/84) ## Lizenz vopono ist unter der GPL Version 3.0 (oder höher) lizenziert, siehe die LICENSE-Datei oder https://www.gnu.org/licenses/gpl-3.0.en.html ## Etymologie vopono ist die Aussprache der Buchstaben VPN auf Esperanto. Se vi ankaŭ parolas Esperanton, bonvolu serĉi min en la kanalo de Discord de Rust Programming Language Community. ## Mitwirkung Sofern Sie nicht ausdrücklich etwas anderes angeben, wird jeder von Ihnen absichtlich zur Aufnahme in das Werk eingereichte Beitrag unter der GPLv3 (oder höher) lizenziert, ohne zusätzliche Bedingungen. Vielen Dank an NilsIrls [MozWire](https://github.com/NilsIrl/MozWire) für die Untersuchung der MozillaVPN-API.