Назад к обновлениям
New releaseAug 22, 2026

vopono v0.10.21

Запускайте приложения через VPN-туннели с временными сетевыми пространствами имён

Поделиться

Логотип vopono

vopono — это инструмент для запуска приложений через VPN-туннели с использованием временных сетевых пространств имён. Это позволяет запускать лишь несколько приложений через разные VPN одновременно, в то время как ваше основное подключение остаётся без изменений.

vopono включает встроенные аварийные выключатели (killswitch) как для Wireguard, так и для OpenVPN.

В настоящее время напрямую поддерживаются Mullvad, AzireVPN, MozillaVPN, ProtonVPN, iVPN, NordVPN, AirVPN и PrivateInternetAccess; также поддерживаются пользовательские конфигурационные файлы с помощью аргумента --custom. Cloudflare Warp также поддерживается.

Для пользовательских подключений также поддерживаются протоколы OpenConnect и OpenFortiVPN (например, для корпоративных VPN). Подробнее см. в Руководстве пользователя vopono.

Скриншот

Скриншот, показывающий пример с firefox, google-chrome-stable и lynx, работающими через разные VPN-подключения:

Скриншот

Поддерживаемые провайдеры

ПровайдерПоддержка OpenVPNПоддержка Wireguard
Mullvad
AzireVPN
iVPN
PrivateInternetAccess✅*
ProtonVPN✅**✅***
MozillaVPN
NordVPN
AirVPN
Cloudflare Warp****
Свой хостинг (--custom)

* Пересылка портов поддерживается с помощью опции --port-forwarding и --port-forwarding-callback для запуска команды при обновлении порта.

** См. Руководство пользователя для получения инструкций по аутентификации для генерации файлов конфигурации OpenVPN с помощью vopono sync. Необходимо скопировать заголовок аутентификации вида AUTH-xxx=yyy, где yyy — значение заголовка x-pm-uid из того же запроса при входе в систему в вашем веб-браузере.

*** Для ProtonVPN вы можете сгенерировать и загрузить отдельные файлы конфигурации Wireguard и использовать их в качестве пользовательской конфигурации провайдера. Подробности см. в Руководстве пользователя. Пересылка портов поддерживается с помощью аргумента --port-forwarding как для OpenVPN, так и для Wireguard. При использовании пользовательской конфигурации с Wireguard реализацию пересылки портов следует указать с помощью --custom-port-forwarding (т.е. --provider custom --custom xxx.conf --protocol wireguard --custom-port-forwarding protonvpn). Должен быть установлен natpmpc. Для OpenVPN необходимо сгенерировать файлы конфигурации OpenVPN, добавив +pmp к вашему имени пользователя OpenVPN, и выбрать серверы, поддерживающие эту функцию (например, на момент написания статьи серверы в Румынии поддерживают её). Назначенный порт затем выводится в терминал, где был запущен vopono, — его следует указать в приложениях, которым он требуется. Порт также можно передать пользовательскому скрипту, который будет выполнен внутри сетевого пространства имён, через аргумент --port-forwarding-callback.

**** Cloudflare Warp использует собственный протокол. Установите и провайдера, и протокол в значение warp. Обратите внимание: сначала необходимо зарегистрироваться с помощью sudo warp-cli registration new, затем один раз запустить sudo warp-svc, sudo warp-cli connect и sudo warp-cli debug connectivity-check disable вне vopono — после чего завершить sudo warp-svc без выполнения sudo warp-cli disconnect, чтобы при запуске происходило автоматическое подключение. Пожалуйста, сначала убедитесь, что это работает, прежде чем пробовать использовать vopono.

Пересылка портов AirVPN поддерживается как возможность провайдера, но пересылаемые порты в настоящее время должны настраиваться в клиентской зоне AirVPN; vopono не резервирует и не переключает порты учётной записи AirVPN автоматически.

Использование

Настройте файлы конфигурации VPN-провайдера:

$ vopono sync

Обратите внимание: при создании и загрузке новых пар ключей Wireguard может быть небольшая задержка до момента, когда они станут доступны для использования (например, около 30-60 секунд на Mullvad).

Запустите Firefox через подключение AzireVPN Wireguard к серверу в Норвегии:

$ vopono exec --provider azirevpn --server norway firefox

Вам следует запускать vopono от имени вашего пользователя (не используя sudo), поскольку он сам выполнит повышение привилегий, когда это необходимо. Дополнительные сведения о запуске в качестве службы systemd и т.п. см. в Руководстве пользователя.

Режим демона

Для более удобной работы запустите привилегированный демон от root и продолжайте использовать vopono как обычный пользователь. CLI автоматически пересылает запросы exec демону, если он запущен.

  • Запустите один раз при загрузке через systemd: sudo systemctl enable --now vopono
  • Или запустите вручную от root: sudo vopono daemon
  • Явный эквивалент: sudo vopono daemon start; просмотреть его состояние можно с помощью vopono daemon status --json.
  • Затем используйте vopono как обычно от вашего пользователя: vopono exec --provider mullvad --server se firefox

