
Ejecuta aplicaciones a través de túneles VPN con espacios de nombres de red temporales

vopono es una herramienta para ejecutar aplicaciones a través de túneles VPN mediante espacios de nombres de red temporales. Esto permite ejecutar solo unas pocas aplicaciones a través de diferentes VPN simultáneamente, mientras se mantiene la conexión principal normal.
vopono incluye killswitches integrados tanto para Wireguard como para OpenVPN.
Actualmente, Mullvad, AzireVPN, MozillaVPN, ProtonVPN, iVPN, NordVPN, AirVPN y PrivateInternetAccess son compatibles directamente, y también se admiten archivos de configuración personalizados con el argumento --custom. Cloudflare Warp también es compatible.
Para conexiones personalizadas, también se admiten los protocolos OpenConnect y OpenFortiVPN (por ejemplo, para VPN empresariales). Consulte la Guía de usuario de vopono para obtener más detalles.
Captura de pantalla que muestra un ejemplo con firefox, google-chrome-stable y lynx ejecutándose a través de diferentes conexiones VPN:

| Proveedor | Soporte OpenVPN | Soporte Wireguard |
|---|---|---|
| Mullvad | ❌ | ✅ |
| AzireVPN | ❌ | ✅ |
| iVPN | ✅ | ✅ |
| PrivateInternetAccess | ✅ | ✅* |
| ProtonVPN | ✅** | ✅*** |
| MozillaVPN | ❌ | ✅ |
| NordVPN | ✅ | ❌ |
| AirVPN | ✅ | ❌ |
| Cloudflare Warp**** | ❌ | ❌ |
| Self host (--custom) | ✅ | ✅ |
* Reenvío de puertos compatible con la opción --port-forwarding y --port-forwarding-callback para ejecutar un comando cuando se actualiza el puerto.
** Consulte la Guía de usuario para obtener instrucciones de autenticación para generar los archivos de configuración de OpenVPN mediante vopono sync. Debe copiar el encabezado de autenticación de la forma AUTH-xxx=yyy donde yyy es el valor del encabezado x-pm-uid en la misma solicitud cuando haya iniciado sesión en su navegador web.
*** Para ProtonVPN, puede generar y descargar archivos de configuración específicos de Wireguard y usarlos como configuración de proveedor personalizada. Consulte la Guía de usuario para obtener más detalles. El reenvío de puertos es compatible con el argumento --port-forwarding tanto para OpenVPN como para Wireguard. Tenga en cuenta que, para usar una configuración personalizada con Wireguard, la implementación de reenvío de puertos que se debe usar debe especificarse con --custom-port-forwarding (es decir, con --provider custom --custom xxx.conf --protocol wireguard --custom-port-forwarding protonvpn). Debe tener instalado natpmpc. Tenga en cuenta que, para OpenVPN, debe generar los archivos de configuración de OpenVPN agregando +pmp a su nombre de usuario de OpenVPN, y debe elegir servidores que admitan esta función (por ejemplo, al momento de escribir esto, los servidores de Rumania no lo hacen). El puerto asignado se imprime en la terminal donde se inició vopono. Luego, debe configurarse en cualquier aplicación que lo requiera. El puerto también se puede pasar a un script personalizado que se ejecutará dentro del espacio de nombres de red a través del argumento --port-forwarding-callback.
**** Cloudflare Warp usa su propio protocolo. Establezca tanto el proveedor como el protocolo en warp. Tenga en cuenta que primero debe registrarse con sudo warp-cli registration new, luego ejecutarlo una vez con sudo warp-svc y sudo warp-cli connect y sudo warp-cli debug connectivity-check disable fuera de vopono. Luego finalice sudo warp-svc sin ejecutar sudo warp-cli disconnect para que se conecte automáticamente al ejecutarse. Verifique que esto funcione primero antes de intentarlo con vopono.
Configure los archivos de configuración del proveedor VPN:
$ vopono sync
Tenga en cuenta que al crear y cargar nuevos pares de claves Wireguard, puede haber un ligero retraso hasta que sean utilizables (aproximadamente 30-60 segundos en Mullvad, por ejemplo).
Ejecute Firefox a través de una conexión Wireguard de AzireVPN a un servidor en Noruega:
$ vopono exec --provider azirevpn --server norway firefox
Debe ejecutar vopono como su propio usuario (no usando sudo), ya que manejará la escalada de privilegios cuando sea necesario. Para obtener más detalles sobre la ejecución como un servicio systemd, etc., consulte la Guía de usuario.
Para una experiencia más fluida, ejecute el demonio root privilegiado y siga usando vopono como su usuario normal. La CLI reenvía automáticamente las solicitudes exec al demonio si está en ejecución.
sudo systemctl enable --now voponosudo vopono daemonvopono exec --provider mullvad --server se firefoxConsulte USERGUIDE.md para obtener una unidad systemd lista para copiar.
vopono puede manejar hasta 255 espacios de nombres de red separados (es decir, diferentes conexiones a servidores VPN, si su proveedor de VPN lo permite). Los comandos iniciados con el mismo prefijo de servidor y proveedor de VPN compartirán el mismo espacio de nombres de red.
Las opciones de configuración predeterminadas se pueden guardar en el archivo ~/.config/vopono/config.toml, por ejemplo:
firewall = "NfTables"
provider = "Mullvad"
protocol = "Wireguard"
server = "usa-us22"
Tenga en cuenta que los valores distinguen entre mayúsculas y minúsculas.
Consulte la Guía de usuario de vopono para obtener instrucciones de uso mucho más detalladas (incluido el manejo de demonios y servidores).
Instale el paquete vopono-git con su ayudante AUR favorito.
$ paru -S vopono-git
$ vopono sync
Alternativamente, use el paquete vopono-bin si no desea compilar desde el código fuente.
Descargue e instale el paquete vopono_x.y.z_armhf.deb desde la página de versiones:
$ sudo dpkg -i vopono_0.2.1_armhf.deb
Necesitará instalar OpenVPN (disponible en los repositorios de Raspbian):
$ sudo apt install openvpn
Luego puede usar vopono como se indicó anteriormente (tenga en cuenta que el binario de Chromium es chromium-browser):
$ vopono sync --protocol openvpn protonvpn
$ vopono exec --provider protonvpn --server sweden chromium-browser
Captura de pantalla de vopono con OpenVPN ejecutándose en Raspbian:

