Zerotier是一个内网穿透工具,但默认的plant服务器架设在国外,国内用户非常难用,这里记录一下moon服务器——也就是个人的plant服务器——如何搭建。

每篇一首歌

搭建Moon服务器

Moon服务器也是一个Zerotier的节点,所以要先再服务器上安装Zerotier,然后设置为Moon服务器。

Ubuntu上安装Zerotier

如果使用的系统是Ubuntu(Debian),那么安装只需要使用root权限执行如下命令:

#

其他系统请参照官网的描述

安装完后会给出服务器的Zerotier节点ID,该ID是一个长度为10的十六进制数字。没保存问题也不大,使用root权限执行下面的命令,第三个字段即为节点ID:

#

构建Moon服务器

进入Zerotier的配置文件夹,本小节后面的所有操作均在此文件夹下

#

导出Moon的配置文件:

#

如果显示“dentity.public is not a valid identity”,则需要依次执行如下命令:

#
#
然后再执行:
#

使用你喜欢的编辑器编辑生成的moon.json文件,将服务器地址和端口填入stableEndpoints后面的方括号中:
修改moon.json文件

生成Moon服务器的文件:

#

会生成一个.moon文件。

创建moons.d文件夹

#

将.moon文件复制到moons.d文件夹中

#

重启Zertier

#

最后,Zerotier使用9993这个UDP端口进行通信,所以需要开放服务器的9993端口,各家云服务器的防火墙不同,请自行操作,这里不再赘述。

加入Moon服务器

搭建好Moon服务器后,需要将各个Zerotier终端加入到Moon服务器中。

比较简单的方法是将构建Moon服务器时将生成的.moon文件放入到指定文件夹中,不同的操作系统位置如下(没有该文件夹就创建文件夹):

  • Windows: C:\ProgramData\ZeroTier\One\moons.d
  • Linux: /var/lib/zerotier-one/moons.d

然后重启Zerotier即可。

创建节点控制器

我们需要管理Moon服务器的虚拟网络,这时候就要创建Moon服务器的节点控制器。

这里使用第三方节点控制器ztncui,其安装流程如下:

  1. 下载和安装ztncui

    #
    #
  2. 配置ztncui,开放端口访问

    #
    #
    #
    #
    #
  3. 重启ztncui,设置开机自启

    #
    #

打开云服务器的TCP端口3000,我们可以通过该端口访问节点控制器WebUI。

通过3000端口访问节点控制器WebUI

登录,初始的账号为admin,密码为password,登陆后会要求更改密码。

改完密码后,点击“Add network”,输入自己起的网络的名字,点击“Create Network”。

添加网络

点击“Easy setup”,再点击“Generate network address”,会自动填充下面的三个字段,然后再点击“Submit”,即可生成该虚拟网络。
生成虚拟网络

点击上面的“networks”可以看到新生成的网络及其网络ID,加入该Moon服务器的Zerotier终端可以加入该网络,并在网络控制器中为其授权。

安全地访问节点控制器

现在所有人都可以访问节点控制器,而且是HTTP传输,这很不安全。

一个方法是为服务器添加SSL证书,但这太麻烦了,一个比较好的思路是将节点控制器所在的服务器也加入该虚拟网络,关闭外网访问3000端口,从而只允许该虚拟网络中的节点访问该节点控制器,而且应为Zerotier的流量是加密的,所以即使在虚拟网络中使用HTTP协议也没有问题。

  1. 服务器加入该虚拟网络。在服务器上执行如下命令
#

其中ed21abbfcb8bff6c改为你自己网络的虚拟网络。

  1. 为其授权,分配虚拟IP,记录该虚拟IP。

  2. 关闭3000端口的TCP外部访问。

然后就可以使用该虚拟IP:3000来访问节点控制器了。

总结

介绍了Zerotier的Moon服务器搭建,加入Moon服务器,创建节点控制器等相关的步骤。