异地组网
此实验在部分windows,安卓上无法成功
windows在使用的时候尽量关闭所有防火墙
相关网站
历史版本网站:https://download.zerotier.com/RELEASES/
教程
首先登录zerotier

创建网络

点击创建网络后,会直接出现下图所示的网络,第二个是我之前创建的
第一列: 网络ID,想要加入网络的设置直接使用网络ID加入就可以了
第二列:子网范围,加入网络的设备会从该子网随机选取一个IP进行分配
第三列:绿色的是在线的主机数,蓝色的是认证的主机数

安装zerotier
Linux
curl -s https://install.zerotier.com | sudo bash直接使用脚本进行安装
加入网络
在Linux环境下直接使用命令进行加入
zerotier-cli join 12ac4a1e711e54c4 //12ac4a1e711e54c4这个是网络ID,需要填自己的加入网络后,使用
ip a查看会出现这样的一个设备
Centos7

Ubuntu20

Ubuntu18

这个时候两个设备是没有IP地址的,需要在网页去设置
这两个虚拟网卡的名字似乎是相同的,可能所有加入网络的设备都会这样,这个不清楚

点击网络名可以进入设置

这里的私有和公共
私有: 在设备加入网络后,
zerotier不会直接加入网络,他会需要用户进行认证公共:不需要用户进行认证,所有知道网络ID的都可以加入网络

该页面可以在设置界面下拉查看
上面说的认证就是在这里打钩就行了

在认证过一段时间后,这个就会出现IP,这个就是各个机器的IP
Centos7

Ubuntu20

ubuntu18

可以使用这个IP进行通信



不采用zerotier的自动分配IP

想要完全不使用zerotier提供的自动分配IP请不要勾选下面的IPv4 Auto-Assign,而且还需要在下面的设备自己添加设备的IP,而且需要自己设置路由,例如下图的IP都是10.0.0.0/24,我们就必须提交一个Destination为10.0.0.0/24,(via)直接不填,这样表示,这个网段的主机为内网主机,如果没有这个路由,主机上的IP将无法出现

路由设置:

使用路由器作为网关
使用路由器作为网关,连接内网设备
在需要作为转发的机器上执行操作
sudo sysctl -w net.ipv4.ip_forward=1
PHY_IFACE=eth0; ZT_IFACE=zt7nnig26
sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT
PHY_IFACE:这个是指想要进行映射出去网络的那块网卡的名称
ZT_IFACE:zerotier网卡的名称
在需要进行访问的设备上添加路由
这个每个操作系统都不相同,需要自己进行查询
windowns
route add DEST_NETWORK mask SUBNET_MASK GATEWAY [metric N] [if N] [-p]大写为变量,中括号里面的是可选项
metirc:指的是需要的代价,越小越优先
if:指的是接口的编号,使用route print可以打印出来
Linux
ip route add DEST_NETWORK via GATEWAY dev INTERFACE_NAME假设这个是路由器,内网地址为
10.0.0.0/24,虚拟局域网的设备想要访问该内网,需要进行的步骤
使用dns解析主机名(不需要记ip)
在使用zerotier时,总是需要记住主机的IP,这样非常麻烦,所以一个DNS来满足我们的需求,在这里介绍zeronsd
获取api access token

再点击生成之后,会出现一段Token,要记好,下面需要使用
下载需要使用的安装包或者docker镜像
可以使用下载的命令行工具,也可以使用docker,我在下面使用docker
docker pull zerotier/zeronsd安装zeronsd
将token写入文件
echo <Toen> >/var/lib/zerotier-one/token.txt启动Docker
docker run --net host -itd --name zerodns -v /var/lib/zerotier-one/authtoken.secret:/authtoken.secret -v /var/lib/zerotier-one/token.txt:/token.txt zerotier/zeronsd start -s /authtoken.secret -t /token.txt -w -d <Domaim> <NetworkID>这里的Domain不需要真实持有,随便写一个自己好记的就行
查看日志是否成功
[root@localhost ~]# docker logs zerodns
INFO - Welcome to ZeroNS!
INFO - Your IP for this network: 10.0.0.12
INFO - Adding new record zt-0b7b371a0a.home.: (10.0.0.11)
INFO - Adding new record *.zt-0b7b371a0a.home.: (10.0.0.11)
INFO - Adding new record windows.home.: (10.0.0.11)
INFO - Adding new record *.windows.home.: (10.0.0.11)
WARN - Replacing PTR record 11.0.0.10.in-addr.arpa.: (windows.home.)
INFO - Adding new record 11.0.0.10.in-addr.arpa.: (windows.home.)
INFO - Adding new record zt-206d72844a.home.: (10.0.0.12)
INFO - Adding new record *.zt-206d72844a.home.: (10.0.0.12)
INFO - Adding new record esxi-linux.home.: (10.0.0.12)
INFO - Adding new record *.esxi-linux.home.: (10.0.0.12)
WARN - Replacing PTR record 12.0.0.10.in-addr.arpa.: (esxi-linux.home.)
INFO - Adding new record 12.0.0.10.in-addr.arpa.: (esxi-linux.home.)
INFO - Adding new record zt-8b43feab49.home.: (10.0.0.13)
INFO - Adding new record *.zt-8b43feab49.home.: (10.0.0.13)
INFO - Adding new record esxi-win.home.: (10.0.0.13)
INFO - Adding new record *.esxi-win.home.: (10.0.0.13)
WARN - Replacing PTR record 13.0.0.10.in-addr.arpa.: (esxi-win.home.)
INFO - Adding new record 13.0.0.10.in-addr.arpa.: (esxi-win.home.)可以看到已经转换成功了

上面的域名都是根据这里的name来的,可以通过修改这里的Name来进行修改DNS解析
配置客户端
Windows

Linux
zerotier-cli set <NetworkID> allowDNS=1