Tenga en cuenta que Wireguard no está en los repositorios de Raspbian, por lo que instalarlo no es trivial. Puede seguir esta guía para intentarlo, pero tenga en cuenta que no solo necesita instalar Wireguard y wireguard-tools para tener wg disponible, sino también los linux-headers para asegurarse de que funcione correctamente (es decir, que no obtenga errores de Protocol not supported al intentar establecer una conexión).
Consulte la Guía de usuario para obtener detalles sobre el reenvío de puertos y el uso de vopono con demonios y servidores, en caso de que desee usar su Raspberry Pi para ejecutar privoxy o transmission-daemon, etc.
Instale el paquete deb proporcionado en la página de versiones.
Instale el paquete rpm proporcionado en la página de versiones (elija la versión correcta).
Instale vopono desde el repositorio principal.
$ emerge -av net-vpn/vopono
Use los binarios compilados en la página de versiones, o instale desde el código fuente con Cargo como se documenta a continuación.
Ejecute el script de instalación proporcionado: install.sh; esto hará cargo install del repositorio y copiará los archivos de configuración a ~/.config/vopono/
Tenga en cuenta que la versión mínima de Rust compatible es la 1.85 (requerida para la edición 2024). Puede verificar su versión con:
$ rustc --version
gnome-terminal no se ejecutará en el espacio de nombres de red debido al modelo cliente-servidor; consulte el problema #48transmission-daemon) no funciona correctamente cuando vopono se ejecuta como root; consulte el problema #84vopono está licenciado bajo GPL Versión 3.0 (o superior); consulte el archivo LICENSE o https://www.gnu.org/licenses/gpl-3.0.en.html
vopono es la pronunciación de las letras VPN en esperanto.
Se vi ankaŭ parolas Esperanton, bonvolu serĉi min en la kanalo de Discord de Rust Programming Language Community.
A menos que usted indique explícitamente lo contrario, cualquier contribución enviada intencionalmente para su inclusión en el trabajo por usted será licenciada bajo GPLv3 (o superior), sin términos ni condiciones adicionales.
Muchas gracias a NilsIrl por su MozWire por la investigación de la API de MozillaVPN.