
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.
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 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 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
für Details. Port-Weiterleitung 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.
VPN-Anbieterkonfigurationsdateien einrichten:
$ 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:
$ 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.
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.
sudo systemctl enable --now voponosudo vopono daemonsudo vopono daemon start; prüfen Sie es mit
vopono daemon status --json.vopono exec --provider mullvad --server se firefoxSiehe 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:
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 für wesentlich detailliertere Verwendungsanweisungen (einschließlich der Handhabung von Daemons und Servern).
Installieren Sie das Paket vopono-git mit Ihrem bevorzugten AUR-Helfer.
$ paru -S vopono-git
$ vopono sync
Verwenden Sie alternativ das Paket vopono-bin, wenn Sie nicht aus dem
Quellcode kompilieren möchten.
Laden Sie das Paket vopono_x.y.z_armhf.deb von der
Release-Seite herunter und installieren Sie es:
$ sudo dpkg -i vopono_0.2.1_armhf.deb
Sie müssen OpenVPN installieren (in den Raspbian-Repos verfügbar):
$ sudo apt install openvpn
Sie können vopono dann wie oben verwenden (beachten Sie, dass die Chromium-Binärdatei
chromium-browser ist):
$ 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 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 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.
Installieren Sie das auf der Release-Seite bereitgestellte deb-Paket.
Installieren Sie das auf der Release-Seite bereitgestellte rpm-Paket (wählen Sie die richtige Version).
Installieren Sie vopono aus dem Haupt-Repository.
$ emerge -av net-vpn/vopono
Verwenden Sie entweder die kompilierten Binärdateien auf der Release-Seite oder installieren Sie aus dem Quellcode mit Cargo, wie unten dokumentiert.
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:
$ 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 LICENSE-Datei oder https://www.gnu.org/licenses/gpl-3.0.en.html
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.
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 für die Untersuchung der MozillaVPN-API.