
Anwendungen über VPN-Tunnel mit temporären Netzwerk-Namespaces ausführen

vopono ist ein Tool, um Anwendungen über VPN-Tunnel mittels temporärer Netzwerk-Namespaces auszuführen. Damit kannst du nur eine Handvoll Anwendungen gleichzeitig über verschiedene VPNs laufen lassen, während deine Hauptverbindung normal bleibt.
vopono enthält integrierte Killswitches sowohl für Wireguard als auch OpenVPN.
Derzeit werden Mullvad, AzireVPN, MozillaVPN, ProtonVPN, iVPN, NordVPN, AirVPN und PrivateInternetAccess direkt unterstützt, ebenso wie benutzerdefinierte Konfigurationsdateien mit dem Argument --custom. 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 Details findest du im vopono Benutzerhandbuch.
Screenshot, der ein Beispiel mit Firefox, google-chrome-stable und Lynx zeigt, die alle über verschiedene VPN-Verbindungen laufen:

| Anbieter | OpenVPN-Unterstützung | Wireguard-Unterstützung |
|---|---|---|
| Mullvad | ❌ | ✅ |
| AzireVPN | ❌ | ✅ |
| iVPN | ✅ | ✅ |
| PrivateInternetAccess | ✅ | ✅* |
| ProtonVPN | ✅** | ✅*** |
| MozillaVPN | ❌ | ✅ |
| NordVPN | ✅ | ❌ |
| AirVPN | ✅ | ❌ |
| Cloudflare Warp**** | ❌ | ❌ |
| Selbst hosten (--custom) | ✅ | ✅ |
* Portweiterleitung 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 für Authentifizierungsanweisungen zum Generieren der OpenVPN-Konfigurationsdateien über vopono sync. Du musst den Authentifizierungsheader der Form AUTH-xxx=yyy kopieren, wobei yyy der Wert des x-pm-uid-Headers in derselben Anfrage ist, wenn du in deinem Webbrowser angemeldet bist.
*** Für ProtonVPN kannst du spezifische Wireguard-Konfigurationsdateien generieren und herunterladen und sie als benutzerdefinierte Anbieterkonfiguration verwenden. Siehe das Benutzerhandbuch für Details. Portweiterleitung wird mit dem Argument --port-forwarding sowohl für OpenVPN als auch für Wireguard unterstützt. Beachte, dass bei Verwendung einer benutzerdefinierten Konfiguration mit Wireguard die zu verwendende Portweiterleitungsimplementierung mit --custom-port-forwarding angegeben werden muss (d.h. mit --provider custom --custom xxx.conf --protocol wireguard --custom-port-forwarding protonvpn). natpmpc muss installiert sein. Beachte, dass du für OpenVPN die OpenVPN-Konfigurationsdateien generieren musst, indem du +pmp an deinen OpenVPN-Benutzernamen anhängst, und du musst Server auswählen, die dieses Feature unterstützen (z. B. zum Zeitpunkt des Schreibens die Server in Rumänien). Der zugewiesene Port wird dann im Terminal ausgegeben, in dem vopono gestartet wurde – dieser sollte dann in allen Anwendungen, die ihn benötigen, gesetzt werden. Der Port kann auch an ein benutzerdefiniertes Skript übergeben werden, das innerhalb des Netzwerk-Namespace mit dem Argument --port-forwarding-callback ausgeführt wird.
**** Cloudflare Warp verwendet sein eigenes Protokoll. Setze sowohl den Anbieter als auch das Protokoll auf warp. Beachte, dass du dich zuerst mit sudo warp-cli registration new registrieren und es dann einmal mit sudo warp-svc, sudo warp-cli connect und sudo warp-cli debug connectivity-check disable außerhalb von vopono ausführen musst – dann beende sudo warp-svc, ohne sudo warp-cli disconnect auszuführen, damit es sich beim Start automatisch verbindet. Bitte überprüfe zuerst, ob dies funktioniert, bevor du es mit vopono versuchst.
Richte die Konfigurationsdateien des VPN-Anbieters ein:
$ vopono sync
Beachte, dass beim Erstellen und Hochladen neuer Wireguard-Schlüsselpaare eine kurze Verzögerung auftreten kann, bis sie verwendbar sind (ca. 30–60 Sekunden bei Mullvad).
Führe Firefox über eine AzireVPN-Wireguard-Verbindung zu einem Server in Norwegen aus:
$ vopono exec --provider azirevpn --server norway firefox
Du solltest vopono als dein eigener Benutzer (nicht mit sudo) ausführen, da es die Rechteerweiterung bei Bedarf selbst übernimmt. Weitere Details zur Ausführung als systemd-Dienst usw. findest du im Benutzerhandbuch.
Für ein reibungsloseres Erlebnis starte den privilegierten Root-Daemon und verwende weiterhin vopono als normaler Benutzer. Die CLI leitet exec-Anfragen automatisch an den Daemon weiter, wenn dieser läuft.
sudo systemctl enable --now voponosudo vopono daemonvopono exec --provider mullvad --server se firefoxSiehe USERGUIDE.md für eine gebrauchsfertige systemd-Unit.
vopono kann bis zu 255 separate Netzwerk-Namespaces verwalten (d.h. verschiedene VPN-Serververbindungen – sofern dein VPN-Anbieter dies zulässt). Mit dem gleichen Server-Präfix und VPN-Anbieter gestartete Befehle teilen sich denselben Netzwerk-Namespace.
Standardkonfigurationsoptionen können in der Datei ~/.config/vopono/config.toml gespeichert werden, zum Beispiel:
firewall = "NfTables"
provider = "Mullvad"
protocol = "Wireguard"
server = "usa-us22"
Beachte, dass die Werte zwischen Groß- und Kleinschreibung unterscheiden.
Weitere detaillierte Anweisungen zur Verwendung (einschließlich Umgang mit Daemons und Servern) findest du im vopono Benutzerhandbuch.
Installiere das Paket vopono-git mit deinem bevorzugten AUR-Helfer.
$ paru -S vopono-git
$ vopono sync
Alternativ verwende das Paket vopono-bin, wenn du nicht aus der Quelle kompilieren möchtest.
Lade das Paket vopono_x.y.z_armhf.deb von der Release-Seite herunter und installiere es:
$ sudo dpkg -i vopono_0.2.1_armhf.deb
Du musst OpenVPN installieren (verfügbar in den Raspbian-Repos):
$ sudo apt install openvpn
Dann kannst du vopono wie oben verwenden (beachte, dass die Chromium-Binärdatei chromium-browser heißt):
$ vopono sync --protocol openvpn protonvpn
$ vopono exec --provider protonvpn --server sweden chromium-browser
Screenshot von vopono mit OpenVPN unter Raspbian:

