2023年11月

zerotier 是一个免费的内网穿透服务,在P2P直连情况下速度,速度会很快,在网络环境复杂的情况下,由于官方中转服务器都在国外,这样速度就堪忧了。所以我们可以自建中转服务器来加速zerotier 穿透服务

首先需要一台拥有公网固定IP的云服务器作为MOON转发节点,腾讯云的轻量应用服务器新人也很便宜。

1.安装DOCKER

在云服务器上安装DOCKER,简单一点的可以先安装宝塔面板,在宝塔面板市场里搜索DOCKER,这个几个docker管理器都可以用,关于如何安装宝塔可以自行百度一下,一天命令,非常简单。

使用docker快速搭建zerotier moon中转服务简明教程 

2.部署moon服务

安装docker zerotier-moon 服务 打开宝塔终端工具

使用docker快速搭建zerotier moon中转服务简明教程 

输入命令

docker pull seedgou/zerotier-moon

在docker上部署zerotier服务

docker run --name zerotier-moon -d --restart always -p 9993:9993/udp -v /home/zerotier-moon:/var/lib/zerotier-one seedgou/zerotier-moon -4 10.0.0.1

使用docker快速搭建zerotier moon中转服务简明教程 

运行之后可以在docker 面板里看到正常运行的moon docker 服务

使用docker快速搭建zerotier moon中转服务简明教程 

注意:在宝塔面板安全里开放 9993端口,如果是腾讯云或者其他云服务器记得在防火墙里开放9993 端口服务

使用docker快速搭建zerotier moon中转服务简明教程 

把刚刚挂载的目录里自动生成 moons.d 文件夹下载到本地备用

3.配置win客户端

Windows客户端加入moon自建节点 将moons.d 文件夹 整个 复制到ZeroTier安装目录下 默认路径为: C:Program Files (x86)ZeroTierOne

打开 Windows Powershell

输入命令

zerotier-cli orbit xxxxxxxxxx xxxxxxxxxx

将 xxxxxxxxxx 替换为你的 moon id

在服务器终端面板里运行下面命令查看 moon id

docker logs zerotier-moon

使用docker快速搭建zerotier moon中转服务简明教程 

Windows Powershell 显示 提示 200 orbit ok 表示添加moon节点成功 此后重启 zerotier,完毕。

4.测试服务

查看是否成功加入moon服务器节点,

查看节点信息命令

zerotier-cli listpeers

使用docker快速搭建zerotier moon中转服务简明教程 

当你看到某一行 后面带有 moon 字样,就证明 已经加入到moon自建节点中 其中PLANET为官方的根服务器

群晖LINUX等服务器 配置方法同win差不多,只不过配置文件放置目录不同 参考下表,所用命令同上

备注:不同系统 moon 配置文件所在目录

Windows: C:ProgramDataZeroTierOne

Macintosh: /Library/Application Support/ZeroTier/One

Linux: /var/lib/zerotier-one

FreeBSD/OpenBSD: /var/db/zerotier-one


集合两位大佬的智慧,终于成功


教程1:https://www.bilibili.com/video/BV1RA411x7CL/?spm_id_from=333.337.search-card.all.click&;vd_source=15b4bc8968fa5203cc470cb68ff72c96


教程2:https://www.bilibili.com/video/BV1dr4y147aq/?spm_id_from=333.999.0.0&;vd_source=15b4bc8968fa5203cc470cb68ff72c96


大佬1:

基于Zerotier根服务器的内网穿透部署

创建(伪)根服务器 | 项目地址:https://github.com/Jonnyan404/zerotier-planet

docker run --restart=on-failure:3 -d --name ztncui -e HTTP_PORT=4000 -e HTTP_ALL_INTERFACES=yes -e ZTNCUI_PASSWD=mrdoc.fun -p 4000:4000 keynetworks/ztncui


创建 moon 服务器 | 项目地址:https://github.com/jonnyan404/docker-zerotier-moon

#创建容器

docker run --name zerotier-moon -d -p 9993:9993 -p 9993:9993/udp -v /etc/ztconf/:/var/lib/zerotier-one jonnyan404/zerotier-moon -4 [公网ipx.x.x.x]


