zerotier 部署及命令大全; Ubuntu 搭建 Zerotier One MOON 根目录服务器; GNU nano使用保存退出的说明

查询节点:

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 也不会有变化。