
임시 네트워크 네임스페이스를 통해 VPN 터널로 애플리케이션 실행

vopono는 임시 네트워크 네임스페이스를 통해 VPN 터널로 애플리케이션을 실행하는 도구입니다. 이를 통해 기본 연결은 정상으로 유지하면서 소수의 애플리케이션만 서로 다른 VPN을 통해 동시에 실행할 수 있습니다.
vopono에는 Wireguard 및 OpenVPN용 기본 킬 스위치(killswitch)가 내장되어 있습니다.
현재 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로 생성하는 인증 방법은 사용자 가이드를 참조하십시오. 웹 브라우저에서 로그인한 상태로 같은 요청의 x-pm-uid 헤더 값인 yyy를 포함한 AUTH-xxx=yyy 형식의 인증 헤더를 복사해야 합니다.
*** ProtonVPN의 경우 특정 Wireguard 구성 파일을 생성하여 다운로드한 후 사용자 정의 공급자 구성으로 사용할 수 있습니다. 자세한 내용은 사용자 가이드를 참조하십시오. 포트 포워딩은 OpenVPN 및 Wireguard 모두에서 --port-forwarding 인자로 지원됩니다.
Wireguard와 함께 사용자 정의 구성을 사용하는 경우 사용할 포트 포워딩 구현을 --custom-port-forwarding으로 지정해야 합니다(즉, --provider custom --custom xxx.conf --protocol wireguard --custom-port-forwarding protonvpn). natpmpc가 설치되어 있어야 합니다.
OpenVPN의 경우 OpenVPN 사용자 이름에 +pmp를 추가하여 OpenVPN 구성 파일을 생성해야 하며, 이 기능을 지원하는 서버를 선택해야 합니다(예: 이 글을 작성하는 시점에는 Romania 서버가 지원함). 할당된 포트는 vopono가 실행된 터미널에 출력되며, 이를 필요로 하는 애플리케이션에 설정해야 합니다.
포트는 --port-forwarding-callback 인자를 통해 네트워크 네임스페이스 내에서 실행될 사용자 정의 스크립트에 전달할 수도 있습니다.
**** Cloudflare Warp는 자체 프로토콜을 사용합니다. 공급자와 프로토콜을 모두 warp로 설정하십시오. 먼저 vopono 외부에서 sudo warp-cli registration new로 등록한 다음 sudo warp-svc와 sudo warp-cli connect, sudo warp-cli debug connectivity-check disable로 한 번 실행해야 합니다. 그런 다음 sudo warp-cli disconnect를 실행하지 않은 채 sudo warp-svc를 종료하면 실행 시 자동으로 연결됩니다.
vopono로 시도하기 전에 먼저 이 방법이 작동하는지 확인하십시오.
AirVPN 포트 포워딩은 공급자 기능으로 지원되지만, 포워딩된 포트는 현재 AirVPN의 클라이언트 영역에서 구성해야 합니다. vopono는 AirVPN 계정 포트를 자동으로 요청하거나 전환하지 않습니다.
VPN 공급자 구성 파일을 설정합니다:
$ vopono sync
새 Wireguard 키 쌍을 생성하고 업로드할 때 사용할 수 있을 때까지 약간의 지연이 있을 수 있습니다(예: Mullvad의 경우 약 30~60초).
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 사용자 가이드를 참조하십시오.
선호하는 AUR 헬퍼로 vopono-git 패키지를 설치하십시오.
$ 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
Raspbian에서 OpenVPN으로 실행 중인 vopono 스크린샷:

참고: Wireguard는 Raspbian 저장소에 없으므로 설치가 간단하지 않습니다. 이 가이드를 따라 시도할 수 있지만, wg를 사용하려면 Wireguard와 wireguard-tools를 설치해야 할 뿐만 아니라 올바르게 작동하도록 linux-headers도 설치해야 합니다(즉, 연결을 설정할 때 Protocol not supported 오류만 발생하지 않도록).
Raspberry Pi를 사용하여 privoxy나 transmission-daemon 등을 실행하려는 경우 포트 포워딩 및 데몬/서버와 함께 vopono 사용에 대한 자세한 내용은 사용자 가이드를 참조하십시오.
릴리스 페이지에서 제공되는 deb 패키지를 설치하십시오.
릴리스 페이지에서 제공되는 rpm 패키지를 설치하십시오(올바른 버전 선택).
메인 저장소에서 vopono를 설치하십시오.
$ emerge -av net-vpn/vopono
릴리스 페이지의 컴파일된 바이너리를 사용하거나 아래에 문서화된 대로 Cargo로 소스에서 설치하십시오.
제공된 설치 스크립트 install.sh를 실행하십시오. 이 스크립트는 저장소를 cargo install하고 구성 파일을 ~/.config/vopono/로 복사합니다.
참고: 지원되는 최소 Rust 버전은 1.85입니다(2024 에디션에 필요). 다음 명령으로 버전을 확인할 수 있습니다:
$ rustc --version
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(이상)에 따라 라이선스가 부여됩니다.
MozillaVPN API 조사에 대한 NilsIrl의 MozWire에 많은 감사를 드립니다.