A simple, decentralized mesh VPN with WireGuard support.
Go to file
Sijie.Sun 7f8935a9d5
introduce peer center (#13)
peer_center is used to collect peer info into one peer node.

the center node is selected with the following rules:

1. has smallest peer id
2. TODO: has allow_to_be_center peer feature

peer center is not guaranteed to be stable and can be changed when peer enter
or leave.  it's used to reduce the cost to exchange infos between peers.
2024-02-06 13:29:12 +08:00
.cargo Update cargo config (#11) 2024-02-03 00:20:05 +08:00
.github/workflows Update rust.yml (#12) 2024-02-03 01:43:33 +08:00
easytier-cli optimize cli output (#6) 2024-01-30 22:05:58 +08:00
easytier-core introduce peer center (#13) 2024-02-06 13:29:12 +08:00
scripts Initial Version 2024-01-27 15:12:30 +08:00
third_party Initial Version 2024-01-27 15:12:30 +08:00
.gitignore Initial Version 2024-01-27 15:12:30 +08:00
.gitmodules Initial Version 2024-01-27 15:12:30 +08:00
Cargo.toml Initial Version 2024-01-27 15:12:30 +08:00
LICENSE Initial Version 2024-01-27 15:12:30 +08:00
README.md Initial Version 2024-01-27 15:12:30 +08:00

EasyTier

! NOTICE: THIS SOFTWARE IS STILL BEGIN DEVELOPPING, ONLY POC VERSION IS PROVIDED

A simple out-of-box alternative of ZeroTier & TailScale in rust. Bring all devices to one virtual net.

this software can serve as a substitute for Zerotier or TailScale in certain scenarios due to following features:

  1. Easy to deploy.

    No roles (moons/derp or other dedicated relay server). All nodes are equal and rely on some p2p algorithms to communicate.

  2. Smart route decision.

    Use links charged by traffic to reduce latency but free links for high throughout app.

  3. Break the UDP throttling.

    Try use TCP to achieve better performance under enviraonment with throttled UDP. Also use some methods to avoid HOL-blocking of TCP over TCP.

  4. High availibility.

    Support multipath and switching to healthy paths when high packet loss rate or network error are detected

EasyTIer also have following common features which are already supported by other softwares, but may be easier to use.

  1. Multi-platform support.

  2. Effcient P2P hole punching, both UDP & TCP.

  3. High performance. Try use multiple wan interface.

  4. Subnet Route. node can advertise and proxy one or more subnets, so other nodes can directy access these subnets without any iptables/nft trickys.

Usage

Currently a server with public ip is needed.

run first node on the public node:

sudo easytier-core --ipv4 <VIRTUAL_IP>

run other nodes

sudo easytier-core --ipv4 <VIRTUAL_IP> --peers tcp://<public_ip>:11010

use cli tool to inspect nodes with direct link.

easytier-cli peer

cli tool can also be used to inspect the route table

easytier-cli route

RoadMap

  • Windows / Mac / Linux support

  • TCP / UDP tunnel.

  • NAT Traverse with relaying.

  • NAT Traverse with UDP hole punching.

  • Support shared public server. So users can use it without a public server.

  • Encryption. With noise framework or other method.

  • Support mobile platforms.

  • Broadcast & Multicast support.

  • UI tools.