基本概念
ZeroTier is a smart Ethernet switch for planet Earth.
通俗来讲就是 Peer to Peer (P2P) ,ZeroTier 根服务器记录请求路径来做类似于DNS的解析。主要功能,就是可以把多个不同网络的设备连接在一起,用来就像在一个局域网下 如下图
ZeroTier 配置一个虚拟网段172.12.0.0/16,在家中加入这个网络中,即可访问位于公司172.12.0.1
专有名词
Zerotier 定义了几个专业名词:
PLANET 行星服务器,Zerotier 根服务器
MOON 卫星服务器,用户自建的私有根服务器,起到代理加速的作用
LEAF 网络客户端,就是每台连接到网络节点。
开始使用
注册 zerotier 服务
创建网络
配置网络:
注意:设置为公用任何人只要知道你的网络ID就可以加入,设置为私有在有你网络ID的时候需要你在后台同意后才能加入你的私有网络
内网目标机器安装客户端
Linux:
curl -s https://install.zerotier.com | sudo bash
其他操作系统:
下载地址:https://www.zerotier.com/download/
客户端加入创建的网络
网络ID在:
Linux:
zerotier-cli join 159924d630e1083d
windows:
然后点Join即可
zerotier 同意客户端接入
这里要注意啦!! 如果在上面网络设置为PUBLIC则无需在这里设置!
设置为PRIVATE时候 需要在后台允许一下操作方法如下:
如上图,给客户端分配 的局域网 IP, 当然网段可以通过 本页Advanced 调整。
确定网络联通(下图是moon后连接图)
建立MOON
建立中转服务器 moon Zerotier 的官方服务器在国外,国内客户端使用时延迟较大,网络高峰期时甚至各个客户端节点之间访问不了。此时 moon 中转服务器就显得非常重要,它的主要功能是通过自定义的服务器作为跳板加速内网机器之间的互相访问。
准备
搭载moon(卫星级服务器,用户自建的私有根服务器,起到中转加速的作用)
- 机器 A(这里选用了云服务器)内网机器
机器 B跟 C (两台式机)
设置教程
1.生成及修改 moon.json
首先登陆到机器 A 上,前往路径 /var/lib/zerotier-one。运行命令
zerotier-idtool initmoon identity.public >>moon.json
此命令会在当前目录下生成一个文件 moon.json,文件内容如下:
{
"id": "89122e085c",
"objtype": "world",
"roots": [
{
"identity": "89122e085c:0:d9470e28b82a07dd0aefe9138721f8d8aa0a7d37cf58a7c3f8a676d066f97d22c78b235529c7d3e308c2f7a96bc2764e154024cf6970f345c2588f73387319b2",
"stableEndpoints": []
}
],
"signingKey": "eda59632b50c178aee6b9d985a910b380e43769cd52016b6d24e4fc7b8902a511e94fb6f77019434ad46720c670d5def67e9984ce704ca1da5874875c746f2ff",
"signingKey_SECRET": "77efcc9bc6bddc500a731138f758ef370453fb57dd7fa0f2c41207d5b01f6a6ddc78221ecab928f2ab2b1d5cb8a027f71a05cb66a16299ee8b2b111a11564fd6",
"updatesMustBeSignedBy": "eda59632b50c178aee6b9d985a910b380e43769cd52016b6d24e4fc7b8902a511e94fb6f77019434ad46720c670d5def67e9984ce704ca1da5874875c746f2ff",
"worldType": "moon"
}
其中 id 为机器 A 在 ZeroTier 中的 id,本文为 89122e085c。
修改 “stableEndpoints” 为机器 A 的公网的 ip。如:
"stableEndpoints": [ "1.2.3.4/9993","2001:abcd:abcd::1/9993" ]
若公网机器没有 IPv6 地址,则将其修改为
"stableEndpoints": [ "1.2.3.4/9993" ]
2.生成签名文件
修改完 moon.json 后,执行命令
zerotier-idtool genmoon moon.json
此命令会生成一个签名文件在当前目录下,文件名如 00000089122e085c.moon (机器 A 的 id 为 89122e085c)
3.将 moon 节点加入网络
方法一
在机器 A 中的 ZeroTier 目录中建立子文件夹 moons.d
不同系统下的 ZeroTier 目录位置:
Windows: C:\ProgramData\ZeroTier\One
Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中应为 /Library/Application\ Support/ZeroTier/One)
Linux: /var/lib/zerotier-one
FreeBSD/OpenBSD: /var/db/zerotier-one
将在机器 A 生成的 00000089122e085c.moon 拷贝进 moons.d 文件夹中,并重启
ZeroTier(此步好像有些许 bug,重启电脑为佳)
方法二
在机器 B、机器 C 上执行
zerotier-cli orbit 89122e085c 89122e085c
查看是否连接
在其他机子执行以下命令将会显示该moon服务器:
zerotier-cli listpeers
如果出现下面情况说明连接上
本站也提供一个国内的MOON文件(已更新,那台服务器放弃了)
请勿用于非法用途!
107 条评论
谢谢分享!!学习了
学习了 服务器在日本 但是线路不好,有用吗?
感谢大佬分享
小白不懂。
一步步学习下
感谢,看看这moon还能用吗?
今天刚开始用,太好用了。
刚好今天有新的需求,需要远程打工,家里和公司的电脑们(mac, win笔记本, win台式机) 需要互相访问,又没有公网ip;用了zeroTier一会儿,感觉平均延迟再50ms;堪堪能用这样子。爬帖子看到楼主提供国内moon, 如果能可以从这边蹭一蹭的话,给楼主安排个咖啡。嘿嘿嘿。
国内没有啥好的ZEROTIER节点 能提供一个还算比较稳定的节点了 有计划算建一个MOON群集 有空弄好了测试吧
可以试试,共同维护一个。
系统没漏洞 服务器不宕机也没啥维护的了。。 服务器成本还是有一些 当然我也负载了一些其他的资源
求moon节点,自己搭建了个腾讯云moon节点,但延迟有75ms,有延迟感
打洞失败延迟是会有所提高的