#查看moon ID

docker logs zerotier-moon


群晖 DSM 7.x 安装Zerotier客户端

登录SSH并创建虚拟网络设备TUN

#获取权限

sudo -i


#创建“创建虚拟网络设备TUN”的脚本,并设为开机自动运行

echo -e '#!/bin/sh -e \ninsmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh


#给予脚本运行权限

chmod a+x /usr/local/etc/rc.d/tun.sh


#运行脚本创建TUN

/usr/local/etc/rc.d/tun.sh


#确认TUN是否创建成功

ls /dev/net/tun


创建存放配置文件的目录


mkdir /var/lib/zerotier-one


创建Zerotier应用容器:


docker run -d           \

 --name zt             \

 --restart=always      \

 --device=/dev/net/tun \

 --net=host            \

 --cap-add=NET_ADMIN   \

 --cap-add=SYS_ADMIN   \

 -v /var/lib/zerotier-one:/var/lib/zerotier-one zerotier/zerotier-synology:latest


常用命令:


#查看zerotier状态

docker exec -it zt zerotier-cli status


#加入网络

docker exec -it zt zerotier-cli join [xxxxxxxxxxxx]

#加入moon服务器

docker exec zt zerotier-cli orbit [moon_ID] [moon_ID]

#确认是否加入

docker exec zt zerotier-cli listpeers


Windows 客户端加入moon服务器

cd C:\ProgramData\ZeroTier\One

zerotier-cli orbit [moon_id] [moon_id]






大佬2:

简单搭建 Zerotier Moon 为虚拟网络加速

Zerotier 是一款开源工具,可以用来构建点对点(P2P)虚拟网络。比如你的女友不让你去网吧玩游戏,这时候你就可以建立一个 Zerotier 点对点虚拟网络,把你和朋友的家的电脑都加入到这个虚拟网络中,然后你们就可以像在网吧里一样联机玩耍了。


Zerotier 的基本用法可以参考NAS之旅第10期视频,这里我们要分享的是如何自己搭建 Zerotier Moon,加速 Zerotier-One 的连接,让虚拟网络更稳定的运行。


Zerotier Moon 搭建步骤

这里我使用的是 Vultropen in new window 的云服务器,基本配置信息如下。


--平台Vultropen in new window机房美国新泽西CPU1 vCore内存512 MB系统Ubuntu 20.04 x64流量500GB


新用户使用右侧推广链接注册可以

第一步: 合适的服务器.

云服务器里选个最便宜的,反正只要有公网IP就可以了,对系统的配置要求不高,原则离设备的物理地址近一点的更好。

我这里选择轻量应用服务器,moon节点一般只用于转发信令,所以没有性能没有太大关系,

系统镜像选unbuntu22.04。

怎么挑选下单付款的我就不罗嗦了, 进入控制台


第二步:安装zerotier

curl -s https://install.zerotier.com/ | sudo bash

最后一行出现Success

然后启动zerotier服务,在控制台输入

sudo systemctl start zerotier-one.service
sudo systemctl enable zerotier-one.service

输入

sudo zerotier-one cli

把这台服务器加入你的zerotier网络,看看这个我们应该也知道,应该输入:

sudo zerotier-one cli join 你的网络ID

如果显示cannot bind to local control interface port 9993的话,重启zerotier服务,也就是输入

sudo /etc/init.d/zerotier-one restart

然后输入上面那个加入网络的命令,看看行不行,如果成功的话,我们会在zerotier的管理页面里看到你的新服务器。

给它把Auth?那一栏给勾上,这样你的服务器就加入网络了。

然后我们开始配置moon节点。

首先生成一个moon文件

cd /var/lib/zerotier-one
zerotier-idtool initmoon identity.public > moon.json

如果出现permission denied,就输入sudo su转到有权限的账户下再执行这两句指令

然后输入vim moon.json,在跳出来的界面里按一下i。

然后把光标移动到这个位置



在两个中括号里输入"你的服务器公网ip"/9993,像这样:



注意两头加引号""

然后按一下esc,再按一下:,再输入wq回车,别问我为什么,我不知道也不想知道,反正不是用来生成随机文本。

