All Projects → mehrdadrad → Radvpn

mehrdadrad / Radvpn

Licence: mit
Decentralized VPN

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Radvpn

Covenantsql
A decentralized, trusted, high performance, SQL database with blockchain features
Stars: ✭ 1,148 (+15.61%)
Mutual labels:  crypto, decentralized
Bismuth
[Migrated] The first Python blockchain protocol and platform
Stars: ✭ 186 (-81.27%)
Mutual labels:  crypto, decentralized
Pocket Core
Official implementation of the Pocket Network Protocol
Stars: ✭ 50 (-94.96%)
Mutual labels:  crypto, decentralized
denarius
Denarius [$D] is a PoW/PoS Hybrid Cryptocurrency with Tribus a new PoW Hashing Algo built specifically for D, one of a kind hybrid masternodes called Fortuna Stakes, atomic swaps, staking, mining, IPFS, optional Native Tor and I2P, and much more!
Stars: ✭ 105 (-89.43%)
Mutual labels:  crypto, decentralized
lokinet
Lokinet is an anonymous, decentralized and IP based overlay network for the internet.
Stars: ✭ 796 (-19.84%)
Mutual labels:  decentralized, vpn
Wirehub
🌍 Decentralized, peer-to-peer and secure overlay networks
Stars: ✭ 459 (-53.78%)
Mutual labels:  vpn, decentralized
Gun
An open source cybersecurity protocol for syncing decentralized graph data.
Stars: ✭ 15,172 (+1427.9%)
Mutual labels:  crypto, decentralized
onepile
Playground for the future of private notes and document management
Stars: ✭ 41 (-95.87%)
Mutual labels:  crypto, decentralized
ipvpn
[WIP] Easy-to-use decentralized secure overlay private network (for any device)
Stars: ✭ 24 (-97.58%)
Mutual labels:  decentralized, vpn
Glorytun
Multipath UDP tunnel
Stars: ✭ 437 (-55.99%)
Mutual labels:  vpn, crypto
Loki Network
Lokinet is an anonymous, decentralized and IP based overlay network for the internet.
Stars: ✭ 507 (-48.94%)
Mutual labels:  vpn, decentralized
Decentralized Energy Fabric On Ibp20
Set up a network on the IBM Blockchain Platform and deploy a decentralized energy smart contract on the network.
Stars: ✭ 29 (-97.08%)
Mutual labels:  decentralized
Hat.sh
encrypt and decrypt files in your browser. Fast, Secure client-side File Encryption and Decryption using the web crypto api
Stars: ✭ 886 (-10.78%)
Mutual labels:  crypto
Featherduster
An automated, modular cryptanalysis tool; i.e., a Weapon of Math Destruction
Stars: ✭ 876 (-11.78%)
Mutual labels:  crypto
Openvpn Bosh Release
A BOSH release to help manage an OpenVPN network.
Stars: ✭ 13 (-98.69%)
Mutual labels:  vpn
Pulsarcast
A pub-sub system for the distributed web - my master thesis @ IST
Stars: ✭ 33 (-96.68%)
Mutual labels:  decentralized
Jwt Tornado
An implementation of JSON Web Tokens in Python Tornado
Stars: ✭ 28 (-97.18%)
Mutual labels:  crypto
Ikev2 Setup
Set up Ubuntu Server 20.04 (or 18.04) as an IKEv2 VPN server
Stars: ✭ 872 (-12.19%)
Mutual labels:  vpn
Tomb
the Crypto Undertaker
Stars: ✭ 859 (-13.49%)
Mutual labels:  crypto
Python Programming
Python Coding - Data Structure, Algorithm, Crypto, Web, Network, System
Stars: ✭ 9 (-99.09%)
Mutual labels:  crypto

Decentralized VPN

Build Status Go Report Card GoDoc

Alt text

The RadVPN doesn't need any central point as it connects to other nodes directly (full mesh) it has built-in router that helps packets to route to the approperate destinations. there are two options for configuration: yaml file and if you want to have central configuration management it supports etcd. for the time being it supports symmetric encryptions and Linux platform.

Build

Given that the Go Language compiler (version 1.11 or greater is required) is installed, you can build it with:

go get github.com/mehrdadrad/radvpn
cd $GOPATH/src/github.com/mehrdadrad/radvpn
go build .

Docker

docker pull mehrdadrad/radvpn:latest
docker run --privileged -d -p 8085:8085 -v $(pwd)/radvpn.yaml:/etc/radvpn.yaml -e RADVPN_NODE_NAME=node1 mehrdadrad/radvpn:latest

Basic Config

With the default it tries to load config.yaml file individually at each node, but it can be configured to use same configuration through etcd. Once the configuration is changed, it loads and applies new changes by itself. Below yaml is a sample configuration:

Alt text

revision: 1

crypto:
  type: gcm
  key: 6368616e676520746869732070617373776f726420746f206120736563726574

nodes:
  - node:
      name: node1
      address: 8.121.55.10
      privateAddresses:
        - 10.0.1.1/24
      privateSubnets:
        - 10.0.1.0/24
  - node:
      name: node2
      address: 84.12.92.45
      privateAddresses:
        - 10.0.2.1/24
      privateSubnets:
        - 10.0.2.0/24        

Run

radvpn -config radvpn.conf 

Configuration keys

  • revision - the watcher works based on the revision number; once it increased, the configuration will be loaded immediately
  • server
    • keepalive - frequency duration of radvpn-to-radvpn ping to check if a connection is alive (default is 10 seconds)
    • insecure - disable encryption (default is false)
    • mtu - sets the mtu of the tunnel interface
    • maxworkers - sets number of concurrent workers (read/write to/from tunnel concurrently)
    • address - sets ip address and ports (format : ip:port)
    • name - sets the name of the current node
  • crypto
    • type
      • gcm - galois/counter mode
      • cbc - cipher block chaining
    • key - secret key
  • etcd
    • endpoints - sets the etcd endpoints
    • timeout - sets etcd endpoints timeout
  • nodes
    • node
      • name - node's name
      • address - node's external ip address
      • privateAddresses - sets private address(es) on the tunnel interface
      • privateSubnets - sets reachable subnet(s) from currect node

Configuration with etcd

Alt text

sample configuration

Run with etcd

radvpn -config radvpn.conf -etcd

Update etcd from yaml file

radvpn -update etcd -config radvpn.yaml

License

This project is licensed under MIT license. Please read the LICENSE file.

Contribute

Welcomes any kind of contribution, please follow the next steps:

  • Fork the project on github.com.
  • Create a new branch.
  • Commit changes to the new branch.
  • Send a pull request.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].