
vopono v0.10.21
Esegui applicazioni attraverso tunnel VPN con namespace di rete temporanei.

vopono è uno strumento per eseguire applicazioni attraverso tunnel VPN tramite namespace di rete temporanei. Questo ti permette di eseguire solo alcune applicazioni attraverso diverse VPN simultaneamente, mantenendo la tua connessione principale normale.
vopono include killswitch integrati sia per Wireguard che per OpenVPN.
Attualmente Mullvad, AzireVPN, MozillaVPN, ProtonVPN, iVPN, NordVPN, AirVPN e PrivateInternetAccess sono supportati direttamente, con supporto anche per file di configurazione personalizzati tramite l'argomento --custom. Anche Cloudflare Warp è supportato.
Per connessioni personalizzate sono supportati anche i protocolli OpenConnect e OpenFortiVPN (ad es. per VPN aziendali). Vedi la Guida utente di vopono per maggiori dettagli.
Screenshot
Screenshot che mostra un esempio con firefox, google-chrome-stable e lynx in esecuzione attraverso diverse connessioni VPN:

Provider supportati
| Provider | Supporto OpenVPN | Supporto Wireguard |
|---|---|---|
| Mullvad | ❌ | ✅ |
| AzireVPN | ❌ | ✅ |
| iVPN | ✅ | ✅ |
| PrivateInternetAccess | ✅ | ✅* |
| ProtonVPN | ✅** | ✅*** |
| MozillaVPN | ❌ | ✅ |
| NordVPN | ✅ | ❌ |
| AirVPN | ✅ | ✅ |
| Cloudflare Warp**** | ❌ | ❌ |
| Self-host (--custom) | ✅ | ✅ |
* Il port forwarding è supportato con l'opzione --port-forwarding e --port-forwarding-callback per eseguire un comando quando la porta viene aggiornata.
** Consulta la Guida utente per le istruzioni di autenticazione per generare i file di configurazione OpenVPN tramite vopono sync. Devi copiare l'header di autenticazione della forma AUTH-xxx=yyy dove yyy è il valore dell'header x-pm-uid nella stessa richiesta quando sei autenticato nel tuo browser web.
*** Per ProtonVPN puoi generare e scaricare file di configurazione Wireguard specifici e usarli come configurazione personalizzata del provider. Vedi la Guida utente per i dettagli. Il Port Forwarding è supportato con l'argomento --port-forwarding sia per OpenVPN che per Wireguard.
Nota: per usare una configurazione personalizzata con Wireguard, l'implementazione del port forwarding da utilizzare deve essere specificata con --custom-port-forwarding (cioè con --provider custom --custom xxx.conf --protocol wireguard --custom-port-forwarding protonvpn). natpmpc deve essere installato.
Nota per OpenVPN: devi generare i file di configurazione OpenVPN aggiungendo +pmp al tuo nome utente OpenVPN e devi scegliere server che supportano questa funzionalità (ad es. al momento della scrittura, i server della Romania lo supportano). La porta assegnata viene quindi stampata sul terminale in cui è stato lanciato vopono - dovrebbe quindi essere impostata in qualsiasi applicazione che la richieda.
La porta può anche essere passata a uno script personalizzato che verrà eseguito all'interno del namespace di rete tramite l'argomento --port-forwarding-callback.
**** Cloudflare Warp usa il proprio protocollo. Imposta sia il provider che il protocollo su warp. Nota: devi prima registrarti con sudo warp-cli registration new, quindi eseguirlo una volta con sudo warp-svc e sudo warp-cli connect e sudo warp-cli debug connectivity-check disable al di fuori di vopono - poi termina sudo warp-svc senza eseguire sudo warp-cli disconnect così si riconnetterà automaticamente all'avvio.
Verifica che funzioni prima di provarlo con vopono.
Il port forwarding AirVPN è supportato come funzionalità del provider, ma le porte inoltrate devono attualmente essere configurate nell'area client di AirVPN; vopono non rivendica né attiva automaticamente le porte dell'account AirVPN.
Utilizzo
Configura i file di configurazione del provider VPN:
$ vopono sync
Nota: quando crei e carichi nuove coppie di chiavi Wireguard potrebbe esserci un leggero ritardo prima che siano utilizzabili (circa 30-60 secondi su Mullvad, per esempio).
Esegui Firefox attraverso una connessione Wireguard AzireVPN a un server in Norvegia:
$ vopono exec --provider azirevpn --server norway firefox
Dovresti eseguire vopono come tuo utente (non usando sudo) poiché gestirà l'elevazione dei privilegi quando necessario. Per maggiori dettagli su come eseguirlo come servizio systemd, ecc., vedi la Guida utente.
Modalità daemon
Per un'esperienza più fluida, esegui il daemon privilegiato come root e continua a usare vopono come utente normale. La CLI inoltra automaticamente le richieste exec al daemon se è in esecuzione.
- Avvia una volta all'avvio tramite systemd:
sudo systemctl enable --now vopono - Oppure eseguilo manualmente come root:
sudo vopono daemon - L'equivalente esplicito è
sudo vopono daemon start; controllalo convopono daemon status --json. - Poi usa vopono normalmente come tuo utente:
vopono exec --provider mullvad --server se firefox
Vedi USERGUIDE.md per un'unità systemd pronta da copiare.
vopono può gestire fino a 255 namespace di rete separati (cioè diverse connessioni a server VPN - se il tuo provider VPN lo consente). I comandi lanciati con lo stesso prefisso server e lo stesso provider VPN condivideranno lo stesso namespace di rete.
Le opzioni di configurazione predefinite possono essere salvate nel file ~/.config/vopono/config.toml, per esempio:
firewall = "NfTables"
provider = "Mullvad"
protocol = "Wireguard"
server = "usa-us22"
Nota che i valori sono sensibili alle maiuscole/minuscole.
Vedi la Guida utente di vopono per istruzioni d'uso molto più dettagliate (inclusa la gestione di daemon e server).
Installazione
AUR (Arch Linux)
Installa il pacchetto vopono-git con il tuo helper AUR preferito.
$ paru -S vopono-git
$ vopono sync
In alternativa, usa il pacchetto vopono-bin se non vuoi compilare dal sorgente.
Raspberry Pi (Raspbian)
Scarica e installa il pacchetto vopono_x.y.z_armhf.deb dalla pagina delle release:
$ sudo dpkg -i vopono_0.2.1_armhf.deb
Dovrai installare OpenVPN (disponibile nei repository Raspbian):
$ sudo apt install openvpn
Puoi quindi usare vopono come sopra (nota che il binario di Chromium è chromium-browser):
$ vopono sync --protocol openvpn protonvpn
$ vopono exec --provider protonvpn --server sweden chromium-browser
Screenshot di vopono con OpenVPN in esecuzione su Raspbian:

Nota: Wireguard non è nei repository Raspbian, quindi installarlo non è banale. Puoi seguire questa guida per provarci, ma nota che non devi solo installare Wireguard e wireguard-tools per avere wg disponibile, ma anche i linux-headers per assicurarti che funzioni correttamente (cioè non ricevi semplicemente errori Protocol not supported quando tenti di stabilire una connessione).
Controlla la Guida utente per i dettagli sul port forwarding e sull'uso di vopono con daemon e server, nel caso tu voglia usare il tuo Raspberry Pi per eseguire privoxy o transmission-daemon, ecc.
Debian + Ubuntu
Installa il pacchetto deb fornito nella pagina delle release.
Fedora + OpenSUSE
Installa il pacchetto rpm fornito nella pagina delle release (scegli la versione corretta).
Gentoo Linux
Installa vopono dal repository principale.
$ emerge -av net-vpn/vopono
Altre distribuzioni Linux
Puoi usare i binari compilati nella pagina delle release, oppure installare dal sorgente con Cargo come documentato di seguito.
Da questo repository (con Cargo)
Esegui lo script di installazione fornito: install.sh - questo eseguirà cargo install del repository e copierà i file di configurazione in ~/.config/vopono/
Nota: la versione minima supportata di Rust è la 1.85 (richiesta per l'edition 2024). Puoi controllare la tua versione con:
$ rustc --version
Problemi noti
- Quando si lancia una nuova applicazione in un namespace vopono esistente, le eventuali modifiche alle regole del firewall (cioè l'inoltro e l'apertura delle porte) non verranno applicate (vengono usate solo quando si crea il namespace). Lo stesso vale per il port forwarding.
- Le credenziali OpenVPN sono sempre memorizzate in chiaro nella configurazione - potrebbe essere aggiunta un'opzione per non memorizzare le credenziali, ma sembra che OpenVPN le richieda in chiaro.
- Non esiste un modo semplice per eliminare i dispositivi MozillaVPN (coppie di chiavi Wireguard) - a differenza di Mullvad, questo non può essere fatto dalla pagina web. Raccomando di usare MozWire per gestirlo.
gnome-terminalnon verrà eseguito nel namespace di rete a causa del modello client-server - vedi issue #48- Il port forwarding dall'interno del namespace di rete verso l'host (ad es. per eseguire
transmission-daemon) non funziona correttamente quando vopono viene eseguito come root - vedi issue #84
Licenza
vopono è concesso in licenza sotto GPL versione 3.0 (o successive), vedi il file LICENSE o https://www.gnu.org/licenses/gpl-3.0.en.html
Etimologia
vopono è la pronuncia delle lettere VPN in Esperanto.
Se vi ankaŭ parolas Esperanton, bonvolu serĉi min en la kanalo de Discord de Rust Programming Language Community.
Contributi
Salvo dichiarazione contraria esplicita, qualsiasi contributo inviato intenzionalmente per l'inclusione nell'opera da parte tua sarà concesso in licenza sotto GPLv3 (o successive), senza termini o condizioni aggiuntivi.
Molte grazie a MozWire di NilsIrl per l'analisi dell'API di MozillaVPN.