
Запускайте приложения через 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:
