ZeroTier Review
-
I recently discovered a VPN-like service called ZeroTier (http://www.zerotier.com) that works similar to Hamachi or maybe Pertino (never used Pertino though!). Basically, it builds out a network within the internet... Each client would get an IP address in the IP space you specify (Private IPs, a la 192.168 or 172.16, et al). And each device in that network will be able to communicate with other devices that are connected and authorized.
The Technical FAQ on their site (https://www.zerotier.com/tech_faq.shtml) does a better job of explaining the way the nodes communicate than I can off the top of my head. The way the connection setups and everything works kinda reminds me of a P2P type application.
If you create an account on their web site and use their Controllers, the setup is quick and easy; their system provides networks that are free for up to 10 devices. You can also pay them a monthly fee of $4 per month per Network of more than 10 devices. There are currently clients for Windows (7 and up, including Server Editions), Mac, and Linux. It should also work on BSD based OSes as well, but you will have to compile it yourself. An Android version is in the works, but I am not sure about iDevices.
The software itself is open source, and you can build your own controller and create networks as large or small as you want. However, they do not offer a GUI by which to do this yet for self-hosted controllers, so you are left using the REST API for configuring the networks.
As an example, my current network runs on a hosted Linux VM as the controller, and it has my laptop, my office machine, and two other VMs connected to it. Each machine has an IP address of 192.168.y.z/24 The underlying OS sees those as actual network interfaces... IE: on my linux controller, it is listed as ztX, and in Windows, it shows up as another ethernet devie in Network & Sharing Center; I don't have a Mac to test on at the moment. You can also specify which subnet you want to use for your ZT Network, as long as it is not a publicly routable network, you should be fine.
They do have a gateway capability built in, but I have not tested it yet. It appears that you can have one of your client VMs provide access to the subnet behind it (equivalent of site to site VPN).
You can configure a network to be public or private. With the public, as the name suggests, no authorization is required and anybody that joins up will be granted an IP address. In a private network, each device that joins has to be manually authorized before it is issued an IP address on the network.
Using my own controller at the moment, things seem rather snappy. I get an average 45 - 50 ms ping time between one node and another. (I get a similar ping time using the public IP addresses between the two networks). I Copied a 2 megabyte file from SystemA to SystemB in ~3 seconds (would have been faster...but Windows...).
I did have to write my own PHP scripts for creating networks, deleting neteworks and authorizing devices (Not sure how to handle JSON in BASH / Shell scripting).
So far, it looks to be a secure VPN package with some nice level of controls. They are laying the groundwork for allowing rules (ACLs, if you will) so you can specify which devices can communicate to where, and in a true security first setup, unless you have a specific accept (allow) rule, the traffic is dropped.
The following screenshot is the admin dashboard on their site. Everything should be self explantory, but if you don't know what a setting is for ,the help menu along the right hand side provides a good enough bit of information to help.
Edit: Posted the dashboard screenshot, and fixed a few typos.
Update 8/31/2015 I got the Bridging feature that will let a ZeroTier Client become a bridge for the network that it sits in front of working. This effectively provides site-to-site or client-to-site VPN funcitonality. This feature has to be enabled for the devices using the server-side CLI if you are using your own controller.
IE: My home Network has a ZeroTier IP of 192.168.251.250, and my internal IP addresses are 192.168.10.1-254... So on my client, I add a route to 192.168.10.0/24 via my client's ZeroTier IP address... On my Linksys at home, I add a route for 192.168.251.0 via 192.168.10.10 (the LAN IP address of the ZeroTier client inside of my home network).
-
@dafyre said:
However, they do not offer a GUI by which to do this yet, so you are left using the Rest (?) API for configuring the networks.
REST API. All acronym.
-
@scottalanmiller Fixed.
-
Thanks for writing this up, I just learned about them this week myself and have been trying to think of a good project to test it out with! Glad to hear it seems to work as well as they say it does.
-
@WingCreative If you are just going to use it for you or if you are certain it won't go over 10 devices, use their website... Unless you really just want to tinker.
-
It's amazing how quickly you can go over ten devices!
-
What end point platforms does it work on?
-
To connect as devices, it runs on Windows, Mac, and Linux. There's an Android device in the works.
For the controllers, I'm not sure. You do have to compile it yourself if you want to run a controller, so I know that the controller bits work at least on Ubuntu 14.04.
-
No FreeBSD? No Solaris?
-
Packages are available for Windows 7 , Mac OS, and Linux .
If you want to use FreeBSD, then you'll need to compile it yourself. I see nothing about Solaris on their site, though.
-
Not even Windows servers or the last three versions? Is the project still current?
-
@scottalanmiller lol. Windows 7 and up. (Keep commenting, and I'll keep editing the post, lol).
-
Oh that is a bit better.
-
And very much a current project, lol. I got help with an issue via the Github Issue tracker, lol. And got emails from them about screenshotting for the write up.
-
See updates above... Client-To-Site VPN is now working... sadly, I don't have a second site that I could hijack ^W use for testing... Yet. I feel a visit to family coming on, lol.
-
I must be dense. To set up the controller you compile the same zerotierone package but pass make ZT_ENABLE_NETWORK_CONTROLLER=1 first?
-
@johnhooks Yeah. When you build it with the controller enabled, it also builds the client too, so there's just one install to manage... I just discovered a shortcut to the rigamarole I went through before to initially get the installer...
cd /path/to/ztsource make ZT_ENABLE_NETWORK_CONTROLLER=1 installer
Will correctly build the controller bits in, as well as generate the installer script.
sudo ./ZeroTierOneInstaller-linux-x64-1_0_5
Will install it in /var/lib/zerotier-one, and install the init.d files (or the systemd files, whatever the going rate is these days)...
You can check to see if you have the controller in stalled correctly by doing this:
root@yourserver:~# zerotier-cli /controller { "controller": true, "apiVersion": 1, "clock": 1441048250252, "instanceId": "#####################" }
If it is installed correctly with the controller bits enabled, it should look like that.
If it did not install with the controller bits, then you'll get a 404 error.
-
@dafyre Thanks!
-
Hey @johnhooks ,
Havae you tried to get the Site-To-Site working yet?
-
@dafyre said:
Hey @johnhooks ,
Havae you tried to get the Site-To-Site working yet?
I got everything installed, but I got stuck at creating a network haha.