
vopono v0.10.21
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 te permite ejecutar solo unas pocas aplicaciones a través de diferentes VPN simultáneamente, mientras mantienes tu conexión principal con normalidad.
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). Consulta la Guía de usuario de vopono para más detalles.
Captura de pantalla
Captura de pantalla que muestra un ejemplo con firefox, google-chrome-stable y lynx ejecutándose a través de diferentes conexiones VPN:

Proveedores compatibles
| Proveedor | Soporte OpenVPN | Soporte Wireguard |
|---|---|---|
| Mullvad | ❌ | ✅ |
| AzireVPN | ❌ | ✅ |
| iVPN | ✅ | ✅ |
| PrivateInternetAccess | ✅ | ✅* |
| ProtonVPN | ✅** | ✅*** |
| MozillaVPN | ❌ | ✅ |
| NordVPN | ✅ | ❌ |
| AirVPN | ✅ | ✅ |
| Cloudflare Warp**** | ❌ | ❌ |
| Autoalojado (--custom) | ✅ | ✅ |
* El reenvío de puertos es compatible con la opción --port-forwarding y --port-forwarding-callback para ejecutar un comando cuando se renueva el puerto.
** Consulta la Guía de usuario para obtener instrucciones de autenticación para generar los archivos de configuración de OpenVPN mediante vopono sync. Debes copiar el encabezado de autenticación con la forma AUTH-xxx=yyy, donde yyy es el valor del encabezado x-pm-uid en la misma solicitud cuando has iniciado sesión en tu navegador web.
*** Para ProtonVPN puedes generar y descargar archivos de configuración específicos de Wireguard y usarlos como configuración de proveedor personalizada. Consulta la Guía de usuario para más detalles. El reenvío de puertos es compatible con el argumento --port-forwarding tanto para OpenVPN como para Wireguard. Ten en cuenta que, al usar una configuración personalizada con Wireguard, la implementación de reenvío de puertos a utilizar debe especificarse con --custom-port-forwarding (es decir, con --provider custom --custom xxx.conf --protocol wireguard --custom-port-forwarding protonvpn). natpmpc debe estar instalado. Ten en cuenta que para OpenVPN debes generar los archivos de configuración de OpenVPN añadiendo +pmp a tu nombre de usuario de OpenVPN, y debes elegir servidores que admitan esta función (por ejemplo, al momento de escribir esto, los servidores de Rumanía lo admiten). El puerto asignado se imprime entonces en la terminal donde se lanzó vopono; debe establecerse 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 mediante el argumento --port-forwarding-callback.
**** Cloudflare Warp utiliza su propio protocolo. Establece tanto el proveedor como el protocolo en warp. Ten en cuenta que primero debes registrarte con sudo warp-cli registration new y 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 mata sudo warp-svc sin ejecutar sudo warp-cli disconnect para que se conecte automáticamente al ejecutarse. Verifica que esto funcione primero antes de intentarlo con vopono.
El reenvío de puertos de AirVPN es compatible como una capacidad del proveedor, pero los puertos reenviados deben configurarse actualmente en el área de cliente de AirVPN; vopono no reclama ni alterna los puertos de la cuenta de AirVPN automáticamente.
Uso
Configura los archivos de configuración del proveedor VPN:
$ vopono sync
Ten en cuenta que al crear y subir nuevos pares de claves de Wireguard puede haber un ligero retraso hasta que sean utilizables (aproximadamente 30-60 segundos en Mullvad, por ejemplo).
Ejecuta Firefox a través de una conexión Wireguard de AzireVPN a un servidor en Noruega:
$ vopono exec --provider azirevpn --server norway firefox
Debes ejecutar vopono como tu propio usuario (no con sudo), ya que gestionará la elevación de privilegios cuando sea necesario. Para más detalles sobre ejecutarlo como un servicio systemd, etc., consulta la Guía de usuario.
Modo daemon
Para una experiencia más fluida, ejecuta el daemon privilegiado como root y sigue usando vopono como tu usuario normal. La CLI reenvía automáticamente las solicitudes exec al daemon si está en ejecución.
- Inícialo una vez al arrancar mediante systemd:
sudo systemctl enable --now vopono - O ejecútalo manualmente como root:
sudo vopono daemon - El equivalente explícito es
sudo vopono daemon start; inspecciónalo convopono daemon status --json. - Luego usa vopono normalmente como tu usuario:
vopono exec --provider mullvad --server se firefox
Consulta USERGUIDE.md para una unidad systemd lista para copiar.
vopono puede manejar hasta 255 espacios de nombres de red separados (es decir, diferentes conexiones de servidor VPN, si tu proveedor VPN lo permite). Los comandos lanzados con el mismo prefijo de servidor y proveedor 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"
Ten en cuenta que los valores distinguen entre mayúsculas y minúsculas.
Consulta la Guía de usuario de vopono para obtener instrucciones de uso mucho más detalladas (incluido el manejo de daemons y servidores).
Instalación
AUR (Arch Linux)
Instala el paquete vopono-git con tu ayuda de AUR favorita.
$ paru -S vopono-git
$ vopono sync
Alternativamente, usa el paquete vopono-bin si no quieres compilar desde el código fuente.
Raspberry Pi (Raspbian)
Descarga e instala el paquete vopono_x.y.z_armhf.deb desde la página de lanzamientos:
$ sudo dpkg -i vopono_0.2.1_armhf.deb
Necesitarás instalar OpenVPN (disponible en los repositorios de Raspbian):
$ sudo apt install openvpn
Luego puedes usar vopono como se indicó anteriormente (ten 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:

Ten en cuenta que Wireguard no está en los repositorios de Raspbian, por lo que instalarlo no es trivial. Puedes seguir esta guía para intentarlo, pero ten en cuenta que no solo necesitas instalar Wireguard y wireguard-tools para tener wg disponible, sino también linux-headers para asegurar que funcione correctamente (es decir, que no solo recibas errores de Protocol not supported al intentar establecer una conexión).
Consulta la Guía de usuario para obtener detalles sobre el reenvío de puertos y el uso de vopono con daemons y servidores, en caso de que quieras usar tu Raspberry Pi para ejecutar privoxy o transmission-daemon, etc.
Debian + Ubuntu
Instala el paquete deb proporcionado en la página de lanzamientos.
Fedora + OpenSUSE
Instala el paquete rpm proporcionado en la página de lanzamientos (elige la versión correcta).
Gentoo Linux
Instala vopono desde el repositorio principal.
$ emerge -av net-vpn/vopono
Otras distribuciones de Linux
Usa los binarios compilados en la página de lanzamientos o instala desde el código fuente con Cargo como se documenta a continuación.
Desde este repositorio (con Cargo)
Ejecuta el script de instalación proporcionado: install.sh; esto ejecutará cargo install en el repositorio y copiará los archivos de configuración a ~/.config/vopono/
Ten en cuenta que la versión mínima compatible de Rust es la 1.85 (requerida para la edición 2024). Puedes comprobar tu versión con:
$ rustc --version
Problemas conocidos
- Al lanzar una nueva aplicación en un espacio de nombres de vopono existente, cualquier modificación a las reglas del firewall (es decir, reenvío y apertura de puertos) no se aplicará (solo se usan al crear el espacio de nombres). Lo mismo aplica para el reenvío de puertos.
- Las credenciales de OpenVPN siempre se almacenan en texto plano en la configuración; puede que se añada una opción para no almacenar credenciales, pero parece que OpenVPN las necesita proporcionadas en texto plano.
- No hay una forma sencilla de eliminar dispositivos de MozillaVPN (pares de claves de Wireguard); a diferencia de Mullvad, esto no se puede hacer desde la página web. Recomiendo usar MozWire para gestionar esto.
gnome-terminalno se ejecutará en el espacio de nombres de red debido al modelo cliente-servidor; consulta el problema #48- El reenvío de puertos desde dentro del espacio de nombres de red hacia el host (por ejemplo, para ejecutar
transmission-daemon) no funciona correctamente cuando vopono se ejecuta como root; consulta el problema #84
Licencia
vopono está licenciado bajo la GPL Versión 3.0 (o superior); consulta el archivo LICENSE o https://www.gnu.org/licenses/gpl-3.0.en.html
Etimología
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.
Contribución
Salvo que declares explícitamente lo contrario, cualquier contribución enviada intencionalmente para su inclusión en el trabajo por tu parte, será licenciada bajo la GPLv3 (o superior), sin términos o condiciones adicionales.
Muchas gracias a NilsIrl's MozWire por la investigación de la API de MozillaVPN.