Zerotier 搭建私有根服务器及创建虚拟局域网完整教程
1665711994820.png 关于 zerotier,搜集网上资料和个人一点浅薄的理解。 planet:核心角色,官方不允许自建私有,zerotier 的行星服务器,用于管理全球所有的 zerotier 客户端的地址信息,帮助建立客户端间的直接链接,以及在无法建立直接链接时,作为中继服务器转发设备间的流量。 moon:官方允许自建私有,作为离客户端更近的中继服务器存在,可以使转发的效率更高。 客户端注册 在内网机器上启动一个 zerotier 客户端,使用 join 加入一个网络,在控制台对客户端进行授权,此时 planet 上有如下记录: 尝试 p2p 连接 当在 planet 转发 由于各种网络限制,p2p 不能直连。 此时通过 planet 转发,如果还配置了 moon 节点,此时会通过速度快的 moon 节点进行转发。 如上图则大概率从上海的 moon 节点进行数据转发,此时网络取决于 moon 的带宽。 解除官方的设备连接数限制 提升手机客户端连接的稳定性 了解了 zerotier 的概念原理,那么大概了解搭建私有 planet 的重要性。 这里需要注意的是传参需要将 如果 linux 内核版本太低,可能报错 关于升级内核,可以参考这篇文章 Linux 系统内核升级。 当然,如果你觉得云服务器不太方便升级内核,那么完全可以用一台测试的虚拟机进行生成文件,文件生成后用 ftp 上传到 访问 1665677264789.png 点击 Easy setup 1665677326694.png 设置网段和子网掩码 1665677383128.png 既然已经搭建了私有的 planet,当然是使用自己的,需要先下载服务器 将服务器下载的 planet 文件上传到客户端的 1665675010184.png 可以看见 stableEndpoints 的配置是自己的公网 ip。 1665677970480.png ip 也可以自己设置,不过要在刚刚设置的网段内。 1665678246335.png 双击安装即可 将下载好的 planet 文件复制到 如果仅仅只是重启 ui 是不行的,需要找到任务管理器 -> 服务 -> ZeroTierOneService,进行重启。 1665726393553.png 1665726530197.png 可以看见 planet 地址是自己的公网。 点击右下角图标,join new network,输入刚刚创建的虚拟网络 id,我这边是 8b8b9ed58a0baa3d。 和 dokcer 安装一样的操作,不再赘述。 通过上述方式将两台机器加入到网络,通过 ping 查看是否能打洞成功。其中 202 本地虚拟机,vps 是有公网 ip 的云服务器。 1665710086842.png ping 检测 在 10.0.0.202 机器上 ping 10.0.0.222。 1665727979834.png 局域网 scp 检测 1665679296983.png 可以看见速度能达到十几MB,而我的根服务器是腾讯云的 8Mbps 服务器,如果通过根服务器转发肯定不可能达到这个速度,说明打洞成功。 speedtest 测速 1665740929613.png 发布于 2022-10-14 22:59 赞同 1224 条评论 分享 喜欢收藏申请转载一、Zerotier 原理

概念
原理
10.0.0.1 - 150.0.0.1/15679
10.0.0.2 - 160.0.0.1/22226
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 直连。二、私有 zerotier-planet 的优势
三、搭建私有 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
FATAL: kernel too old,那么需要升级内核。/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、创建网络

2、初始化网络


五、安装 zerotier 客户端
docker 安装
/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 文件
/home/docker/zt-client/zerotier-one 目录。3、重启客户端
docker restart zt-cli
4、查看 planet
docker exec -it zt-cli zerotier-cli listpeers

5、加入网络
docker exec -it zt-cli zerotier-cli join 8b8b9ed58a10bd45
6、授权


windows 安装
1、下载客户端
2、安装客户端
3、替换 planet
C:\ProgramData\ZeroTier\One 目录下4、重启服务

5、查看 planet

6、加入网络
7、授权
六、测试


