查询节点:
zerotier-cli peers
加入网络(必须使用root权限):
sudo zerotier-cli join xxxxxxxxxxxxxxxx
离开网络:
zerotier-cli leave xxxxxxxxxxx
加入moon(自建节点)
zerotier-cli orbit xxxxxxx yyyyyyyy
离开moon
zerotier-cli deorbit xxxxxxxx
Ubuntu 搭建 Zerotier One MOON 根目录服务器
官网的MOON搭建教程:https://www.zerotier.com/manual.shtml
官网的安装教程:https://www.zerotier.com/download.shtml
前提概要
Zerotier One 版本:v1.2.10
10.0.0.2是一个公网IP, 根据实际情况设定
deadbeef00是根服务器的ID, sudo zerotier-cli info获取
根服务器节点
通过 identity.public 生成一个 moon.json 文件
sudo zerotier-idtool initmoon /var/lib/zerotier-one/identity.public >> moon.json
编辑 moon.json 文件,写入根服务器IP "stableEndpoints": [ "10.0.0.2/9993"]
{
"id": "deadbeef00",
"objtype": "world",
"roots": [
{
"identity": "deadbeef00:0:34031483094...",
"stableEndpoints": [ "10.0.0.2/9993"]
}
],
"signingKey": "b324d84cec708d1b51d5ac03e75afba501a12e2124705ec34a614bf8f9b2c800f44d9824ad3ab2e3da1ac52ecb39ac052ce3f54e58d8944b52632eb6d671d0e0",
"signingKey_SECRET": "ffc5dd0b2baf1c9b220d1c9cb39633f9e2151cf350a6d0e67c913f8952bafaf3671d2226388e1406e7670dc645851bf7d3643da701fd4599fedb9914c3918db3",
"updatesMustBeSignedBy": "b324d84cec708d1b51d5ac03e75afba501a12e2124705ec34a614bf8f9b2c800f44d9824ad3ab2e3da1ac52ecb39ac052ce3f54e58d8944b52632eb6d671d0e0",
"worldType": "moon"
}
生成 .moon 文件
sudo zerotier-idtool genmoon moon.json
移动 .moon 文件到 moons.d 文件夹中(需要手动创建该文件夹)
sudo mv 000000deadbeef00.moon /var/lib/zerotier-one/moons.d/
重启 zerotier-one
sudo killall -9 zerotier-one
常规节点
将根服务器添加到常规节点
sudo zerotier-cli orbit deadbeef00 deadbeef00
如果自动加载moon文件失败,请手动拷贝000000deadbeef00.moon文件到常规节点的机器上
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
重启 zerotier-one
sudo killall -9 zerotier-one
查看节点列表,出现根服务器的MOON节点表示成功
$ sudo zerotier-cli listpeers
200 listpeers
200 listpeers 8841408a2e 159.203.2.154/9993;7723;2322 244 1.1.5 PLANET
200 listpeers 9d219039f3 154.66.197.33/9993;1527750499073;2055 479 1.1.5 PLANET
200 listpeers deadbeef 00 10.0.0.2/33389;2552;7773 189 1.2.10 MOON
200 listpeers e4da7455b2 - -1 1.2.5 LEAF
重启 zerotier-one
sudo killall -9 zerotier-one
重新启动moon服务器
service zerotier-one restart
systemctl restart zerotier-one
zerotier-one目录
/var/lib/zerotier-one
电脑终端查看ssh连接
who
检查应用的配置:
systemctl cat zerotier-one
编辑配置:
sudo systemctl edit zerotier-one --full
GNU nano使用保存退出的说明
文件编辑中常用快捷键:ctrl+X 离开nano软件,若有修改过的文件会提示是否保存;选择 :yes
又提示:file name to write :***.launch ,选择:Ctrl+T
在下一个界面用 “上下左右” 按键 选择要保存的文件名,
然后直接点击 “Enter” 按键即可保存.
ctrl+O 保存文件; ctrl+W 查询字符串;
ctrl +C 说明目前光标所在处的行数和列数等信息;
ctrl+ _ 可以直接输入行号,让光标快速移到该行;
重启
sudo service zerotier-one restart
显示所有命令:
sudo service zerotier-one
帮助文档:
zerotier https://zerotier.atlassian.net/wiki/spaces/SD/overview
启动
zerotier-one -d
获取地址和服务状态
zerotier-cli status
加入、离开、列出网络
zerotier-cli join
zerotier-cli leave
zerotier-cli listnetworks
无公网IP内网穿透又可以P2P打洞的有frp和nat123,前者需要自己服务器搭建,后者可以直接用其服务或也可自己搭建(frp的打洞成功率太低。)
一般 p2p 打洞的逻辑是这样的。。。(如果不是公网 IP,就必须打洞到公网,否则对方无法与你通讯)
先 udp 打洞,打通了,p2p 通讯,两边直接对接,不经过第三方中转(就是不与服务器通讯了,两边直接建立好了隧道)
如果 udp 打洞不行,就只能服务器转发了,就是你和对方都和服务器对接,服务器中转所有数据。如果你觉得很慢,估计就是 udp 打洞失败咯。。
frp 是服务端中转,并暴露到公网,并且这不是 vpn。zerotier 是 p2p 组网。
1、每个 peer/leaf 都需要单独配置 moon,但目前不支持域名 /动态 IP,我没打算去测试;
2、能 但是对网络环境有要求,如果双方能够建立 p2p 的话,速度基本能达到网络带宽的上限;否则会 fallback 到 TLS 中转,速度会慢很多。可以运行 zerotier-cli listpeers
来查看当前连接的 peers (注:zerotier-cli 一般在 /usr/sbin 里)。
3、它是通过虚拟网卡来实现流量转发,网站上有配置路由的选项,会应用到每一个加入该网络的终端上。默认的路由配置只有一条基本配置,不会影响其他网络(除非 IP 冲突)。如果愿意折腾 Managed Routes 和 /或 Flow Rules 的话,有很大的可玩性。
之前经常遇到打洞失败的情况,但实际可能只是打洞没有完成而已。可以通过定时互相 ping 来增加 zerotier 的打洞尝试次数,提高成功率。ping 不到 100ms 应该算打洞成功,除了 zerotier-cli listpeers 外,目前没有别的确认方法,它没有日志,traceroute 也不会有变化。