免费的异地组网神器Docker搭建教程-ZeroTiger

v2-51c5c3590efa6bfbc4f4db36053da73c_1440w

ZeroTiger是一个国外的服务商所提供的基于P2P的组网方案,它可以通过软件的形式实现将我们需要组网的设备加入到一个虚拟的局域网中,从而实现数据的交换。

组网逻辑:

1.组网设备接入Zerotier,并通过ID加入指定的虚拟网络。

2.当设备之间发生数据交换时,网络调度设备间尝试P2P直连。

3.失败时,从网络中寻找moon服务器作为中转。

我们使用自己的云服务自建Moon服务器加入Zerotier网络,当P2P失败时,数据始终通过我们自建的私有根服务器作为中转。私有网络需要认证才可以加入,具有一定的安全性。

1.搭建Zerotier根服务器

依然使用我们的老伙计docker来实现,创建很简单,一条命令创建即可。

docker run --restart=on-failure:3 -d --name ztncui -e HTTP_PORT=4000 -e HTTP_ALL_INTERFACES=yes -e ZTNCUI_PASSWD=admin@123 -p 4000:4000 keynetworks/ztncui
v2-50aeecc54c9895c8574b0a4165221526_1440w

2.搭建Moon服务器

前面也介绍过了,使用Zerotier在一定程度上是可以P2P打洞成功的,不成功的时候就可以使用我们的Moon服务器来进行中转,保证完成组网。此服务需要占用tcp及udp的9993端口

# 创建一个持久化存放文件的目录
mkdir -p /opt/docker/moon
# 获得云服务器的公网ip
public_ip=`curl ip.sb`
# 建立moon服务器
docker run --name zerotier-moon -d -p 9993:9993 -p 9993:9993/udp -v /opt/docker/moon:/var/lib/zerotier-one jonnyan404/zerotier-moon -4 $public_ip
v2-377be9d8bf36de4ac5160a44f9a8d913_1440w

到此我们的服务端就搭建好了。查看一下日志,记录一下moon id,后面加入会用到。

docker logs -f zerotier-moon
v2-248e447426ba45b47f8e359bd955bb98_1440w

3.创建网络

使用我们云服务器ip:4000访问,ip为云服务器的公网ip,打开配置页。

v2-9bfa097eeda8bb540a7ddc22ce94381d_1440w

点击右上角的login登录。

v2-ab0dbc5c15a5416a8067f147e609fdfc_1440w

使用默认用户名和密码登录: admin/admin@123,登录完成后根据提示修改密码。

v2-ee9ba5ccd5a0ca521cefe77d2b87540a_1440w

设置完成后,切换到Add network选项卡,任意为网络起一个名字。

v2-197807d2b2360b9f5e8307fac2b18f49_1440w

点击Create Network

v2-90b862a8d1c0e22baaabf43fb19fe321_1440w

这样我们的网络就设置好了,请记录创建好的网络id。

v2-a999e77c5536b34cc3e067f1bcad6d9e_1440w

回到上一级页面,最后在network上,设置网段,可以点击自动生成,然后提交。

v2-be17385a59254559fa9e2c998834484c_1440w
v2-6914898a38247435e41e136fb1b15019_1440w

4.搭建客户端

为了方便演示不同平台,我这里以一台Linux和一台Windows为例子演示组网过程。

  • Windows:

首先到官方网站上下载Windows客户端:

https://www.zerotier.com/download/

安装很简单,下一步即可。完成后,在开始菜单中可以找到安装的ZeroTier软件,右下角会多出图标,打开面板。把之前记下的网络填入下方,点击Join Network。

v2-90b6b0635b64ad049b3f0059efb7f38a_1440w

回到网页上授权,并定义一个友好的名字,方便辨认。

v2-9f1bd0316bb04179d7f23a607f4513b2_1440w

客户端上,状态显示成功时,表示搭建成功。

v2-b27cba8357f35f29e3ab031350ce8648_1440w

最后在配置一下加入moon服务器,打开cmd。

cd C:\ProgramData\ZeroTier\One
zerotier-cli orbit [moon_id] [moon_id]

将之前记录的moon id填进去后执行。

v2-383e302d78e5e2ec40d3684af61da546_1440w

查看是否加入monn节点:

zerotier-cli listpeers

可以看到其中包含我们自建moon服务器的公网ip地址。

v2-025e0f9ee4bb76ec529a9b5e82cdab30_1440w
  • Linux:

拉取镜像:

docker pull bltavares/zerotier

配置镜像:

docker run -d --device=/dev/net/tun \
--name zerotier-one \
--net=host \
--restart=always \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
-v /var/lib/zerotier-one:/var/lib/zerotier-one \
bltavares/zerotier:latest
v2-648882187c5913ad9777c114626082d2_1440w

加入zerotier网络

docker exec zerotier-one zerotier-cli join [网络ID]
v2-5142e213bdf1362dca2a78aee6b9b3e1_1440w

显示 200 join ok 即添加成功。同样的需要在网页上去授权此节点。可以看到已经有虚拟ip生成,可以测试下两台主机之间的联通性。

v2-e98306bed8240d3ca8f6ab351e8d4286_1440w

发现已经可以使用p2p建立虚拟网络了,一台四川的服务器和一台北京的阿里云服务器,延迟大概40ms左右,效果还是很不错的。

v2-16b12d71bb25015344ab47c125ad11f3_1440w

最后再加入moon服务器,同样的需要把moon_ID的值修改为自建moon服务器的id。

#加入moon服务器
docker exec zerotier-one zerotier-cli orbit [moon_ID] [moon_ID]
#确认是否加入
docker exec zerotier-one zerotier-cli listpeers 
v2-20043a27bed063d5f09ecb53d7728d62_1440w

至此~

留下评论