基本概念
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
请教下,moon客户端经常不显示ip(没效果)要重启服务才有,是什么原因?
应该是网络不稳定导致无法连接上吧?
moon相当于一个辅助校对服务器 , 当本地和主服务器之间连接不通畅时 , moon用啦辅助实现p2p连接
用有公网ip的openwrt搭建了一个moon,但是客户端里zerotier-cli listpeers出来的moon却没有显示ip,不知道什么原因。先试试看大佬搭建好的moon行不行了
想要moonOωO
感谢您分享的MOON