A Smart Ethernet Switch for Earth

zerotier.com

#network #mesh #nebula #tailscale #softnetwork #vpn #cpp

Adam Ierymenko 52314dcdf6 GitHub issue #111 %!s(int64=10) %!d(string=hai) anos
ZeroTierUI 9f2571cc01 Some UI fixes for Windows. %!s(int64=11) %!d(string=hai) anos
attic 4ba4269344 cleanup %!s(int64=11) %!d(string=hai) anos
control 52314dcdf6 GitHub issue #111 %!s(int64=10) %!d(string=hai) anos
ext d8d4aace42 Fix for init.d/zerotier-one (again) %!s(int64=10) %!d(string=hai) anos
include 52314dcdf6 GitHub issue #111 %!s(int64=10) %!d(string=hai) anos
netconf-service a9c6913f12 . %!s(int64=10) %!d(string=hai) anos
node 52314dcdf6 GitHub issue #111 %!s(int64=10) %!d(string=hai) anos
osnet 67aa23530b More work on adding testnet and user-mode capabilities for local network simulation. %!s(int64=11) %!d(string=hai) anos
root-topology b13845e528 . %!s(int64=10) %!d(string=hai) anos
testnet cb6fd3afb3 g++ compiler warning fix %!s(int64=10) %!d(string=hai) anos
windows 924f030994 docs %!s(int64=11) %!d(string=hai) anos
.gitignore 496109fdcc Announce multicast group changes on network rescanMulticastGroups() %!s(int64=10) %!d(string=hai) anos
AUTHORS.txt 0ab7b6d014 docs %!s(int64=12) %!d(string=hai) anos
BUILDING.txt 297cfd86fa VERSION 0.7.0: updated docs (no version change) %!s(int64=11) %!d(string=hai) anos
LICENSE.txt 150850b800 New git repository for release - version 0.2.0 tagged %!s(int64=12) %!d(string=hai) anos
Makefile 66cff2e98d Create common Makefile that automatically loads make rules on a per-OS basis. %!s(int64=11) %!d(string=hai) anos
README.md 5f45977e3e Update GitHub README %!s(int64=11) %!d(string=hai) anos
RUNNING.txt 297cfd86fa VERSION 0.7.0: updated docs (no version change) %!s(int64=11) %!d(string=hai) anos
buildinstaller.sh 644db7a04a Let people build installers for any machine type on Linux, just canonicalize the x86 and x86_64 types. %!s(int64=11) %!d(string=hai) anos
main.cpp b809dad94a Bug fix in zerotier-cli (Unix) %!s(int64=10) %!d(string=hai) anos
make-linux.mk 6316011024 Make crypto and compression build optimized in debug, and also try disabling peers.persist -- might ship this way as it seems more trouble than its worth. %!s(int64=10) %!d(string=hai) anos
make-mac.mk 6316011024 Make crypto and compression build optimized in debug, and also try disabling peers.persist -- might ship this way as it seems more trouble than its worth. %!s(int64=10) %!d(string=hai) anos
objects.mk 67aa23530b More work on adding testnet and user-mode capabilities for local network simulation. %!s(int64=11) %!d(string=hai) anos
selftest-crypto-vectors.hpp c89cdcc3fd Blech... moving on! %!s(int64=11) %!d(string=hai) anos
selftest.cpp 8d2e20ede6 Get rid of __align stuff in Salsa20 -- not portable, does not seem to help much on newer chips. %!s(int64=11) %!d(string=hai) anos
version.h ab22feba9a Bump version to 1.0.0, add legacy support code to Multicaster to not send new frame to known-to-be-old peers. %!s(int64=10) %!d(string=hai) anos

README.md

ZeroTier One - Ethernet Virtualization

ZeroTier One is an ethernet virtualization engine. It creates virtual LANs of almost unlimited size that span physical network boundaries.

The underlying protocol is peer to peer with managed anchor points ("supernodes") for instant-on communication, assisted NAT traversal, and relaying for users who cannot make P2P connections. All unicast packets are encrypted end-to-end using private keys that only you control. Multicast and broadcast work as they would on a normal LAN, except that traffic is throttled and intelligently prioritized on large networks to stay within bandwidth limits while preserving essential functionality (multicast triage algorithm). Its behavior is not unlike some enterprise-grade intelligent ethernet switches designed for huge wired networks such as university LANs.

Visit ZeroTier Networks on the web for more information. Follow the ZeroTier blog and the GitHub project to stay up to date. See the GitHub-hosted wiki (sidebar) for technical info and help for various platforms.

Auto-updating binary packages that install easily can be found here. Packages for popular Linux distributions that neatly wrap the Linux installer/uninstaller are coming soon. If you want to build from source, clone this repository and see BUILDING.txt and RUNNING.txt. If you build manually you'll have to update manually.

Once you are up and running, you can create an account on the network control panel if you want to create a private network or you can join Earth by running (on Linux and Mac) sudo ./zerotier-cli join 8056c2e21c000001. (Earth is a public virtual network, meaning that it has no access control and allows anyone to join. Make sure your system is up to date and you have no unprotected network services listening.)

Note: If UDP traffic over port 9993 (at a minimum) is not permitted by your local or network firewall(s), ZeroTier One will fall back to TCP tunneling to supernodes over port 443 and will not be able to make direct NAT-t connections to other peers. This fallback mode slows things down considerably. If you're getting very poor performance check your firewall settings. You can see if fallback mode is active by checking for outbound TCP connections from the zerotier-one process to port 443 on five or six hosts in the zerotier.com domain. (See Defaults.cpp for a list of these hosts.)

Most users will use IPv4 and/or IPv6 over ZeroTier One, but since it virtualizes at the ethernet (layer 2) level it can technically host almost any protocol. Users have made classic multiplayer games work over IPX, for example. Services like DHCP and IPv6 NDP for link-local addresses can work automatically.

The service is free for public networks and for managed private networks up to ten users. The code is open source and is licensed under the GNU GPL v3 (not LGPL). If you'd like to embed it in a closed-source commercial product, please e-mail [email protected] to discuss licensing.