Network Controller
Guides
Self-Hosting
Network Controller
On this page
info
Network Controller Reference Documentation
Tutorial
First, skim the README.
We're going to use curl to set up an example ZeroTier network. An easy way to get curl in Windows is to install the latest version of Git, whichSome readersPrivate Root Servers
Guides
Self-Hosting
Private Root Servers
On this page
Creating Your Own Roots (a.k.a. Moons)
All ZeroTier nodes on a planet effectively inhabit a single data center. This makes it easy to directly connect devices anywhere, but it has the disadvantage of not working without an Internet connection. Network connections are far from perfectly reliable, aSome readersRoute between ZeroTier and Physical Networks
Guides
Advanced Networking
Route between ZeroTier and Physical Networks
On this page
This seems to be the simplest pattern for getting remote access to your LAN. It doesn't require access to the LAN's router or have some of the pitfalls of bridging. This requires a Linux PC or VM, something that runs iptables, on your LAN. A Raspberry Pi works. This is a NAT/Masquerade setup.
If you have a router that can run zerotier, you should use that instead of this articSome readersVPN Exit Node
Guides
VPN Exit Node
On this page
Full Tunnel Mode or, Overriding Default Route
Route all your Internet traffic through a ZeroTier node.
In this tutorial
Create a ZeroTier Network
Set up an exit node that handles all your internet traffic
Join the exit node and a personal node to your ZeroTier networkSome readersLayer 2 Bridge
Guides
Advanced Networking
Layer 2 Bridge
On this page
Do you have devices that can't run ZeroTier that you want to access remotely? You can use a small Linux PC as a bridge between ZeroTier and physical networks.
Note
This topic is related to but different from using ZeroTier as a Layer 5 Service Proxy.
Assumptions
You're doing this on your home network and can log in to your router and find tSome readersDNS
Guides
DNS
On this page
BETA
The configuration described below uses a beta release of our dedicated DNS service, ZeroNSD. You are not required to use ZeroNSD to provide DNS resolution for devices on your ZeroTier networks; any DNS server can be provided with the assigned IPs and names of your networks' members using the Central API.
Conceptual Prerequisites (conceptual-prerequisites "Direct link to ConcFew readersIntegrating with Physical Networks
Guides
Advanced Networking
Integrating with Physical Networks
On this page
ZeroTier creates networks interfaces, IP addresses, and routes on your computers. Because of this, you can use all the standard networking tools and techniques with your ZeroTier networks.
There are 2 main ways to connect your ZeroTier networks to your Physical networks: Routing and Bridging. Yes, they are technically different things. Bridging has its downsides, including that it's triFew readersDocker
Guides
Docker
Simple example using an interactive shell.
ZeroTier One makes ZeroTier virtual networks available as 'tap' virtual network ports. To do this inside a Docker container requires a few elevated permissions and access to the /dev/net/tun device.
Fortunately this is easy:
docker run -it --rm --cap-add=NETADMIN --cap-add=SYSADMIN --device=/dev/net/tun centos:7 ... command ...
Where ... command ... is an optional command, in the examplFew readersMultipath
Guides
Advanced Networking
Multipath
On this page
Multipath allows the simultaneous (or conditional) aggregation of multiple physical links into a bond for increased total throughput, load balancing, redundancy, and fault tolerance. There is a set of standard bonding policies available that can be used right out of the box with no configuration. These policies are inspired by the policies offered by the Linux kernel (https://www.kernel.org/doc/Documentation/Few readersNetwork Microsegmentation
Guides
Advanced Networking
Network Microsegmentation
On this page
Create a network for each role
Devices can join multiple networks at once. Networks are free on my.zerotier.com. Each network can have its own Network Flow Rules. "Network A allows only RDP traffic." for example.
Pros
Easy
Automatic authorizationFew readersTerraform
Guides
Cloud Deployments
Terraform
On this page
Advanced
For the multi-cloud edition of this guide, click here
Welcome
Managing large numbers of settings in a webUI can be a total bummer. It'd be much nicer if we could describe our ZeroTier networks and membership settings as code. That would let us keep them in version control, and integrate them into our software delivery pipelines.
Now weFew readersLayer 5 Proxy (Pylon)
Guides
Advanced Networking
Layer 5 Proxy (Pylon)
zerotier/pylon is a tool built using libzt that allows you to run a SOCKS5 Proxy that connects services and apps to and from your secure ZeroTier network without installing ZeroTier and without bringing up any new network interfaces. Pylon can be run as one of two personalities that can work alone or together depending on your needs:
In a nFew readerscode-server + ZeroTier
Guides
Advanced Networking
code-server + ZeroTier
On this page
What
code-server allows you to run an instance of VSCode in the browser and edit code on remote machines. Combining this with ZeroTier lets you do this securely across your virtual network. See their project page: github.com/coder/code-server (htFew readers📄️ Network Controller📄️ Private Root Servers
📄️ Network Controller
Host your own network controllers
(/controller)Few readersNAT
Guides
Advanced Networking
NAT
On this page
How to characterize NAT
When debugging it is often nice to be able to gather information about NAT type and behavior. ZeroTier does not use STUN (for various reasons), but many STUN implementations contain some helpful code for doing this. It's helpful to use an external utility since it's "out of band" and therefore independent of ZeroTier.Few readers📄️ Docker📄️ DNS📄️ VPN Exit Node🗃️ Cloud Deployments🗃️ Advanced Networking🗃️ Self-Hosting
📄️ Docker
Running ZeroTier in a Docker Container
(/docker)Few readerscloud-init
Guides
Cloud Deployments
cloud-init
On this page
Set up ZeroTier using cloud-init
What is cloud-init?
cloud-init is a convenient and cross-platform way to initialize cloud instances. It is supported by all major cloud providers. You can use it to configure OS settings, install packages, or even start up specific instancesFew readers