由于 DSM 7 不允许第三方应用直接使用root权限运行,因此原来的Zerotier套件就各种报错了。使用Docker版本则能解决这个问题。 当然,使用Docker方案,首次折腾会比较麻烦,但是一旦折腾好,就一劳永逸了。
完成这个教程,你主要需要完成以下流程:
- 在NAS上启用SSH
- 创建一个持久的 TUN
- 安装Docker
- 设置Docker
创建一个持久的TUN
使用SSH 连接到你的NAS,比如使用Putty工具连接。
ssh user@local-ip
切换为root身份
sudo -i
使用vi工具编写脚本到路径: /usr/local/etc/rc.d/tun.sh
这将使得 /dev/net/tun
在启动时调用
echo -e '#!/bin/sh -e \ninsmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh
给这段脚本添加权限(其实应该先vi这个空的脚本,然后添加权限,最后在写入上面的脚本内容,不然会提示你readonly)
chmod a+x /usr/local/etc/rc.d/tun.sh
运行这个脚本
/usr/local/etc/rc.d/tun.sh
检查TUN的运行状态
ls /dev/net/tun /dev/net/tun
安装Docker到你的NAS上
直接到套件中心去安装。
创建一个Zerotier目录
mkdir /var/lib/zerotier-one
创建一个容器,这里将它命名为zt(方便后续使用),这里会自动下载最新版的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
使用与配置
查看状态
docker exec -it zt zerotier-cli status
添加网络
docker exec -it zt zerotier-cli join e5cd7a9e1cae134f
在zerotier后台授权当前设备,然后查看状态:
docker exec -it zt zerotier-cli listnetworks
查看运行中的容器:
docker ps
进入容器终端
docker exec -it zt bash
升级
升级zerotier需要先停止容器并且移除容器,然后再拉去最新的容器:
docker ps
列举显示信息:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 52c7cb58a1dd zerotier/zerotier-synology:latest "zerotier-one" 5 weeks ago Up 9 days zt
停止容器(注意id)
docker stop 52c7cb58a1dd
移除容器(使用rm)
docker container rm 52c7cb58a1dd
拉取最新的容器
docker pull zerotier/zerotier-synology:latest
然后再回到创建的步骤。