
vopono v0.10.21
Exécutez des applications via des tunnels VPN avec des espaces de noms réseau temporaires.

vopono est un outil permettant d'exécuter des applications via des tunnels VPN à l'aide d'espaces de noms réseau temporaires. Cela vous permet d'exécuter seulement quelques applications via différents VPN simultanément, tout en conservant votre connexion principale comme d'habitude.
vopono inclut des killswitches intégrés pour Wireguard et OpenVPN.
Actuellement, Mullvad, AzireVPN, MozillaVPN, ProtonVPN, iVPN, NordVPN, AirVPN et PrivateInternetAccess sont pris en charge directement, et les fichiers de configuration personnalisés sont également pris en charge avec l'argument --custom. Cloudflare Warp est également pris en charge.
Pour les connexions personnalisées, les protocoles OpenConnect et OpenFortiVPN sont également pris en charge (par exemple pour les VPN d'entreprise). Consultez le Guide de l'utilisateur vopono pour plus de détails.
Capture d'écran
Capture d'écran montrant un exemple avec firefox, google-chrome-stable et lynx, tous exécutés via différentes connexions VPN :

Fournisseurs pris en charge
| Fournisseur | Support OpenVPN | Support Wireguard |
|---|---|---|
| Mullvad | ❌ | ✅ |
| AzireVPN | ❌ | ✅ |
| iVPN | ✅ | ✅ |
| PrivateInternetAccess | ✅ | ✅* |
| ProtonVPN | ✅** | ✅*** |
| MozillaVPN | ❌ | ✅ |
| NordVPN | ✅ | ❌ |
| AirVPN | ✅ | ✅ |
| Cloudflare Warp**** | ❌ | ❌ |
| Self host (--custom) | ✅ | ✅ |
* La redirection de port est prise en charge avec l'option --port-forwarding et --port-forwarding-callback pour exécuter une commande lorsque le port est renouvelé.
** Voir le Guide de l'utilisateur pour les instructions d'authentification afin de générer les fichiers de configuration OpenVPN via vopono sync. Vous devez copier l'en-tête d'authentification de la forme AUTH-xxx=yyy, où yyy est la valeur de l'en-tête x-pm-uid dans la même requête lorsque vous êtes connecté dans votre navigateur web.
*** Pour ProtonVPN, vous pouvez générer et télécharger des fichiers de configuration Wireguard spécifiques et les utiliser comme configuration de fournisseur personnalisée. Voir le Guide de l'utilisateur pour plus de détails. La redirection de port est prise en charge avec l'argument --port-forwarding pour OpenVPN et Wireguard.
Notez que pour utiliser une configuration personnalisée avec Wireguard, l'implémentation de redirection de port à utiliser doit être spécifiée avec --custom-port-forwarding
(c'est-à-dire avec --provider custom --custom xxx.conf --protocol wireguard --custom-port-forwarding protonvpn). natpmpc doit être installé.
Notez que pour OpenVPN, vous devez générer les fichiers de configuration OpenVPN en ajoutant +pmp à votre nom d'utilisateur OpenVPN, et vous devez choisir des serveurs prenant en charge cette fonctionnalité
(par exemple, au moment où ce document est écrit, les serveurs de Roumanie le font). Le port attribué est ensuite affiché dans le terminal où vopono a été lancé - il doit ensuite être configuré dans toutes les applications qui en ont besoin.
Le port peut également être transmis à un script personnalisé qui sera exécuté dans l'espace de noms réseau via l'argument --port-forwarding-callback.
**** Cloudflare Warp utilise son propre protocole. Définissez à la fois le fournisseur et le protocole sur warp. Notez que vous devez d'abord vous enregistrer avec sudo warp-cli registration new, puis l'exécuter une fois avec sudo warp-svc, sudo warp-cli connect et sudo warp-cli debug connectivity-check disable en dehors de vopono - puis tuez sudo warp-svc sans exécuter sudo warp-cli disconnect afin qu'il se connecte automatiquement au lancement. Veuillez vérifier que cela fonctionne avant d'essayer avec vopono.
La redirection de port AirVPN est prise en charge en tant que capacité du fournisseur, mais les ports redirigés doivent actuellement être configurés dans l'espace client d'AirVPN ; vopono ne réclame ni n'active automatiquement les ports du compte AirVPN.
Utilisation
Configurez les fichiers de configuration du fournisseur VPN :
$ vopono sync
Notez que lors de la création et du téléversement de nouvelles paires de clés Wireguard, il peut y avoir un léger délai avant qu'elles ne soient utilisables (environ 30 à 60 secondes sur Mullvad, par exemple).
Exécutez Firefox via une connexion Wireguard AzireVPN vers un serveur en Norvège :
$ vopono exec --provider azirevpn --server norway firefox
Vous devez exécuter vopono avec votre propre utilisateur (sans utiliser sudo), car il gérera l'élévation de privilèges lorsque nécessaire. Pour plus de détails sur l'exécution en tant que service systemd, etc., consultez le Guide de l'utilisateur.
Mode démon
Pour une expérience plus fluide, lancez le démon privilégié en tant que root et continuez à utiliser vopono comme votre utilisateur normal. La CLI transmet automatiquement les requêtes exec au démon s'il est en cours d'exécution.
- Démarrez-le une fois au démarrage via systemd :
sudo systemctl enable --now vopono - Ou exécutez-le manuellement en tant que root :
sudo vopono daemon - L'équivalent explicite est
sudo vopono daemon start; inspectez-le avecvopono daemon status --json. - Ensuite, utilisez vopono normalement avec votre utilisateur :
vopono exec --provider mullvad --server se firefox
Voir USERGUIDE.md pour une unité systemd prête à copier.
vopono peut gérer jusqu'à 255 espaces de noms réseau distincts (c'est-à-dire différentes connexions à des serveurs VPN - si votre fournisseur VPN le permet). Les commandes lancées avec le même préfixe de serveur et le même fournisseur VPN partageront le même espace de noms réseau.
Les options de configuration par défaut peuvent être enregistrées dans le fichier ~/.config/vopono/config.toml, par exemple :
firewall = "NfTables"
provider = "Mullvad"
protocol = "Wireguard"
server = "usa-us22"
Notez que les valeurs sont sensibles à la casse.
Consultez le Guide de l'utilisateur vopono pour des instructions d'utilisation beaucoup plus détaillées (y compris la gestion des démons et des serveurs).
Installation
AUR (Arch Linux)
Installez le paquet vopono-git avec votre helper AUR préféré.
$ paru -S vopono-git
$ vopono sync
Vous pouvez également utiliser le paquet vopono-bin si vous ne souhaitez pas compiler à partir des sources.
Raspberry Pi (Raspbian)
Téléchargez et installez le paquet vopono_x.y.z_armhf.deb depuis la page des versions :
$ sudo dpkg -i vopono_0.2.1_armhf.deb
Vous devrez installer OpenVPN (disponible dans les dépôts Raspbian) :
$ sudo apt install openvpn
Vous pouvez ensuite utiliser vopono comme ci-dessus (notez que le binaire Chromium est chromium-browser) :
$ vopono sync --protocol openvpn protonvpn
$ vopono exec --provider protonvpn --server sweden chromium-browser
Capture d'écran de vopono avec OpenVPN fonctionnant sur Raspbian :

Notez que Wireguard n'est pas dans les dépôts Raspbian, donc son installation n'est pas triviale. Vous pouvez suivre ce guide pour tenter de l'installer, mais notez que vous devez non seulement installer Wireguard et wireguard-tools pour que wg soit disponible, mais aussi linux-headers pour garantir son bon fonctionnement (c'est-à-dire pour ne pas obtenir uniquement des erreurs Protocol not supported lors de l'établissement d'une connexion).
Consultez le Guide de l'utilisateur pour plus de détails sur la redirection de port et l'utilisation de vopono avec des démons et des serveurs, si vous souhaitez utiliser votre Raspberry Pi pour exécuter privoxy ou transmission-daemon, etc.
Debian + Ubuntu
Installez le paquet deb fourni sur la page des versions.
Fedora + OpenSUSE
Installez le paquet rpm fourni sur la page des versions (choisissez la bonne version).
Gentoo Linux
Installez vopono depuis le dépôt principal.
$ emerge -av net-vpn/vopono
Autres Linux
Utilisez soit les binaires compilés sur la page des versions, soit installez à partir des sources avec Cargo comme documenté ci-dessous.
Depuis ce dépôt (avec Cargo)
Exécutez le script d'installation fourni : install.sh - cela installera le dépôt via cargo install et copiera les fichiers de configuration vers ~/.config/vopono/
Notez que la version minimale prise en charge de Rust est la 1.85 (requise pour l'édition 2024). Vous pouvez vérifier votre version avec :
$ rustc --version
Problèmes connus
- Lors du lancement d'une nouvelle application dans un espace de noms vopono existant, les modifications apportées aux règles du pare-feu (c'est-à-dire la redirection et l'ouverture de ports) ne seront pas appliquées (elles ne sont utilisées qu'à la création de l'espace de noms). Il en va de même pour la redirection de port.
- Les identifiants OpenVPN sont toujours stockés en texte clair dans la configuration - une option pourrait être ajoutée pour ne pas stocker les identifiants, mais il semble qu'OpenVPN en ait besoin fournis en texte clair.
- Il n'existe aucun moyen simple de supprimer les appareils MozillaVPN (paires de clés Wireguard) - contrairement à Mullvad, cela ne peut pas être fait sur la page web. Je recommande d'utiliser MozWire pour gérer cela.
gnome-terminalne s'exécutera pas dans l'espace de noms réseau en raison du modèle client-serveur - voir le problème #48- La redirection de port depuis l'intérieur de l'espace de noms réseau vers l'hôte (par exemple pour exécuter
transmission-daemon) ne fonctionne pas correctement lorsque vopono est exécuté en tant que root - voir le problème #84
Licence
vopono est sous licence GPL version 3.0 (ou ultérieure), voir le fichier LICENSE ou https://www.gnu.org/licenses/gpl-3.0.en.html
Étymologie
vopono est la prononciation des lettres VPN en espéranto.
Se vi ankaŭ parolas Esperanton, bonvolu serĉi min en la kanalo de Discord de Rust Programming Language Community.
Contribution
Sauf indication contraire explicite de votre part, toute contribution intentionnellement soumise pour inclusion dans le travail par vos soins sera sous licence GPLv3 (ou ultérieure), sans conditions ou modalités supplémentaires.
Un grand merci à MozWire de NilsIrl pour l'étude de l'API MozillaVPN.