Готовый к копированию юнит systemd см. в USERGUIDE.md.

vopono может обрабатывать до 255 отдельных сетевых пространств имён (т.е. разных подключений к VPN-серверам — если ваш VPN-провайдер это позволяет). Команды, запущенные с одним и тем же префиксом сервера и VPN-провайдером, используют одно и то же сетевое пространство имён.

Параметры конфигурации по умолчанию можно сохранить в файле ~/.config/vopono/config.toml, например:

firewall = "NfTables"
provider = "Mullvad"
protocol = "Wireguard"
server = "usa-us22"

Обратите внимание, что значения чувствительны к регистру.

Более подробные инструкции по использованию (включая работу с демонами и серверами) см. в Руководстве пользователя vopono.

Установка

AUR (Arch Linux)

Установите пакет vopono-git с помощью вашего любимого AUR-хелпера.

$ paru -S vopono-git
$ vopono sync

В качестве альтернативы используйте пакет vopono-bin, если не хотите компилировать из исходного кода.

Raspberry Pi (Raspbian)

Загрузите и установите пакет vopono_x.y.z_armhf.deb со страницы релизов:

$ sudo dpkg -i vopono_0.2.1_armhf.deb

Вам потребуется установить OpenVPN (доступен в репозиториях Raspbian):

$ sudo apt install openvpn

После этого вы можете использовать vopono, как описано выше (обратите внимание: бинарный файл Chromium — это chromium-browser):

$ vopono sync --protocol openvpn protonvpn
$ vopono exec --provider protonvpn --server sweden chromium-browser

Скриншот vopono с OpenVPN, работающим на Raspbian:

Скриншот Raspbian

Обратите внимание: Wireguard отсутствует в репозиториях Raspbian, поэтому его установка нетривиальна. Вы можете попробовать следовать этому руководству, но учтите, что вам нужно установить не только Wireguard и wireguard-tools, чтобы был доступен wg, но также и linux-headers, чтобы всё работало корректно (т.е. чтобы при попытке установить соединение вы не получали просто ошибки Protocol not supported).

Подробности о пересылке портов и использовании vopono с демонами и серверами см. в Руководстве пользователя, если вы хотите использовать ваш Raspberry Pi для запуска privoxy или transmission-daemon и т.п.

Debian + Ubuntu

Установите deb-пакет, предоставленный на странице релизов.

Fedora + OpenSUSE

Установите rpm-пакет, предоставленный на странице релиза (выберите правильную версию).

Gentoo Linux

Установите vopono из основного репозитория.

$ emerge -av net-vpn/vopono

Другие Linux

Либо используйте скомпилированные бинарные файлы на странице релизов, либо установите из исходного кода с помощью Cargo, как описано ниже.

Из этого репозитория (с помощью Cargo)

Запустите предоставленный скрипт установки: install.sh — он выполнит cargo install для репозитория и скопирует файлы конфигурации в ~/.config/vopono/

Обратите внимание: минимальная поддерживаемая версия Rust — 1.85 (требуется для edition 2024). Проверить свою версию можно с помощью:

$ rustc --version

Известные проблемы

  • При запуске нового приложения в существующем пространстве имён vopono любые изменения правил межсетевого экрана (т.е. пересылка и открытие портов) не будут применены (они используются только при создании пространства имён). То же самое касается пересылки портов.
  • Учётные данные OpenVPN всегда хранятся в конфигурации в открытом виде — возможно, будет добавлена опция, позволяющая не хранить учётные данные, но, похоже, OpenVPN требует их предоставления в открытом виде.
  • Не существует простого способа удалить устройства MozillaVPN (пары ключей Wireguard) — в отличие от Mullvad, это нельзя сделать на веб-странице. Я рекомендую использовать MozWire для управления ими.
  • gnome-terminal не будет работать в сетевом пространстве имён из-за модели «клиент-сервер» — см. вопрос #48
  • Пересылка портов изнутри сетевого пространства имён на хост (например, для запуска transmission-daemon) не работает корректно, когда vopono запускается от root — см. вопрос #84

Лицензия

vopono распространяется под лицензией GPL версии 3.0 (или выше); см. файл LICENSE или https://www.gnu.org/licenses/gpl-3.0.en.html

Этимология

vopono — это произношение букв VPN на эсперанто.

Se vi ankaŭ parolas Esperanton, bonvolu serĉi min en la kanalo de Discord de Rust Programming Language Community.

Вклад

Если вы явно не укажете иное, любой вклад, намеренно отправленный вами для включения в работу, будет лицензирован на условиях GPLv3 (или выше) без каких-либо дополнительных условий.

Огромное спасибо MozWire от NilsIrl за исследование API MozillaVPN.

Категории