这时再输入

zerotier-idtool genmoon moon.json

这个时候下面会跳出来一行wrote开头的代码就说明写入成功了,然后输入:

sudo mkdir moons.d

这一步是创建一个文件夹。

然后输入

sudo mv 000000dd444440b0f7.moon moons.d/

这一步是把上次生成的签名文件移动到moons.d文件夹里,那个看起来一长串乱码的.moon文件的名字在那一行wrote开头的代码里可以看到,实在看不到就打个ls回车就看到了。

做完这些你的moon服务器就算配置完成,重启下zerotier服务,也就是输入

sudo systemctl restart zerotier-one

服务重启之后,到连接到了这个zerotier网络的其他电脑上,windows下就打开命令行(管理员模式哦),输入:

zerotier-cli listpeers

这里你终于可以用ctrl+V了,可喜可贺。

输入完上面那一行命令之后,可以看到下面列出了一大堆代码

你可以看到我这里已经有moon节点了哈,那个是之前拿来做实验的,只买了一个星期的时间,但后来我发现因为我买了这一个星期造成了我失去首单优惠的活动.....

这里找到你刚刚配置的那台服务器的IP地址,然后找到对应那一行listpeers后面的神秘代码,复制它。

再输入这个命令:

zerotier-cli orbit 神秘代码 神秘代码

然后看看运行结果是不是200 orbit OK

如果是的话,再输入

zerotier-cli listmoons

这个命令会列出现在在网的所有zerotier moon 服务器,找一找有没有你刚刚设置的moons,有就完事儿啦。

有多少台机器就在多少台机器上配置一下,别问我为什么,我也不知道,如果你会的话可以把生成的.moon文件拷贝到各个机器上就成。


一下是有关安卓怎么设置moon。

安卓是有zerotier客户端,但是官方客户端并不支持设置moon,这里用在知乎找到的一位大神的魔改客户端,链接在这里,

Zerotier 非官方安卓客户端发布:支持自建 Moon 节点 - 知乎 (zhihu.com)

用大神的客户端然后把刚刚的moon服务器入轨就完事儿啦。


加入moon节点之后的内网穿透速度相当喜人,互ping延迟在二十几毫秒,反正用来满足使用"思源笔记"


zerotier是个很好的虚拟局域网搭建工具,免费的就够用,但由于服务器在国外,组网后存在设备之间延迟大的问题,有时候甚至连不上,非常影像体验。

通过搭建国内moon服务器进行必要的中转,延迟就会小很多。

正好有台群晖有公网ip,就在这上面搭建了。过程如下:

在docker注册表里搜索zerotier,下载seedgou/zerotier-moon映像。

双击下载好的映像开始创建容器,勾选“使用高权限执行容器”。

点击“高级设置”->“卷”,设置成下面这个样子。文件夹docker/zerotier 装载路径/var/lib/zerotier-one

在filestation中就能看到配置文件了。

点击切换到“环境”,执行命令里输入 -4 x.x.x.x 。这里x.x.x.x是群晖的公网ip地址。

点击应用按钮创建并启动容器。

打开容器详情页面,在“终端机”标签点击“新增”按钮右侧箭头,执行命令zerotier-cli join 12ac4a1e71315b31 (zerotier分配的网络ID),然后在zerotier官网控制面板中加入成员。


打开容器“日志”标签页,能看到以下日志:

“Your ZeroTier moon id is aa145a1b2c, you could orbit moon using "zerotier-cli orbit aa145a1b2c aa145a1b2c"”

打开windows节点,在命令行输入zerotier-cli orbit aa145a1b2c aa145a1b2c

看到这一行有moon服务器的公网ip地址,说明加入moon节点成功,如果ip地址那是- -1,说明到moon的网络不通。

对于安卓节点,官网app不支持moon,需要下载大佬开发的appZerotier 非官方安卓客户端发布:支持自建 Moon 节点 - 知乎 (zhihu.com)

在“入轨”界面的两个框里填入moon服务器的地址aa145a1b2c 。

在节点列表里可以看到已成功连接moon服务器。

一般都可以把几百的延迟降低到一百以内。


