Zerotier搭建私有根服务器并创建虚拟局域网教程

概念

  1. planet:核心角色,官方不允许自建私有,zerotier 的行星服务器,用于管理全球所有的 zerotier 客户端的地址信息,帮助建立客户端间的直接链接,以及在无法建立直接链接时,作为中继服务器转发设备间的流量。
  2. moon:官方允许自建私有,作为离客户端更近的中继服务器存在,可以使转发的效率更高。

原理

  1. 客户端注册

在内网机器上启动一个 zerotier 客户端,使用 join 加入一个网络,在控制台对客户端进行授权,此时 planet 上有如下记录:

10.0.0.1 - 150.0.0.1/15679
10.0.0.2 - 160.0.0.1/22226

  1. 尝试 p2p 连接

当在 10.0.0.1 机器上访问 10.0.0.2,内网机器向 planet 查询到目标地址的公网 160.0.0.1,端口为 22226。

10.0.0.1 尝试与 160.0.0.1的 22226 端口进行直接数据交互,这个过程称为 udp 打洞实现 p2p 直连。

  1. planet 转发

由于各种网络限制,p2p 不能直连。

此时通过 planet 转发,如果还配置了 moon 节点,此时会通过速度快的 moon 节点进行转发。

大概率从上海的 moon 节点进行数据转发,此时网络取决于 moon 的带宽。

二、私有 zerotier-planet 的优势

  • 解除官方的设备连接数限制
  • 提升手机客户端连接的稳定性

三、搭建私有 planet

了解了 zerotier 的概念原理,那么大概了解搭建私有 planet 的重要性。

1、运行控制器容器

docker run -d \
--name zt-ui \
-v /home/docker/zt-ui/zerotier-one:/var/lib/zerotier-one \
-v /home/docker/zt-ui/ztncui/etc:/opt/key-networks/ztncui/etc \
-p 4000:4000 \
-p 9993:9993 \
-p 9993:9993/udp \
-e MYADDR=1.1.1.1 \
-e HTTP_PORT=4000 \
-e HTTP_ALL_INTERFACES=yes \
-e ZTNCUI_PASSWD=admin123 \
--restart=always \
hausen1012/ztncui

这里需要注意的是传参需要将 1.1.1.1 修改为公网 ip。

2、生成 planet 文件

docker exec -it zt-ui bash /tmp/patch.sh && \
docker restart zt-ui

如果 linux 内核版本太低,可能报错 FATAL: kernel too old,那么需要升级内核。

关于升级内核,可以参考这篇文章 Linux 系统内核升级

当然,如果你觉得云服务器不太方便升级内核,那么完全可以用一台测试的虚拟机进行生成文件,文件生成后用 ftp 上传到 /home/docker/zt-planet 目录,然后再启动容器。

3、测试

docker exec -it zt-ui zerotier-cli listmoons
# 显示如下内容则表示搭建成功
[
 {
  "id": "00000004e3b1b4b0",
  "roots": [
   {
    "identity": "04e3b1b4b0:0:ea0c548b45efcc701c052305f06568c749a4647b9a5b111e2b372c05f7c3ed56ae1009c29cb1aa51d95057bf1b65b3a2f7b01d129437f6b72efd08f68281fb52",
    "stableEndpoints": [
     "1.1.1.1/9993"
    ]
   }
  ],
  "signature": "b4f539ef93e198203d9e270c155d091769408ff98489d83bcf6444d2a95112ca7369138b98d42512caa3c878f3eff2c27ecada28f549ea19e3a407e71bbeb008d51f6ba92af17e8b6e4c1b8eacbd4abc42f0f639746ea924cffb99b539f94e2b",
  "timestamp": 1665642068786,
  "updatesMustBeSignedBy": "7fcb120079801a1ddde8c1fb6657365351bca7279e8470728f4cf01fb5efc81b57cde03338b4ea76dfd39570f74f2654d8d52a22613e77ed2e4cbb46a648a42d",
  "waiting": false
 }
]

1.1.1.1 为公网 ip 则搭建 planet 成功。

四、创建私有网络

访问 http://公网ip:4000,账号密码:admin/admin123。

1、创建网络

图片[1]-Zerotier搭建私有根服务器并创建虚拟局域网教程-学霸博客

2、初始化网络
点击 Easy setup

图片[2]-Zerotier搭建私有根服务器并创建虚拟局域网教程-学霸博客

设置网段和子网掩码

图片[3]-Zerotier搭建私有根服务器并创建虚拟局域网教程-学霸博客

五、安装 zerotier 客户端
docker 安装
既然已经搭建了私有的 planet,当然是使用自己的,需要先下载服务器 /home/docker/zt-planet/zerotier-one 目录下的 planet 文件。
1、启动 zerotier 客户端

docker run -d \
--name=zt-cli \
--device=/dev/net/tun \
--net=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN -d \
-v /home/docker/zt-client/zerotier-one:/var/lib/zerotier-one \
--restart unless-stopped \
hausen1012/zerotier

2、替换 planet 文件

将服务器下载的 planet 文件上传到客户端的 /home/docker/zt-client/zerotier-one 目录。

3、重启客户端

docker restart zt-cli

4、查看 planet

docker exec -it zt-cli zerotier-cli listpeers

图片[4]-Zerotier搭建私有根服务器并创建虚拟局域网教程-学霸博客

可以看见 stableEndpoints 的配置是自己的公网 ip。

5、加入网络

docker exec -it zt-cli zerotier-cli join 8b8b9ed58a10bd45

6、授权

图片[5]-Zerotier搭建私有根服务器并创建虚拟局域网教程-学霸博客

也可以自己设置ip ,不过要在刚刚设置的网段内。

图片[6]-Zerotier搭建私有根服务器并创建虚拟局域网教程-学霸博客

windows 安装
1、下载客户端
下载地址
2、安装客户端
双击安装即可
3、替换 planet
将下载好的 planet 文件复制到 C:\ProgramData\ZeroTier\One 目录下
4、重启服务
如果仅仅只是重启 ui 是不行的,需要找到任务管理器 -> 服务 -> ZeroTierOneService,进行重启。

图片[7]-Zerotier搭建私有根服务器并创建虚拟局域网教程-学霸博客

5、查看 planet

图片[8]-Zerotier搭建私有根服务器并创建虚拟局域网教程-学霸博客

可以看见 planet 地址是自己的公网。

6、加入网络

点击右下角图标,join new network,输入刚刚创建的虚拟网络 id,我这边是 8b8b9ed58a0baa3d。

7、授权

和 dokcer 安装一样的操作,不再赘述。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容