listpeers 查看到只有自己的私有根服务器,ping 的延迟不到 100ms 和直接 ping 公网 ip 差不多,说明打洞成功。

写下你的评论...
24 条评论
默认
最新

有没有办法修改9993端口呀,我用的FRP,想把本地的9993转发到公网的其他端口
09-29 · IP 属地浙江
回复喜欢
ZT_ADDR=localhost:9995
昨天 09:25 · IP 属地江苏
回复1
作者
这个没试过诶,建议直接上headscale![[大笑]](https://pic1.zhimg.com/v2-3ac403672728e5e91f5b2d3c095e415a.png)
09-30 · IP 属地广东
回复1
你好,已经按大佬的布置成功了,想咨询一下,我通过在openwrt路由器上安装zerotier让路由器能加入到自建内网当中来,想开启路由的nat模式。让路由器下面的也能够到内网当中,在服务器端应该怎么设置呀
07-18 · IP 属地四川
回复喜欢
作者
这个我也不是很清楚,我现在还headscale了,方便迁移。headscale用命令可以很方便看是直连还是中转
08-11 · IP 属地广东
回复喜欢
嗷嗷嗷,谢谢!现在是自建了planet服务器,双方一方是有公网IP是的联通一方是公网IP v6的移动,路由表net也设置成功了,延迟也基本上60ms以内,但是用iperf测出来穿透的速率始终不理想,想知道到底是因为中转的问题还是说运营商qos了(![[爱]](https://pic1.zhimg.com/v2-0942128ebfe78f000e84339fbb745611.png)
08-10 · IP 属地四川
回复喜欢
展开其他 1 条回复
作者
zero只能使用ip,换机器会比较麻烦,headscale可以使用域名,且打洞更加稳定,教程在这:amjun.com/1957.html
07-05 · IP 属地广东
回复喜欢
请问一下为啥我添加routes还是不行呀?我想的是内网一台加入zerotier网络完后负责转发内网流量。
06-24 · IP 属地四川
回复喜欢
作者
可能你可能添加的路由有问题,参考我博客另外一篇文章。
06-25 · IP 属地广东
回复喜欢
可以支持多个plant吗,我的服务器在国外,有时候也会连不上,想多搞几个plant当备用![[捂脸]](https://pic1.zhimg.com/v2-b62e608e405aeb33cd52830218f561ea.png)
06-17 · IP 属地上海
回复喜欢
请问第一步的1.1.1.1那里可以用域名吗?我的公网IP是变动的
05-20 · IP 属地湖南
回复喜欢
作者
目前好像是不行的
05-21 · IP 属地广东
回复喜欢
请教下,自建plant以后,苹果跟安卓手机能加进来吗
03-31 · IP 属地云南
回复喜欢
作者
苹果没试过,安卓肯定可以
03-31 · IP 属地广东
回复喜欢
我搭建好了。但是我不是mc那种,我想玩的游戏时深岩银河,需要官方服务器握手才行。请问怎么可以在游戏里联机?
03-30 · IP 属地安徽
回复喜欢
纯小白 其他都弄好了 就差这一步生成 planet 文件 该嗯么办呀楼主
2022-12-08 · IP 属地北京
回复喜欢
为什么我根服务器搭建好了,两台客户端机子也加入网络建立连接了,这时把根服务器断开网络,然后两台客户端机子的连接也中断了。按理说两台客户端机子建立的p2p连接,服务器断开不会影响已经建立好的p2p呀。难道说不是建立的P2P连接?
03-29 · IP 属地广东
回复喜欢
第二步这里是生成planet,上一步是运行容器,那么搭建呢?
03-28 · IP 属地广东
回复喜欢
展开其他 2 条回复
请问planet可以relay吗?是不是自建planet就不需要moon了?
2022-11-15 · IP 属地北京
回复喜欢
作者
对的
2022-11-15 · IP 属地广东