由于Zerotier服务器在国外,导致在国内的速度不快,所以官方推荐设置自己的moon服务器做节点加速。moon服务器需要24小时不挂机,并且有固定ip,对硬件要求不高,所以云服务器比较符合做moon服务器

第一步:在云服务器linux上安装Zerotier客户端:

1
curl -s https://install.zerotier.com/ | sudo bash

默认监听的端口是9993,这个端口需要对外提供服务,需要在服务器防火墙和云服务提供商的安全组的UDP传输类型进行设置放行。

安装完成后,输入命令检查是否安装成功:

1
zerotier-cli info

  

 代表已经安装成功。

第二步:进入zerotier官网创建一个虚拟网络:

访问官网:https://my.zerotier.com,注册登录之后,点击Create A Network按钮创建一个虚拟网络

 当看到记录产生的时候,代表已经创建成功。点击创建成功的NETWORKID,会进入到网络参数配置详情页:

          ↑ 可以对Name进行修改方便日后识别

      ↑  尽量创建一个私有的网络,这样相对安全一些,需要管理员手动通过才能加入到该网络。

            ↑ 选择一个虚拟网络网段,为了好记,我选择了192.168.192.*这个网段。

 

第三步:把云服务器linux加入虚拟网络:

输入命令加入网络

1
zerotier-cli join [network_ID]

  

 ↑ 反馈join ok代表加入成功。

    ↑  回到官网网络详情页,页面下方会发现一条记录,通过观察Address发现正是云服务器申请加入。点击Auth通过,即可加入此虚拟网络。

  ↑  点击通过后,过几秒钟(不需要刷新页面)会发现,系统为云服务器分配了ip 185,可以在short-name文本框中为这台机器起一个名字方便识别。

回到linux中,输入命令观察是否加入成功:

1
zerotier-cli  listnetworks

  

  ↑ 从反馈的描述中得知已加入成功。

输入ifconfig观察ip:

 ↑ zerotier已为系统生成了虚拟网卡,ip也没问题。

 

第四步:配置Moon

进入zerotier-one程序目录:

1
cd /var/lib/zerotier-one

生成moon配置文件:

1
zerotier-idtool initmoon identity.public >> moon.json
1
运行后moon.json就生成出来了,通过cat命令观察moon.json文件:

 需要编辑红框位置的配置节点stableEndpoints,指定为当前云服务器的外网ip与监听端口号

 ↑  需要注意ip与端口号直接用/分割,而不是:

生成.moon文件:

1
zerotier-idtool genmoon moon.json

  

  ↑  生成成功

将生成的.moon文件移动到moons.d目录下

1
2
mkdir moons.d
mv 000000xxxxxx.moon moons.d

重启zerotier-one服务

1
systemctl restart zerotier-one

  配置开机启动

1
systemctl enable zerotier-one.service

  

至此,moon服务器就搭建好了,接下来是在客户端中配置moon节点

在linux和wondows下配置Moon:

假设现在公司本地有一台运行的linux系统,没有公网ip,平时想在家里也能连接操作它:

登录到这台本地linux服务器,安装客户端:

1
yum install zerotier-one

windows客户端则是登录官网下载页https://www.zerotier.com/download/下载安装即可

 

然后执行第三步,确保本地的linux已加入到虚拟网络中

windows:

点击系统托盘中的图标,选择Join New Network,加入

 

输入命令查看当前所在网络下的所有机器:

windows:

管理员身份运行powershell,执行

1
zerotier-cli.bat listpeers

   Linux:  

1
zerotier-cli listpeers

 识别到moon的主机之后,输入命令将其由LEAF变为MOON:

1
zerotier-cli orbit [节点ID] [节点ID]  #linux
1
zerotier-cli.bat orbit [节点ID] [节点ID]  #windows

  

 

 

 windows与linux已经双双设置成功~

ping测试:(ping zerotier为其生成的虚拟ip)

用windows   在本地网络环境下 ping linux

用windows 在异地网络环境下ping linux

 

PS:经测试,有时候加入网络识别的慢一些,有可能是开启了代理的原因,如果长时间服务器没有识别到,建议检查网络后重试。