前段时间出差在外访问家里黑群晖,看套件中心有应用更新,遂手贱 全部点了 更新,依稀记得之前在群晖系统内部署ZeroTier的时候踩过坑,一种不祥的预感袭来
之后几天再也没能成功访问
原因
回到家第一件事就是内网访问群晖,果然,套件中心的ZeroTier无法正常启动。查阅资料后得知:
由于 DSM 7 不允许第三方应用直接使用 root 权限运行,因此升级到 DSM7 的用户原来的 ZeroTier 套件就各种报错,新用户通过套件中心安装 ZeroTier 也会存在问题
使用 Docker 版本则能解决这个问题。 当然,使用 Docker 方案,首次折腾会比较麻烦,但是一旦折腾好,就一劳永逸了。
重新部署 ZeroTier
由于此类教程具有一定时效性,具体操作中也容易踩坑,故在翻阅大量资料后,本人决定按照官方文档部署。本文为了确保阅读连续性,尽量以纯命令+流程解释进行展示(懒得截图)
完成这个教程,你主要需要完成以下流程:
在 NAS 上启用 SSH
ssh 连接到 nas 系统中
创建一个持久的 TUN
在 DSM7 中安装 Docker 套件
创建一个Zerotier目录
ZeroTier容器的配置
在 NAS 上启用 SSH
找到 控制面板 - 高级模式 - 终端机和SNMP,启用 SSH 功能,并记下 SSH 端口号控制面板→高级模式→终端机和SNMP
启用 SSH 功能,记下 SSH 端口号
2. ssh 连接到 nas 系统中
ssh username@nas_ip # 用户名和密码与 web 端的一致sudo -i # 切换到 root 账号
3. 创建一个持久的 TUN
使用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
#创建TUN存在问题可查阅这篇文章:
Fix TUN/TAP not available on a Synology NAS4. 在 DSM7 中安装 Docker 套件
这个过程就和所有的群晖套件一样,直接进入套件中心进行安装即可。不过注意在 DSM 7 测试版中,所有的套件也被归类为 Beta 套件,直接安装即可:5. 创建一个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
6. ZeroTier使用与配置
查看状态docker exec -it zt zerotier-cli status
添加网络
docker exec -it zt zerotier-cli join XXXXXXXX #XXXXXXXX为你的ZeroTier NetWork ID
在 ZeroTier 后台授权当前设备,然后查看状态:
docker exec -it zt zerotier-cli listnetworks
返回 200 正常
查看运行中的容器:
docker ps
进入容器终端
docker exec -it zt bash
扩展阅读:升级ZeroTier
升级zerotier需要先停止容器并且移除容器,然后重新拉取最新的容器:docker ps
docker stop XXXXXXXX
docker container rm XXXXXXXX
docker pull zerotier/zerotier-synology:latest
本文基于ZeroTier官方文档进行实战测试和理解
Synology NAS | ZeroTier Documentation
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
网友评论