OpenWrt路由器安装ZeroTier并启用moon服务

上次在介绍内网穿透软件Frp时说到,要实现内网穿透必须要有公网地址的服务器做转接,后来上网发现说P2P方式的内网穿透软件ZeroTier不需要公网地址的服务器,心里想着要是真能省下购买VPS的费用又何尝不是美事一桩。马上行动起来进行ZeroTier安装测试,发现理想很美好、现实却很骨感。因为ZeroTier的节点都在国外,说是P2P传输方式,但是实际连接速度实在太慢、无法恭维。后来查资料说,在国内安装个moon服务器就可以很好地解决这个问题(注:还是需要有国内公网地址的VPS空间),测试以后发现确实安装moon后,连接速度有大幅改善,自己测试(远程视频观看)比Frp要稍快一点,就冲这一点觉得还是可以推广一下。部分人认为ZeroTier的安全性不如Frp,因为它不像Frp是完全开源的,只是客户端开源,服务端并没有开源(注:未经过确认),所以用不用ZeroTier完全由个人根据实际情况来决定,这里只想把OpenWrt路由器安装ZeroTier并启用moon服务作为一种内网穿透技术与大家一起分享。

1、在ZeroTier网站注册,并添加虚拟网络,获得网络ID

近期我尝试用国内邮箱地址完成注册,但很遗憾一直未能收到确认邮件;后采用谷歌账号登录,马上就能完成注册,不需要验证邮箱,最大连接数为50。

OpenWrt路由器安装ZeroTier并启用moon服务-1

2、公网地址VPS安装moon服务器

以Ubuntu系统为例:

1)安装ZeroTier并联网

curl -s https://install.zerotier.com/ | sudo bash
sudo zerotier-cli join 9bee8941b5433ef4   # 9bee8941b5433ef4为你在网站注册获得的网络ID

到ZeroTier网站确认让连接生效

2)生成moon配置文件

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

3)修改配置文件 moon.json

主要是添加公网IP,修改内容如下, 9993是默认端口

vim moon.json

找到对应行修改内容

"stableEndpoints": [ "111.111.111.111/9993" ]    # 111.111.111.111修改为自己的公网ip

4)生成 moon 文件

sudo zerotier-idtool genmoon moon.json

执行该命令后,会在在 /var/lib/zerotier-one 目录下生成一个类似 000000xxxxx.moon 的文件

5)使 moon 配置文件生效

在 /var/lib/zerotier-one 目录下,新建一个 moons.d 文件夹,并将刚生成的 .moon 配置文件放到该文件夹下

mv 00000018fasd2319.moon moons.d/

6)重新启动Zerotier

systemctl zerotier-one restart # 重启zerotier

7)将 moons.d 文件夹(含里面的 000000xxxxx.moon 文件)复制下来备用

3、NAS安装ZeroTier并启用moon服务

以Synology NAS为例

1)先到ZeroTier网站下载Synology NAS系统对应的安装包,例如: zerotier_x64-6.1_1.4.0-0.spk

2)到NAS选择手动安装,安装ZeroTier

3)利用WinSCP连接到NAS命令行状态,输入

sudo zerotier-cli join 9bee8941b5433ef4

到ZeroTier网站确认让连接生效

4)启用moon服务

将 moons.d 文件夹复制到 /var/lib/zerotier-one 目录下

直接在命令行运行

sudo zerotier-cli orbit xxxxxxxxxx xxxxxxxxxx  # xxxxxxxxxx 为 moon.json 文件中ID
或
sudo zerotier-cli orbit 000000xxxxx 000000xxxxx # 000000xxxxx 为 .moon 文件的文件名

再重启NAS,ZeroTier也会跟着重新启动

5)测试moon服务是否工作正常

sudo zerotier-cli listpeers | grep MOON

能获取到自己设置的公网ip地址即可

4、OpenWrt一级路由安装ZeroTier并启用moon服务

1)安装并连接

opkg update && opkg install zerotier
zerotier-cli join 9bee8941b5433ef4

到ZeroTier网站确认让连接生效

2)修改配置文件

vim /etc/config/zerotier

需要修改的内容如下(注:其它内容不变)

option enabled '1'     # 0变1
option config_path '/etc/zerotier'  # 去掉前面的注释#
list join '9bee8941b5433ef4'  # 输入你在网站注册获得的网络ID

3)在/etc 目录下创建 zerotier 子目录,再将 moons.d 文件夹复制到 /etc/zerotier 目录下,完成后重启ZeroTier

/etc/init.d/zerotier restart

4)测试moon服务是否工作正常

zerotier-cli listpeers | grep MOON

能获取到自己设置的公网ip地址即可

5、设置OpenWrt路由后接所有设备访问NAS服务

1)新增 zerotier 网络,协议选择 Static address静态地址,接口选择 虚拟网卡 zt******;
2)静态地址按虚拟网络分配的IP地址填写,例如: 192.168.192.105;掩码 255.255.255.0;广播 192.168.192.255

OpenWrt路由器安装ZeroTier并启用moon服务-2
3)设置防火墙与WAN网络一样

OpenWrt路由器安装ZeroTier并启用moon服务-3

经过以上设置,连接该路由的设备(包括下级路由设备)就都不需要再单独安装ZeroTier客户端,就可以访问其它客户端的资源,如NAS客户端的存储服务。同理,如果设置端口转发,其它ZeroTier客户端也可以方便地访问OpenWrt路由之后连接的设备资源。