搭建moon节点,让你的zerotier网络更安全高效

在上一篇搭建zerotier网络的教程,我们成功地搭建了zerotier网络,达成了远程办公的目的,你甚至还可以坐在星巴克咖啡厅里,跟生意伙伴商务活动的同时,随时调用公司内部的共享数据资料,这也是科技进步给我们带来的种种便利之一。

在zerotier网络体系中,根服务器(root server)被称为星球(planet),而每一台联网设备都被称为叶子(leaf),两台星球之间是通过星球节点握手建立隧道连接的,而zerotier作为一家总部位于加州的美国公司并没有在中国设有根服务器,因此在两台设备连接时受制于星球节点的连接质量,不免要产生高延迟,因此我们可以按照官方指引来搭建月亮(moon)节点,让设备相互连接时通过我们自己搭建的月亮节点来握手建立隧道,从而降低握手时的网络延迟、也提高联网稳定性和安全性。

首先要说明的是,搭建月亮节点的服务器对硬件要求不高,但是必须有公网IP地址,如果公司的网络环境不具备条件,可以通过购买云计算服务器来实现。现在国内的云计算服务商主要有阿里云、华为云、腾讯云、天翼云等,都可以满足你的需要,这些供应商时常有打到骨折的优惠活动,每年一两百元人民币的成本也不是什么压力,再者说来,这一台云计算服务器还可以同时为你搭建网站或者其他的应用。如果对于搭建moon节点还没有信心,可以到这些云计算供应商的国际站点注册,薅一台免费试用2-3个月的服务器来测试,其实这些云计算的香港节点与大陆站点相比延迟也差不了多少;当然国际大厂也有羊毛可以薅,谷歌云、甲骨文云、亚马逊云、微软云都提供免费试用的云主机,甲骨文云还提供终身免费的选项。

下面我就用一台全新的甲骨文云服务器教大家如何搭建自己的moon节点。

新建一台1核CPU1G内存的服务器,系统ubuntu20.04LTS,

分配IP地址,

添加ipv6路由表,

添加网络安全列表,增加出入站规则,放行出入站流量,

先测一下ping值,

用SSH客户端应用程序连接主机,

获取root权限,

sudo -i

更新可安装软件包的列表,

apt update

更新可升级软件包,

apt upgrade

查看服务器防火墙状态,

如果防火墙处于活动状态,需要执行以下步骤,

添加服务器防火墙规则,放行9993端口,

ufw allow 9993/udp

重启防火墙,让规则生效

ufw reload

查看端口是否放行。

ufw status

安装zerotier,

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

加入ZeroTier网络,

zerotier-cli join

返回 200 join OK

(离开zerotier网络的命令:zerotier-cli leave

验证是否联网,

zerotier-cli listnetworks

生成moon模板,

cd /var/lib/zerotier-one

zerotier-idtool initmoon identity.public > moon.json

修改moon.json,

vi /var/lib/zerotier-one/moon.json

进入编辑状态,

i

修改"stableEndpoints"为服务器公网IP,

"stableEndpoints": ["152.67.193.30/9993","2603:c024:b:a100::30/9993"]

退出编辑状态,

Esc

保存。

:wq

这是命令行修改模式,也可以利用finalshell自带的文本编辑模式,需要注意的是,文本编辑模式需要直接用root登录,否则,会因为权限不够而失败,

通过文件管理器进入zerotier安装目录并找到moon.json,

/var/lib/zerotier-one/moon.json

点击鼠标右键,打开文件,

在文本编辑器中修改"stableEndpoints"为服务器公网IP,

点击菜单保存,等待右上角文件状态显示“已完成”表示修改成功,

点击右上角【X】关闭文本编辑器回到命令行页面。

生成签名文件,

zerotier-idtool genmoon moon.json

执行之后会生产一个000000xxxxxxxxxx.moon(前六位是零,后十位是节点ID)的签名文件,下载moon签名文件备用,

通过文件管理器进入zerotier安装目录并找到000000xxxxxxxxxx.moon,

/var/lib/zerotier-one/000000xxxxxxxxxx.moon

点击鼠标右键,选择下载,等待右上角文件状态显示“已完成”表示下载成功,默认的保存位置在电脑桌面上的一个名为“fsdownload”的文件夹里,备用。

将moon节点加入网络,

mkdir moons.d

mv ./*.moon ./moons.d/

这一步骤也可以使用文本编辑模式,首先建立moons.d目录,然后把下载的000000xxxxxxxxxx.moon上传到目录中就OK,

重启zerotier,

service zerotier-one restart

验证moon节点是否正常联网,

zerotier-cli listmoons

至此,moon节点搭建完成。

接下来,将联网设备加入moon节点,有命令行模式和文本编辑模式,我分别用windows客户端和openwrt路由器来介绍,

打开已连接zerotier的电脑的命令行,先测个没有加入moon节点的ping值,

进入zerotier客户端应用程序的安装目录,

C:\Program Files (x86)\ZeroTier\One>zerotier-cli orbit xxxxxxxxxxx xxxxxxxxxxx(moon节点ID两次,中间带空格)

返回 200 orbit OK

(离开moon节点的命令:zerotier-cli orbit xxxxxxxxxxx xxxxxxxxxxx)

验证是否加入moon节点,

C:\Program Files (x86)\ZeroTier\One>zerotier-cli listpeers

列表中有“MOON”表示已成功加入moon节点,

查看moon节点信息,

C:\Program Files (x86)\ZeroTier\One>zerotier-cli listmoons

用文本编辑模式将另一个局域网已经加入zerotier网络的路由器加入moon节点,

通过文件管理器进入zerotier目录,

/etc/config/zero

或者软连接:/var/lib/zerotier-one

点击鼠标右键新建文件夹moons.d,

进入moons.d目录,点击鼠标右键上传文件,

进入fsdownload目录,找到刚刚下载的000000xxxxxxxxxx.moon文件,确认,等待右上角文件状态显示“已完成”表示上传成功,刷新页面,可以显示文件,

重启zerotier,

service zerotier restart

验证是否加入moon节点,

列表中有“MOON”表示已成功加入moon节点,

至此,openwrt路由器已成功加入moon节点。

两台联网设备都打开ipv6,测个ping值,在两台设备同城并且是同一个宽带接入商(中国移动)的条件下,ping值6毫秒左右,这个级别的ping值,在感觉上基本与局域网内设备的相互连接没有区别。这是由于zerotier在两个具有公网ipv6设备之间直接建立了隧道连接,不再需要多层NAT地址转换。

需要说明的是,搭建moon节点是为了替代planet节点在联网设备握手时的作用,降低设备之间握手时的延迟,也提高你的zerotier网络的稳定性和安全性,并不能直接降低联网设备相互访问时的ping值。也许有人会质疑,既然有了公网ipv6,直接用ipv6不就可以了吗?在实际应用场景中绝大多数ipv6都是动态的,并且ipv6的地址都很难记住,不适合日常应用的场景,当然你设置了ddns除外。

好了,这期教程就到这儿了,如果教程对你有用,欢迎关注学驿站,可以学习更多的电脑、网络和数码使用技巧。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章