Go to file
Dennis Schwerdel 1eb1771d2a Merge branch 'master' into threading 2021-01-29 19:33:16 +01:00
.cargo Add aarch64 deb packaging 2020-01-24 16:26:23 +03:00
.devcontainer Add dev container config 2020-12-01 22:27:13 +00:00
.github Update deps & rust 2021-01-13 09:23:38 +01:00
.rpm Fix build for alpha versions 2020-10-09 22:46:44 +02:00
assets Release 2.0.1 2020-11-07 12:34:51 +01:00
benches Use criterion for benchmarking 2021-01-28 22:54:29 +01:00
builder Update deps & rust 2021-01-13 09:23:38 +01:00
contrib Some small fixes 2020-11-07 12:04:25 +01:00
src Merge branch 'master' into threading 2021-01-29 19:33:16 +01:00
.gitignore Restructure ec2 test framework 2020-06-17 21:43:59 +02:00
CHANGELOG.md Changelog entry 2021-01-24 19:25:34 +01:00
Cargo.lock Merge branch 'master' into threading 2021-01-29 19:33:16 +01:00
Cargo.toml Merge branch 'master' into threading 2021-01-29 19:33:16 +01:00
LICENSE.md Update corpyrighht years 2020-05-28 09:03:48 +02:00
README.md Update readme 2020-12-03 18:04:32 +00:00
build.rs Create outdir 2020-09-25 00:47:30 +02:00
rustfmt.toml Add default port for peers 2020-06-24 15:28:16 +02:00
vpncloud.adoc Manpage 2020-09-25 00:45:58 +02:00
vpncloud.code-workspace Updated dependencies, rustfmt 2019-12-04 09:32:35 +01:00

README.md

VpnCloud - Peer-to-Peer VPN

Checks Security audit

VpnCloud is a high performance peer-to-peer mesh VPN over UDP supporting strong encryption, NAT traversal and a simple configuration. It establishes a fully-meshed self-healing VPN network in a peer-to-peer manner with strong end-to-end encryption based on elliptic curve keys and AES-256. VpnCloud creates a virtual network interface on the host and forwards all received data via UDP to the destination. It can work on TUN devices (IP based) and TAP devices (Ethernet based).

$> vpncloud -c REMOTE_HOST:PORT -p 'mypassword' --ip 10.0.0.1/24

or as config file:

crypto:
  password: mysecret
ip: 10.0.0.1
peers:
  - REMOTE_HOST:PORT

For more information, please see the Website or the Forum.

Project Status

This project is still under development but has reached a somewhat stable state. VpnCloud features the following functionality:

  • Automatic peer-to-peer meshing, no central servers
  • Automatic reconnecting when connections are lost
  • Connecting hundreds of nodes with the VPN
  • High throughput and low additional latency (see performance page)
  • Creating virtual network interfaces based on Ethernet (TAP) and IP (TUN)
  • Strong end-to-end encryption using Curve25519 key pairs and AES methods
  • Support for different forwarding/routing behaviors (Hub, Switch, Router)
  • NAT and firewall traversal using hole punching
  • Automatic port forwarding via UPnP
  • Support for tunneled VLans (TAP devices)
  • Support for publishing beacons to help nodes find each others
  • Support for statsd monitoring
  • Low memory footprint
  • Single binary, no dependencies, no kernel module

Installing

Compiling from source

Prerequisites: Git, Cargo, asciidoctor

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.

The tests can be run via cargo test.

Cross-Compiling & packaging

Please see the builder folder.

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 distributions. Maintainers who want to package VpnCloud are very welcome.
  • Security review: The security has been implemented with strong security primitives but it would be great if a cryptography expert could verify the system.
  • Feedback on use cases: Some feedback on how VpnCloud is being used and maybe some tutorials covering common use cases would be nice.

Semantic Versioning

This project uses semantic versioning.