Truenas或Freenas部署zerotier内网穿透

现在网上大多数在Freenas或Truenas下部署zerotier都是使用的docker下安装Linux环境再安装zerotier的方案,可是Freenas本身就预装好了zerotier,为什么不用呢?

安装zerotier

由于Truenas并没有预装zerotier,所以要先安装zerotier
使用Freenas的朋友可以跳过此步骤

正常来说,安装zerotier一般是使用pkg安装,但是Truenas默认情况下不允许我们这么做,所以要先修改两个文件

1
nano /usr/local/etc/pkg/repos/local.cfg

把yes改成no

1
nano /usr/local/etc/pkg/repos/FreeBSD.cfg

把no改成yes

操作完后就可以使用pkg了,注意这个修改只是临时的,如果你重启了就要重新修改,当然也是有办法可以持久生效的

接下来安装zerotier

1
pkg install zerotier

过程中会提示更新等操作,输入y回车即可,安装完后就可以使用zerotier了

注意!!!,这时候千万不要重启你的系统
注意!!!,这时候千万不要重启你的系统

如何加入网络和遇到的坑

默认系统是不会启动zerotier的,所以需要手动开启zerotier

1
zerotier-one -d

启动之后就能加入网络了

1
zerotier-cli join 你的网络

然后在你的zerotier控制台允许你的设备,做到这一步正常来说就能通过zerotier访问了,但是到这还没完

如果你现在重启了系统,你再输入zerotier-cli info你就会发现你的id变了,加入的网络也没了

这是因为重启系统后Freenas或Truenas会自动清除/var/db下的文件(在第一步中重启后不能使用pkg也是因为etc下的文件会被恢复),恰好你的zerotier配置文件也在这个目录下,所以我们就要想办法让他能保存下来,我们要做的就是把文件复制到一个不会被恢复的目录,比如 /usr/local

输入以下指令备份你的zerotier配置文件到/usr/local下(如果要加moon的话先加moon再输入)

1
cp -a /var/db/zerotier-one /usr/local

备份了当然还没结束,我们还要想办法让他在开机之后给我们恢复,所以我们需要添加 初始化/关闭脚本,(在Freenas里面叫做 开机/关机脚本),位置如下

首先添加第一个脚本用于恢复我们的文件

1
cp -a /usr/local/zerotier-one /var/db

第二个脚本用于启动zerotier,注意需要选择Post Init(当然如果你不想开机启动zerotier的话也可以不加)

1
nohup /usr/local/sbin/zerotier-one -p >/dev/null 2>&1 &

关于这里为什么要用zerotier-one -p而不是zerotier-one -d,是因为笔者在使用-d启动时遇到启动失败的问题,具体什么原因笔者也不清楚
使用nohub是因为-p会阻塞当前进程,所以放到后台运行

到这步就完成了所有的操作