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

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 демону, если он запущен.
sudo systemctl enable --now voponosudo vopono daemonsudo vopono daemon start; просмотреть его состояние можно с помощью
vopono daemon status --json.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.
Установите пакет vopono-git с помощью вашего любимого AUR-хелпера.
$ paru -S vopono-git
$ vopono sync
В качестве альтернативы используйте пакет vopono-bin, если не хотите компилировать
из исходного кода.
Загрузите и установите пакет 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:

Обратите внимание: Wireguard отсутствует в репозиториях Raspbian, поэтому его установка
нетривиальна. Вы можете попробовать следовать этому руководству, но учтите, что
вам нужно установить не только Wireguard и wireguard-tools, чтобы был доступен wg,
но также и linux-headers, чтобы всё работало корректно
(т.е. чтобы при попытке установить соединение вы не получали просто ошибки Protocol not supported).
Подробности о пересылке портов и использовании vopono с демонами и серверами см. в Руководстве пользователя, если вы хотите использовать ваш Raspberry Pi для запуска privoxy или transmission-daemon и т.п.
Установите deb-пакет, предоставленный на странице релизов.
Установите rpm-пакет, предоставленный на странице релиза (выберите правильную версию).
Установите vopono из основного репозитория.
$ emerge -av net-vpn/vopono
Либо используйте скомпилированные бинарные файлы на странице релизов, либо установите из исходного кода с помощью Cargo, как описано ниже.
Запустите предоставленный скрипт установки: install.sh — он выполнит cargo install для репозитория и скопирует файлы конфигурации в
~/.config/vopono/
Обратите внимание: минимальная поддерживаемая версия Rust — 1.85 (требуется для edition 2024). Проверить свою версию можно с помощью:
$ rustc --version
gnome-terminal не будет работать в сетевом пространстве имён из-за
модели «клиент-сервер» — см. вопрос #48transmission-daemon) не работает корректно, когда vopono
запускается от root — см. вопрос #84vopono распространяется под лицензией 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.