0677c7682e | ||
---|---|---|
.cargo | ||
.github | ||
.rpm | ||
assets | ||
builder | ||
contrib | ||
src | ||
.gitignore | ||
CHANGELOG.md | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE.md | ||
README.md | ||
build.rs | ||
rustfmt.toml | ||
vpncloud.adoc | ||
vpncloud.code-workspace |
README.md
VpnCloud - Peer-to-Peer VPN
VpnCloud is a simple VPN over UDP. It creates a virtual network interface on 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 on TUN devices (IP based) and TAP devices (Ethernet based). Tunneling traffic between two nodes can be as easy as:
$> vpncloud -c REMOTE_HOST:PORT --ifup 'ifconfig $IFNAME 10.0.0.1/24 mtu 1400 up'
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:
- Setting up tunnels between two networks via Ethernet (TAP) and IP (TUN)
- Connecting multiple networks with multiple forwarding behaviors (Hub, Switch, Router)
- Encrypted connections
- Automatic peer-to-peer meshing, no central servers
- NAT and (limited) firewall traversal using hole punching
- Automatic reconnecting when connections are lost
- Non-native forwarding modes, e.g. IP based learning switch and prefix routed Ethernet networks.
- High throughput and low additional latency (see performance page)
- Support for tunneled VLans (TAP device)
- Option to hide protocol header
- Automatic port forwarding via UPnP
- Support for publishing beacons to help nodes find each others
- Support for statsd monitoring
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.