2015-11-23 20:05:07 +00:00
VpnCloud - Peer-to-Peer VPN
---------------------------
2019-02-19 21:04:21 +00:00
[![Build Status ](https://travis-ci.org/dswd/vpncloud.svg?branch=master )](https://travis-ci.org/dswd/vpncloud)
[![Coverage Status ](https://coveralls.io/repos/dswd/vpncloud/badge.svg?branch=master&service=github )](https://coveralls.io/github/dswd/vpncloud?branch=master)
2015-11-23 20:05:07 +00:00
**VpnCloud** is a simple VPN over UDP. It creates a virtual network interface on
2016-04-05 13:27:47 +00:00
the host and forwards all received data via UDP to the destination. VpnCloud
establishes a fully-meshed VPN network in a peer-to-peer manner. It can work
2015-11-23 20:05:07 +00:00
on TUN devices (IP based) and TAP devices (Ethernet based). Tunneling traffic
between two nodes can be as easy as:
2019-02-14 21:51:10 +00:00
$> vpncloud -c REMOTE_HOST:PORT --ifup 'ifconfig $IFNAME 10.0.0.1/24 mtu 1400 up'
2015-11-23 20:05:07 +00:00
2019-01-03 18:48:34 +00:00
For more information, please see the [Website ](https://vpncloud.ddswd.de ).
2015-11-24 17:39:42 +00:00
2016-04-05 13:27:47 +00:00
### Project Status
This project is still [under development ](CHANGELOG.md ) but has reached a
somewhat stable state. VpnCloud features the following functionality:
2015-11-26 21:16:51 +00:00
* Setting up tunnels between two networks via Ethernet (TAP) and IP (TUN)
2016-06-01 19:51:22 +00:00
* Connecting multiple networks with multiple forwarding behaviors (Hub, Switch,
Router)
2019-02-12 18:29:36 +00:00
* Encrypted connections
2016-04-05 13:27:47 +00:00
* Automatic peer-to-peer meshing, no central servers
2015-11-26 21:16:51 +00:00
* NAT and (limited) firewall traversal using hole punching
* Automatic reconnecting when connections are lost
2016-06-01 19:51:22 +00:00
* Non-native forwarding modes, e.g. IP based learning switch and prefix routed
Ethernet networks.
2019-01-04 08:27:47 +00:00
* High throughput and low additional latency (see [performance page ](https://vpncloud.ddswd.de/features/performance ))
2015-12-03 08:38:14 +00:00
* Support for tunneled VLans (TAP device)
2016-08-08 14:30:22 +00:00
* Option to hide protocol header
2016-08-10 09:34:13 +00:00
* Automatic port forwarding via UPnP
2015-11-24 17:39:42 +00:00
2016-07-02 09:24:49 +00:00
### Installing
2019-02-14 21:53:08 +00:00
#### Compiling from source
Prerequisites: Git, [Cargo ](https://www.rust-lang.org/install.html ), Ronn
The checked-out code can be compiled with ``cargo build`` or ``cargo build --release`` (release version). The binary could then be found in `target/release/vpncloud` .
2016-07-02 09:24:49 +00:00
The tests can be run via ``cargo test``.
2019-02-14 21:53:08 +00:00
#### Cross-Compiling
This software can be cross-compiled for a number of different architectures.
Please also see the [extended rust cross compilation docs ](https://github.com/japaric/rust-cross ).
##### ARMv7 (e.g. Raspberry Pi)
1. Install the Cargo target
$> rustup target add armv7-unknown-linux-gnueabihf
2. Install the required build environment (on Ubuntu)
$> sudo apt-get install -qq gcc-arm-linux-gnueabihf
3. Build the software
$> cargo build --release --target=armv7-unknown-linux-gnueabihf
#### Debian / Ubuntu
2016-07-02 12:05:24 +00:00
Deb packages for each release can be found in the
2019-01-04 08:27:47 +00:00
[releases ](https://github.com/dswd/vpncloud/releases ) section. Currently only
2016-07-02 12:05:24 +00:00
packages for amd64 are available (I am accepting help on building and packaging
for other platforms).
2016-07-02 09:24:49 +00:00
2019-02-14 21:53:08 +00:00
Debian packages can be built using [cargo-deb ](https://github.com/mmstick/cargo-deb ): ``cargo deb``
2016-07-02 09:24:49 +00:00
2019-02-14 21:53:08 +00:00
#### Arch Linux (AUR)
2016-07-02 12:05:24 +00:00
There is a [VpnCloud package for Arch Linux ](https://aur.archlinux.org/packages/vpncloud/ )
thanks to Oscar Rainford (fourbytes).
2016-07-02 09:24:49 +00:00
2019-03-01 14:54:32 +00:00
#### CentOS 7
2019-03-01 14:57:01 +00:00
CentOS 7 .rpm package can be built using [cargo-rpm ](https://github.com/RustRPM/cargo-rpm ): ``cargo rpm``
2019-03-01 15:11:53 +00:00
On an CentOS 7:
1. Install the required build environment (on CentOS 7)
$> yum install -y cargo
$> yum groupinstall -y 'Development Tools'
2. Build the software
$> cargo rpm build --release
rpm will be situated in `target/release/rpmbuild/RPMS/`
2016-07-02 09:24:49 +00:00
2016-06-01 19:51:22 +00:00
### Contributions welcome
There are several areas in which still some work has to be done and where
contributions are very welcome:
* **Linux packages**: VpnCloud is stable enough to be packaged for Linux
2016-07-02 09:24:49 +00:00
distributions. Maintainers who want to package VpnCloud are very welcome.
2016-06-01 19:51:22 +00:00
* **Security review**: The security has been implemented with strong security
2016-08-12 06:39:46 +00:00
primitives but it would be great if a cryptography expert could verify the
2016-06-01 19:51:22 +00:00
system.
* **Feedback on use cases**: Some feedback on how VpnCloud is being used and
maybe some tutorials covering common use cases would be nice.
2015-11-24 17:39:42 +00:00
### Semantic Versioning
2016-04-05 13:27:47 +00:00
This project uses [semantic versioning ](http://semver.org ). Currently that means
that everything can change between versions before 1.0 is finally released.
However I am considering to release 1.0 soon.