network proxy and tunnel (VPN)
Switch branches/tags
Clone or download
Latest commit 6eadd4e Mar 3, 2018
Failed to load latest commit information.
assets Add logo.jpg Nov 10, 2017
c Add c code Dec 17, 2017
iana Update IANA DB Nov 9, 2017
logging Update logging/Cargo.toml Dec 31, 2017
netif fix udp socket `connect` with timeout Feb 2, 2018
netstack add SCTP protocol Jan 1, 2018
src update src/ Feb 2, 2018
.gitignore Update . Dec 31, 2017
Cargo.toml fix udp socket `connect` with timeout Feb 2, 2018
Makefile Update Makefile Nov 1, 2017
README.rst Support OpenWRT > 15.05 Feb 1, 2018


Exodus: Ciphertext and plaintext

Join the chat at Join the chat at


Date:10/03 2017

Platform Support

VPN Server:

  • Linux > 3.0

VPN Client:

  • macOS >= 10.13
  • Linux > 3.0



# commandline tools: make, GCC, clang, perl, svn, git, size, strip, strings, libtool, cpp ...
sudo xcode-select --install

brew install git curl wget
brew install rustup-init
brew install openssl

rustup-init --default-toolchain nightly -y
rustup toolchain install nightly
rustup default nightly
rustup show

git clone
cd exodus

cargo build --bin vpn --release

cp target/release/vpn .

Debian 9:

sudo apt install git curl wget clang pkg-config libssl-dev
sudo apt install build-essential make cmake

chmod +x
./ --channel=nightly

git clone
cd exodus
cargo build --bin vpnd --release

cp target/release/vpnd .

OpenWRT 17.01.4:

wget ""
tar -xvjf lede-17.01.4-x86-64-combined-ext4.img.gz
#dd if=lede-17.01.4-x86-64-combined-squashfs.img of=openwrt.img bs=100m conv=sync
#VBoxManage convertfromraw --format VMDK openwrt.img openwrt.vmdk

VBoxManage convertfromraw --format VMDK lede-17.01.4-x86-64-combined-ext4.img openwrt.vmdk
VBoxManage clonehd "openwrt.vmdk" "openwrt.vdi" --format vdi
VBoxManage modifyhd "openwrt.vdi" --resize 5120

opkg update
opkg install wget
opkg install curl
opkg install bash
opkg install vim
opkg install ca-certificates
opkg install openssl-util

touch ~/.bashrc
echo "export SSL_CERT_DIR=/etc/ssl/certs" >> ~/.bashrc


Host: GNU/Linux

brew install qemu
brew install docker

docker pull japaric/x86_64-unknown-linux-gnu
docker pull japaric/x86_64-unknown-linux-musl
docker pull japaric/x86_64-unknown-freebsd
docker pull japaric/x86_64-unknown-netbsd

docker pull japaric/arm-unknown-linux-gnueabi
docker pull japaric/arm-linux-androideabi
docker pull japaric/armv7-unknown-linux-gnueabihf
docker pull japaric/armv7-linux-androideabi

docker pull japaric/aarch64-unknown-linux-gnu
docker pull japaric/aarch64-linux-android

docker pull japaric/mips-unknown-linux-gnu
docker pull japaric/mipsel-unknown-linux-gnu
docker pull japaric/mips64-unknown-linux-gnuabi64
docker pull japaric/mips64el-unknown-linux-gnuabi64

cargo install cross

cross build --bin vpn --release
# For OpenWRT devices:
#     mips-unknown-linux-uclibc (15.05 and older)
#     mips-unknown-linux-musl (post 15.05)
#     x86_64-unknown-linux-musl (post 15.05)
#     arm-unknown-linux-musl (post 15.05)
#     armv7-unknown-linux-musl (post 15.05)
cross build --bin vpn --target x86_64-unknown-linux-musl --release


WARN: Do Not Run VPN Server On a Production Env.
cd exodus
# VPN Server
sudo ./vpnd --tun-network

# VPN Client
sudo ./vpn --server-addr YOUR_VPN_SERVER_IPV4_ADDR:YOUR_VPN_SERVER_UDP_PORT --disable-crypto