All Projects → KusakabeSi → EtherGuard-VPN

KusakabeSi / EtherGuard-VPN

Licence: MIT license
Layer2 version of wireguard with Floyd Warshall implement in go.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to EtherGuard-VPN

netmaker
Netmaker makes networks with WireGuard. Netmaker automates fast, secure, and distributed virtual networks.
Stars: ✭ 4,147 (+10813.16%)
Mutual labels:  mesh-networks, vpn
Wireguard Private Networking
Build your own multi server private network using wireguard and ansible
Stars: ✭ 124 (+226.32%)
Mutual labels:  mesh-networks, vpn
tinc-boot
Bootstrap your Tinc node quickly and easy
Stars: ✭ 128 (+236.84%)
Mutual labels:  mesh-networks, vpn
Drago
A flexible configuration manager for Wireguard networks
Stars: ✭ 204 (+436.84%)
Mutual labels:  mesh-networks, vpn
Wesher
wireguard overlay mesh network manager
Stars: ✭ 461 (+1113.16%)
Mutual labels:  mesh-networks, vpn
edgevpn
⛵ The immutable, decentralized, statically built p2p VPN without any central server and automatic discovery! Create decentralized introspectable tunnels over p2p with shared tokens
Stars: ✭ 223 (+486.84%)
Mutual labels:  mesh-networks, vpn
desktop-app
Official IVPN Desktop app
Stars: ✭ 141 (+271.05%)
Mutual labels:  vpn
desktop-app-ui2
IVPN Desktop app
Stars: ✭ 19 (-50%)
Mutual labels:  vpn
EtornamVpnFlutter
A UI implementation of a VPN app in Flutter
Stars: ✭ 62 (+63.16%)
Mutual labels:  vpn
Skeleton
Skeleton is a Social Engineering tool attack switcher
Stars: ✭ 44 (+15.79%)
Mutual labels:  vpn
tunfish-vxlan
A proof-of-concept for creating convenient VPN environments on top of secure WireGuard tunnels, with VXLAN.
Stars: ✭ 22 (-42.11%)
Mutual labels:  vpn
dvpn-node
The official Sentinel dVPN node
Stars: ✭ 73 (+92.11%)
Mutual labels:  vpn
openbsd-server-setup
A collection of scripts to ease bootstrapping of a new OpenBSD server. Includes nginx with SSL, mail with DKIM, WireGuard and IKEv2 VPN setup.
Stars: ✭ 33 (-13.16%)
Mutual labels:  vpn
softether-docker
container for Softether Server based on Alpine
Stars: ✭ 15 (-60.53%)
Mutual labels:  vpn
husarnet
Husarnet is a Peer-to-Peer VPN to connect your laptops, servers and microcontrollers over the Internet with zero configuration.
Stars: ✭ 128 (+236.84%)
Mutual labels:  vpn
Geolocate-IP-Browser-Extension
A browser extension, which shows you the origin of your IP address.
Stars: ✭ 21 (-44.74%)
Mutual labels:  vpn
matchbox
Painless peer-to-peer WebRTC networking for rust wasm
Stars: ✭ 276 (+626.32%)
Mutual labels:  mesh-networks
greentunnel4jvm
Green Tunnel Alternative for JVM Languages
Stars: ✭ 15 (-60.53%)
Mutual labels:  vpn
Raspberry-Pi-VPN-Gateway
Raspberry Pi VPN gateway installer for Private Internet Access
Stars: ✭ 44 (+15.79%)
Mutual labels:  vpn
dockerMullvadVPN
Mullvad VPN container tutorial for docker
Stars: ✭ 38 (+0%)
Mutual labels:  vpn

Etherguard

English | 中文

Contributor Covenant

A Full Mesh Layer2 VPN based on wireguard-go

OSPF can find best route based on it's cost.
But sometimes the latency are different in the packet goes and back.
I'm thinking, is it possible to find the best route based on the single-way latency?

For example, I have two routes A and B at node N1, both of them can reach my node N2. A goes fast, but B backs fast.
My VPN can automatically send packet through route A at node N1, and the packet backs from route B.

Here is the solution. This VPN Etherguard can collect all the single-way latency from all nodes, and calculate the best route using Floyd–Warshall algorithm.

Worried about the clock not match so that the measure result are not correct? It doesn't matter, here is the proof (Mandarin): https://www.kskb.eu.org/2021/08/rootless-routerpart-3-etherguard.html

Usage

Usage of ./etherguard-go:
  -bind string
        UDP socket bind mode. [linux|std]
        You may need std mode if you want to run Etherguard under WSL. (default "linux")
  -cfgmode string
        Running mode for generated config. [none|super|p2p]
  -config string
        Config path for the interface.
  -example
        Print example config
  -help
        Show this help
  -mode string
        Running mode. [super|edge|solve|gencfg]
  -no-uapi
        Disable UAPI
        With UAPI, you can check etherguard status by "wg" command
  -version
        Show version

Working Mode

Mode Description
Static Mode No dynamic routing, no handshake server.
Similar to original wireguard , all configs are static
Detail
Super Mode Inspired by n2n. There 2 types of node: SuperNode and EdgeNode
EdgeNode must connect to SuperNode first,get connection info of other EdgeNode from the SuperNode
The SuperNode runs Floyd-Warshall Algorithm,and distribute the result to all other EdgeNodes.
Detail
P2P Mode Inspired by tinc, There are no SuperNode. All EdgeNode will exchange information each other.
EdgeNodes are keep trying to connect each other, and notify all other peers success or not.
All edges runs Floyd-Warshall Algorithm locally and find the best route by it self.
Not recommend to use this mode in production environment, not test yet.
Detail

Quick start

Super mode quick start

Build

No-vpp version

Build Etherguard.

Install Go 1.16

add-apt-repository ppa:longsleep/golang-backports
apt-get -y update
apt-get install -y wireguard-tools golang-go build-essential git

Build

make

VPP version

Build Etherguard with VPP integrated.
You need libmemif.so installed to run this version.

Install VPP and libmemif

echo "deb [trusted=yes] https://packagecloud.io/fdio/release/ubuntu focal main" > /etc/apt/sources.list.d/99fd.io.list
curl -L https://packagecloud.io/fdio/release/gpgkey | sudo apt-key add -
apt-get -y update
apt-get install -y vpp vpp-plugin-core python3-vpp-api vpp-dbg vpp-dev libmemif libmemif-dev

Build

make vpp
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].