Beachte, dass Wireguard nicht in den Raspbian-Repos enthalten ist, daher ist die Installation nicht trivial. Du kannst dieser Anleitung folgen, um es zu versuchen, aber beachte, dass du nicht nur Wireguard und wireguard-tools installieren musst, um wg verfügbar zu haben, sondern auch die linux-headers, um sicherzustellen, dass es korrekt funktioniert (d.h. du erhältst nicht einfach Protocol not supported-Fehler beim Versuch, eine Verbindung herzustellen).
Weitere Details zur Portweiterleitung und zur Verwendung von vopono mit Daemons und Servern findest du im Benutzerhandbuch, falls du deinen Raspberry Pi für den Betrieb von Privoxy oder transmission-daemon usw. nutzen möchtest.
Installiere das auf der Release-Seite bereitgestellte deb-Paket.
Installiere das auf der Release-Seite bereitgestellte rpm-Paket (wähle die richtige Version).
Installiere vopono aus dem Haupt-Repository.
$ emerge -av net-vpn/vopono
Verwende entweder die kompilierten Binärdateien auf der Release-Seite oder installiere aus dem Quellcode mit Cargo, wie unten dokumentiert.
Führe das bereitgestellte Installationsskript aus: install.sh – dies führt cargo install des Repositorys aus und kopiert die Konfigurationsdateien nach ~/.config/vopono/.
Beachte, dass die minimal unterstützte Rust-Version 1.85 ist (erforderlich für Edition 2024). Du kannst deine Version überprüfen mit:
$ rustc --version
gnome-terminal wird aufgrund des Client-Server-Modells nicht im Netzwerk-Namespace ausgeführt – siehe Issue #48transmission-daemon) funktioniert nicht korrekt, wenn vopono als Root ausgeführt wird – siehe Issue #84vopono ist unter der GPL Version 3.0 (oder höher) lizenziert, siehe die Lizenzdatei oder https://www.gnu.org/licenses/gpl-3.0.en.html
vopono ist die Aussprache der Buchstaben VPN in Esperanto.
Se vi ankaŭ parolas Esperanton, bonvolu serĉi min en la kanalo de Discord de Rust Programming Language Community.
Sofern du nicht ausdrücklich etwas anderes angibst, wird jeder Beitrag, der von dir absichtlich zur Aufnahme in das Werk eingereicht wird, unter der GPLv3 (oder höher) lizenziert, ohne zusätzliche Bedingungen.
Vielen Dank an NilsIrls MozWire für die Untersuchung der MozillaVPN-API.