### Install Vopono on Raspberry Pi (Debian) Source: https://github.com/jamesmcm/vopono/blob/master/README.md Download and install the .deb package for Raspberry Pi. Ensure OpenVPN is installed separately using apt. ```bash sudo dpkg -i vopono_0.2.1_armhf.deb ``` ```bash sudo apt install openvpn ``` -------------------------------- ### Install Vopono with paru Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Install the vopono package using the paru AUR helper. ```bash $ paru -S vopono-bin ``` -------------------------------- ### Install Vopono via Gentoo Emerge Source: https://github.com/jamesmcm/vopono/blob/master/README.md Install Vopono from the main Gentoo repository using the emerge command. ```bash $ emerge -av net-vpn/vopono ``` -------------------------------- ### Run Vopono Locally with Provider Source: https://github.com/jamesmcm/vopono/blob/master/AGENTS.md Example command to execute Vopono with a specific provider and server, launching a Firefox browser. ```bash cargo run -- exec --provider mullvad --server se firefox ``` -------------------------------- ### Vopono Configuration File Example Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md An example TOML configuration file for Vopono, showing how to set default options such as firewall, provider, protocol, server, and custom scripts. Note that values are case-sensitive. ```toml firewall = "NfTables" provider = "Mullvad" protocol = "Wireguard" server = "usa-us22" postup = "/home/archie/postup.sh" predown = "/home/archie/predown.sh" user = "archie" dns = "8.8.8.8" # custom = "/home/user/vpn/mycustomconfig.ovpn" ``` -------------------------------- ### Install Vopono via AUR Source: https://github.com/jamesmcm/vopono/blob/master/README.md Use an AUR helper like paru to install the vopono-git package. After installation, run 'vopono sync' to synchronize. ```bash $ paru -S vopono-git $ vopono sync ``` -------------------------------- ### Install Vopono from Repository Source: https://github.com/jamesmcm/vopono/blob/master/AGENTS.md Shell script to install Vopono directly from the repository, which internally uses cargo install. ```bash ./install.sh ``` -------------------------------- ### Start Vopono Daemon via Systemd Source: https://github.com/jamesmcm/vopono/blob/master/README.md Enable and start the Vopono root daemon at boot using systemd for a smoother experience. This allows normal users to forward exec requests to the daemon. ```bash sudo systemctl enable --now vopono ``` -------------------------------- ### Start systemd User Service Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Command to start a user-managed systemd service for Vopono. ```bash systemctl start --user vopono ``` -------------------------------- ### Launch Vopono for Plex with ProtonVPN Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Example command to launch Vopono, executing the Plex launch script with specific configurations for ProtonVPN using Wireguard. ```bash $ vopono exec --user plex --custom ~/Downloads/protonvpn-RO-9.conf --protocol wireguard --provider custom --custom-port-forwarding protonvpn -o 32400 /home/plex/plex_launch.sh ``` -------------------------------- ### Start Vopono Daemon Source: https://github.com/jamesmcm/vopono/blob/master/AGENTS.md Command to start the Vopono root daemon, recommended for local development to handle non-root exec commands. ```bash sudo -E cargo run -- daemon ``` -------------------------------- ### Run Jackett with Vopono Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Starts Jackett within a Vopono namespace, exposing its web UI on the host machine while routing all Jackett's connections through the VPN. ```bash $ vopono -v exec -u jackett "/usr/lib/jackett/jackett --NoRestart --NoUpdates --DataFolder /var/lib/jackett" -f 9117 ``` -------------------------------- ### ProtonVPN Port Forwarding Allocation Example Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md When using ProtonVPN port forwarding, the allocated port is printed to the console. This example shows the expected output format. ```log 2023-11-04T14:47:31.416Z INFO vopono::exec > ProtonVPN Port Forwarding on port 62508 ``` -------------------------------- ### Synchronizing Wireguard configuration with Vopono Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Commands to install Vopono and use the 'vopono sync' command to create Wireguard configuration files and generate a keypair. ```bash $ paru -S vopono-bin $ vopono sync --protocol wireguard ``` -------------------------------- ### Executing an application with Wireguard using Vopono Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Example command to run an application (transmission-gtk) through a Wireguard tunnel managed by Vopono, specifying the provider and server. ```bash $ vopono exec --provider mullvad --server sweden --protocol wireguard "transmission-gtk" ``` -------------------------------- ### Cloudflare Warp connection trace example output Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md This is an example output from the Cloudflare IP trace command, showing connection details and confirming 'warp=on'. ```text fl=xxx h=cloudflare.com ip=xxx ts=xxx visit_scheme=https uag=curl/8.13.0 colo=MAD sliver=none http=http/2 loc=XX tls=TLSv1.3 sni=plaintext warp=on gateway=off rbi=off kex=xxx ``` -------------------------------- ### Viewing Network Namespace Configuration Files Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Examples of viewing configuration files within a specific network namespace. This is useful for verifying DNS settings and other network configurations applied to the namespace. ```bash $ bat -p /etc/netns/vo_none_None/resolv.conf search xxx nameserver a.b.c.d $ bat -p /etc/netns/vo_none_None/gai.conf # Prefer IPv4 over IPv6 precedence ::ffff:0:0/96 100 scopev4 ::ffff:169.254.0.0/112 2 scopev4 ::ffff:127.0.0.0/104 2 scopev4 ::ffff:0.0.0.0/96 14 ``` -------------------------------- ### Start a program in an existing network namespace Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md This command adds a new program to an already established network namespace, ensuring it uses the same VPN tunnel and binds to the existing namespace. ```bash $ vopono -v exec -k --provider azirevpn --server norway "program_b -flag" ``` -------------------------------- ### Example PostUp script Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md A simple bash script that echoes received arguments. This script is intended to be executed by Vopono's --postup argument. ```bash #!/bin/bash echo "arg1: $1 arg2: $2" ``` -------------------------------- ### Launch Vopono with Privoxy and AzireVPN Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Example command to run Privoxy within a Vopono network namespace using AzireVPN, forwarding port 8118. ```bash $ vopono -v exec --provider azirevpn -k -u root -f 8118 --server norway "privoxy --chroot --user privoxy /etc/privoxy/config" ``` -------------------------------- ### OpenFortiVPN Custom Provider Configuration Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Example OpenFortiVPN configuration file. Ensure 'set-dns' and 'pppd-use-peerdns' are set to '0' and 'pppd-log' is included for vopono to process pppd output. ```ini host = vpn.company.net port = 443 username = myuser password = mypassword set-dns = 0 pppd-use-peerdns = 0 pppd-log = /tmp/pppd.log ``` -------------------------------- ### Systemd Unit for Vopono Root Daemon Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Example systemd unit file to enable and manage the Vopono root daemon. Ensure this is placed in /etc/systemd/system/. ```systemd [Unit] Description=Vopono root daemon After=network.target Requires=network.target [Service] Type=simple ExecStart=/usr/bin/vopono daemon Restart=on-failure RestartSec=2s # Optional: enable structured logs Environment=RUST_LOG=info [Install] WantedBy=multi-user.target ``` -------------------------------- ### Output of in-namespace script execution Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md The expected output when running the example bash script inside the network namespace using Vopono. ```text => NETWORK NAMESPACE IP: 10.200.1.2 => HOST IP: 10.200.1.1 ``` -------------------------------- ### Check Rust Version Source: https://github.com/jamesmcm/vopono/blob/master/README.md Verify the installed Rust compiler version. A minimum of Rust 1.85 is required for edition 2024. ```bash $ rustc --version ``` -------------------------------- ### Configure systemd User Service for Vopono Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Example systemd user service file to keep a Vopono daemon running, suitable for applications like transmission-daemon. ```ini [Service] ExecStart=/usr/bin/vopono -v exec -k -f 9091 --protocol wireguard --provider mullvad --server romania "transmission-daemon -a *.*.*.*" ``` -------------------------------- ### Vopono Usage with OpenVPN on Raspberry Pi Source: https://github.com/jamesmcm/vopono/blob/master/README.md Examples of using vopono to sync with OpenVPN and execute commands through a specified server, noting the Chromium binary name on Raspbian. ```bash $ vopono sync --protocol openvpn protonvpn $ vopono exec --provider protonvpn --server sweden chromium-browser ``` -------------------------------- ### Registering and running Cloudflare Warp CLI Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Cloudflare Warp users must first register via the CLI client and then run Warp to enable automatic connection. This example shows the necessary commands. ```bash $ sudo warp-svc $ sudo warp-cli registration new ``` ```bash $ sudo warp-svc $ sudo warp-cli connect $ sudo warp-cli debug connectivity-check disable ``` -------------------------------- ### Run Vopono Daemon Manually Source: https://github.com/jamesmcm/vopono/blob/master/README.md Manually start the privileged root daemon if not using systemd. This is required for normal user commands to forward requests to the daemon. ```bash sudo vopono daemon ``` -------------------------------- ### Running commands inside the network namespace Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Example of a bash script designed to run inside a Vopono network namespace. It utilizes environment variables like VOPONO_NS_IP and VOPONO_HOST_IP. ```bash #!/bin/bash echo "=> NETWORK NAMESPACE IP: $VOPONO_NS_IP" echo "=> HOST IP: $VOPONO_HOST_IP" ``` -------------------------------- ### Custom Trojan Configuration JSON Example Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md This JSON defines the parameters for a Trojan forward connection. It includes local and remote addresses, ports, passwords, and SSL/TCP settings. ```json { "run_type": "forward", "local_addr": "127.0.0.1", "local_port": 1637, "remote_addr": "yourdomain.xyz", "remote_port": 443, "target_addr": "wireguard_endpoint", "target_port": 1637, "password": [ "password1" ], "udp_timeout": 60, "log_level": 1, "ssl": { "verify": true, "verify_hostname": true, "cert": "/home/archie/trojancert.crt", "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA", "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384", "sni": "yourdomain.xyz", "alpn": [ "h2", "http/1.1" ], "reuse_session": true, "session_ticket": false, "curves": "" }, "tcp": { "no_delay": true, "keep_alive": true, "reuse_port": false, "fast_open": false, "fast_open_qlen": 20 } } ``` -------------------------------- ### Running Bash inside a Wireguard Tunnel Network Namespace Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md This example shows how to create a network namespace for use within an existing Wireguard tunnel. It then executes a bash shell inside this namespace, which can be used to run internal VPN commands. ```bash $ vopono -v exec --create-netns-only --provider None --protocol None --server None -i foo bash $ sudo ip netns exec vo_none_None bash $ ./vpn.sh ``` -------------------------------- ### Wireguard Client Configuration for UDP2RAW Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md This is an example Wireguard configuration file used with udp2raw. It specifies the interface details, MTU, and crucially, the Endpoint for the Wireguard peer, which should point to the local udp2raw listening socket. ```conf [Interface] Address = ... PrivateKey = ... MTU = 1300 DNS = 10.128.0.1, fd7d:76ee:e68f:a993::1 [Peer] PublicKey = ... PresharedKey = ... # Endpoint = ... # See Endpoint here: Endpoint = 127.0.0.1:1637 AllowedIPs = 0.0.0.0/0,::/0 PersistentKeepalive = 15 ``` -------------------------------- ### Generating Wireguard custom config with ProtonVPN Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md For ProtonVPN Wireguard, generate the configuration online and use it as a custom configuration file with vopono. This example shows how to execute this with Firefox Developer Edition. ```bash $ vopono -v exec --provider custom --custom testwg-UK-17.conf --protocol wireguard --custom-port-forwarding protonvpn firefox-developer-edition ``` -------------------------------- ### Running Cloudflare Warp with Vopono Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md To run Cloudflare Warp with vopono, disable the connectivity check and kill all other warp-svc instances. This example executes Warp with Firefox Developer Edition. ```bash $ vopono -v exec --no-killswitch --provider warp --protocol warp firefox-developer-edition ``` -------------------------------- ### List Possible Servers with Prefix Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Use the `--server` argument as a prefix to list all possible server configurations for a given provider. This helps in identifying available VPN endpoints. ```bash $ vopono servers mullvad --prefix usa provider protocol config_file Mullvad openvpn usa-us.ovpn Mullvad wireguard usa-us40.conf Mullvad wireguard usa-us145.conf Mullvad wireguard usa-us52.conf ... ``` -------------------------------- ### Execute Custom OpenVPN Configuration Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Run an application using a custom OpenVPN configuration file. ```bash $ vopono -v exec --custom ./custom_openvpn.ovpn --protocol openvpn "firefox" ``` -------------------------------- ### Launch Plex Media Server with Port Forwarding Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md This script sets up environment variables for Plex and uses socat to forward incoming connections on a forwarded port to Plex's local port. It's designed to be run within a Vopono network namespace. ```bash #!/bin/bash # Plex config env vars export LD_LIBRARY_PATH=/usr/lib/plexmediaserver/lib export PLEX_MEDIA_SERVER_HOME=/usr/lib/plexmediaserver export PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR=/var/lib/plex export PLEX_MEDIA_SERVER_MAX_PLUGIN_PROCS=6 export PLEX_MEDIA_SERVER_TMPDIR=/tmp export TMPDIR=/tmp PLEX_LOCAL_PORT=32400 # Seems this is hardcoded in Plex # local address will only be accesible if running vopono with -o 32400 echo "local Plex address: http://$VOPONO_NS_IP:$PLEX_LOCAL_PORT" # This assume using --port-forwarding or --custom-port-forwarding for ProtonVPN or PIA echo "remote Plex address: http://$(curl -4s ifconfig.co):$VOPONO_FORWARDED_PORT" # Here we redirect incoming connections on the forwarded to the port to the local Plex one (since we cannot change it! unlike transmission-gtk etc.) # Run this in background as it would block socat tcp-l:"$VOPONO_FORWARDED_PORT",fork,reuseaddr tcp:"$VOPONO_NS_IP":"$PLEX_LOCAL_PORT" & /usr/lib/plexmediaserver/Plex\ Media\ Server # Kill socat background process on termination kill %1 ``` -------------------------------- ### Build and Run Tests Source: https://github.com/jamesmcm/vopono/blob/master/AGENTS.md Commands to build the project and run all tests across the workspace. ```bash cargo build cargo test --workspace ``` -------------------------------- ### Execute Custom Wireguard Configuration Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Run an application using a custom Wireguard configuration file. ```bash $ vopono -v exec --custom ~/custom_wireguard.conf --protocol wireguard "firefox" ``` -------------------------------- ### Creating Network Namespace and Running Firefox with Firejail Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Demonstrates creating a network namespace using vopono and then launching Firefox within that namespace using firejail. The '--create-netns-only' flag is used to ensure the namespace persists. ```bash $ vopono -v exec --provider protonvpn --server japan --protocol openvpn --create-netns-only none 2023-11-26T11:17:52.623Z INFO vopono::exec > Created netns vo_pr_japan - will leave network namespace alive until ctrl+C received $ firejail --netns=vo_pr_japan firefox-developer-edition ``` -------------------------------- ### Clean, Format, and Lint Project Source: https://github.com/jamesmcm/vopono/blob/master/CONTRIBUTING.md Run these commands to clean the project, format the code, and check for linting errors before submitting a pull request. Ensure Rustfmt and Clippy are used. ```bash $ cargo clean $ cargo fmt $ cargo clippy --all-features --all-targets ``` -------------------------------- ### Sync VPN Provider Configurations Source: https://github.com/jamesmcm/vopono/blob/master/README.md Use this command to synchronize your VPN provider configuration files. Ensure your provider configuration files are set up before running. ```bash $ vopono sync ``` -------------------------------- ### Execute Application via AzireVPN Wireguard Source: https://github.com/jamesmcm/vopono/blob/master/README.md Run Firefox through an AzireVPN Wireguard connection to a server in Norway. Vopono handles privilege escalation automatically. ```bash $ vopono exec --provider azirevpn --server norway firefox ``` -------------------------------- ### Set Plex Script Permissions Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Commands to ensure the Plex user has the necessary permissions to execute the Plex launch script. ```bash sudo chown -R plex /home/plex/ sudo chmod 777 /home/plex/plex_launch.sh ``` -------------------------------- ### Passing arguments to PostUp scripts Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Demonstrates how to pass arguments to a PostUp script when it's executed by Vopono. Ensure proper escaping for paths with spaces. ```bash --postup "~/test\ postup.sh argy1 argy2" ``` -------------------------------- ### Sync OpenVPN Configuration Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Use vopono sync to create OpenVPN configuration files and server lists. ```bash $ vopono sync --protocol openvpn ``` -------------------------------- ### Execute with OpenFortiVPN Custom Provider Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Run an application using a custom OpenFortiVPN configuration file. Vopono will handle DNS settings within the network namespace. ```bash vopono -v exec --protocol OpenFortiVPN --custom /home/user/myvpn.conf firefox ``` -------------------------------- ### Running Chrome within a Network Namespace using Vopono Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Demonstrates how to launch Google Chrome within a pre-existing network namespace using vopono. This command ensures that Chrome runs with the network configurations defined by the specified namespace. ```bash $ vopono -v exec --protocol None --provider None --server None google-chrome-stable ``` -------------------------------- ### Using a downloaded OpenVPN config with ProtonVPN Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md When using a downloaded OpenVPN config file directly with vopono, remove specific 'up' and 'down' lines related to resolv-conf updates. Append '+pmp' to the OpenVPN username if port forwarding is used. ```bash up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf ``` -------------------------------- ### Run transmission-daemon with Vopono Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Launches transmission-daemon, making it externally accessible on a specified port via a VPN. The -a *.*.*.* argument is required for web portal access. ```bash $ vopono -v exec -k -f 9091 --provider azirevpn --server norway "transmission-daemon -a *.*.*.*" ``` -------------------------------- ### Launch Graphical Application via VPN Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Launch a graphical application, like Firefox, through a specified VPN provider and server. The network namespace is cleaned up upon application termination. ```bash $ vopono exec --provider privateinternetaccess --server mexico "firefox" ``` -------------------------------- ### Run multiple servers with Vopono and specific ports Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md This command allows multiple incoming TCP connections to specified ports within the namespace, proxied to the host. The -k flag keeps the connection alive. ```bash $ vopono -v exec -k -f 8080 -f 8081 -f 8082 --provider azirevpn --server norway "program_a -flag" ``` -------------------------------- ### List Running Vopono Namespaces Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Command to display a list of active Vopono network namespaces and their associated applications. ```bash $ vopono list namespaces namespace provider protocol num_applications uptime vopono_tig_us_losangeles TigerVpn OpenVpn 2 28s ``` -------------------------------- ### Troubleshooting Network Commands (Host) Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Run these commands on the host machine to diagnose networking issues. They display network interface information and test connectivity to the VPN gateway and NAT tables. ```bash ip addr ip link ping 10.200.1.2 sudo nft list tables sudo nft list table nat sudo iptables -t nat -L ``` -------------------------------- ### Default Vopono Configuration Source: https://github.com/jamesmcm/vopono/blob/master/README.md Save default configuration options in `~/.config/vopono/config.toml`. Note that values are case-sensitive. ```toml firewall = "NfTables" provider = "Mullvad" protocol = "Wireguard" server = "usa-us22" ``` -------------------------------- ### Troubleshooting Network Commands (Namespace) Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Execute these commands within the Vopono network namespace to diagnose connectivity and firewall rules. Replace 'vopono_*' with your specific namespace name. ```bash sudo ip netns exec vopono_* ip addr sudo ip netns exec vopono_* ip link sudo ip netns exec vopono_* nft list tables sudo ip netns exec vopono_* nft list table vopono_* sudo ip netns exec vopono_* iptables -L sudo ip netns exec ping 10.200.1.1 sudo ip netns exec ping 8.8.8.8 ``` -------------------------------- ### UDP2RAW Server Command for Wireguard Forwarding Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md This command sets up the udp2raw server to listen for incoming connections and forward them to the actual Wireguard peer. Ensure the KEY, OPEN_LISTEN_PORT, and WIREGUARD_PEER variables are correctly configured. ```sh #!/bin/sh KEY="passwd" OPEN_LISTEN_PORT="58998" # Update this: WIREGUARD_PEER="REMOTE_WG_PEER" sudo udp2raw -s -l0.0.0.0:$OPEN_LISTEN_PORT -r $WIREGUARD_PEER -k $KEY --raw-mode faketcp -a ``` -------------------------------- ### Lint and Format Code Source: https://github.com/jamesmcm/vopono/blob/master/AGENTS.md Commands to format code using rustfmt and lint with clippy, enforcing CI standards. ```bash cargo fmt --all cargo clippy --all-features --all-targets -- -D warnings ``` -------------------------------- ### List Running Vopono Applications Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Command to list all applications currently running within Vopono network namespaces. ```bash $ vopono list applications namespace provider protocol application uptime vopono_tig_us_losangeles TigerVpn OpenVpn firefox 36s vopono_tig_us_losangeles TigerVpn OpenVpn lynx 15s ``` -------------------------------- ### Execute Application via Mullvad VPN Source: https://github.com/jamesmcm/vopono/blob/master/README.md Use Vopono as a normal user to execute an application through a Mullvad VPN server. This command forwards requests to the running daemon. ```bash vopono exec --provider mullvad --server se firefox ``` -------------------------------- ### Execute Command via VPN Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Run a command, such as curl, through a specified VPN provider and server. ```bash $ vopono exec --provider privateinternetaccess --server poland "curl ifconfig.co/country" ``` -------------------------------- ### Standard Wireguard Forwarding with Trojan Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Execute a Wireguard connection through a Trojan proxy. Ensure you have a custom Wireguard configuration file and valid Trojan credentials. ```bash $ vopono -v exec --protocol wireguard --custom ~/AirVPN_Czech-Republic_UDP-1637-Entry3.conf --trojan-host your_trojan_domain.xyz --trojan-password your_trojan_password firefox-developer-edition ``` -------------------------------- ### Privoxy Configuration for Remote Connections Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Configuration snippet for Privoxy to allow remote connections, essential when running it within a Vopono namespace. ```properties listen-address :8118 ``` -------------------------------- ### Executing an in-namespace script with Vopono Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Shows the command-line execution of a bash script within a Vopono network namespace. The script uses VOPONO_NS_IP and VOPONO_HOST_IP environment variables. ```bash vopono exec {other Vopono options} '/path/to/the/above/script.sh' ``` -------------------------------- ### Vopono Client Command for UDP2RAW Wireguard Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md This command initiates a Wireguard connection through udp2raw using Vopono. Ensure the udp2raw host and custom configuration file are correctly specified. ```sh vopono -v exec --open-hosts $UDP2RAWHOST --protocol wireguard --custom ~/airvpn_udp2raw.conf "~/udp2rawtest.sh" ``` -------------------------------- ### Run Chromium with a separate user data directory Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Use this command to ensure Chromium runs in a separate process by specifying a unique user data directory. ```bash $ chromium --user-data-dir=/tmp/profile-2 ``` -------------------------------- ### Wireguard Forwarding with Custom Trojan JSON Config Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Use a custom JSON configuration file for Trojan to manage advanced settings and avoid passing sensitive information on the command line. The JSON file must be valid for your Trojan server. ```bash $ vopono -v exec --protocol wireguard --custom ~/AirVPN_Czech-Republic_UDP-1637-Entry3.conf --trojan-config ~/forward.json firefox-developer-edition ``` -------------------------------- ### Trojan Configuration Options Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md These options configure Vopono to use Trojan for Wireguard forwarding. They allow specifying the Trojan server address, password, and SSL verification settings. ```bash --trojan-host Trojan server address - hostname or IP, will not verify SSL if IP address is given. Port is optional (default is 443) --trojan-password Trojan server password Set this in ~/.config/vopono/vopono.toml or use --trojan-config to avoid setting this in the command line --trojan-no-verify Disable SSL verification for Trojan server --trojan-config Trojan config file (will override other settings) ``` -------------------------------- ### UDP2RAW Client Script Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md This shell script sets up the client-side for udp2raw to forward Wireguard traffic. It configures the remote server address, port, key, and forces a low MTU for the Wireguard interface. ```sh #!/bin/sh # Run this with: # vopono -v exec --open-hosts $REMOTE --protocol wireguard --custom ~/wg_conf_with_localhost.conf "~/udp2rawtest.sh appname" # Address for remote udp2raw server # Change this! REMOTE="UDP2RAWHOST" RPORT="58998" KEY="passwd" # Set this Wireguard peer in the Wireguard config # But remember to set the real destination # address and port on the udp2raw server WIREGUARD_PEER="127.0.0.1:1637" # sudo ip route add $REMOTE via $VOPONO_HOST # We must force a low MTU for udp2raw # Note setting it in the Wireguard config # is not enough - it must be set at the device level sudo ip link set dev $VOPONO_NS mtu 1300 sudo udp2raw -c -a -l $WIREGUARD_PEER -r $REMOTE:$RPORT -k $KEY --raw-mode faketcp & $1 ``` -------------------------------- ### Resetting Docker Firewall Rules Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md Stop Docker services and flush all iptables rules to use nftables. These rules will be recreated when Docker restarts. ```bash $ sudo systemctl stop docker $ sudo systemctl stop docker.socket $ sudo iptables -P INPUT ACCEPT $ sudo iptables -P FORWARD ACCEPT $ sudo iptables -P OUTPUT ACCEPT $ sudo iptables -F $ sudo iptables -X $ sudo iptables -t nat -F $ sudo iptables -t nat -X $ sudo iptables -t mangle -F $ sudo iptables -t mangle -X $ sudo ip6tables -P INPUT ACCEPT $ sudo ip6tables -P FORWARD ACCEPT $ sudo ip6tables -P OUTPUT ACCEPT $ sudo ip6tables -F $ sudo ip6tables -X $ sudo ip6tables -t nat -F $ sudo ip6tables -t nat -X $ sudo ip6tables -t mangle -F $ sudo ip6tables -t mangle -X ``` -------------------------------- ### Verifying Cloudflare Warp connection via IP trace Source: https://github.com/jamesmcm/vopono/blob/master/USERGUIDE.md You can test your Cloudflare Warp connection by checking the output of `curl` against a specific Cloudflare URL. The presence of 'warp=on' indicates successful routing via Cloudflare Warp. ```bash $ sudo ip netns exec vo_wp_warp curl "https://cloudflare.com/cdn-cgi/trace" ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.