每一个问题都是机会

群晖 DSM 7 使用 Docker 安装 ZeroTier

文章目录
  1. 创建一个持久的 TUN(虚拟网卡)
  2. 测试tun.ko模块是否有效
  3. 使tun.ko模块持久化

官方文档:https://docs.zerotier.com/devices/synology

Synology 的 DSM 7 不允许第三方应用程序以 root 身份运行。因此,我们现在推荐使用 Docker 来运行 ZeroTier。

它是在您的 NAS 上运行第三方应用程序的更安全的方式。

设置后,此配置将在重新启动和 DSM 升级后保持不变。

创建一个持久的 TUN(虚拟网卡)

以管理员方式运行

sudo -i
检查tun模块状态

检查是否安装了 tun 模块:

lsmod | grep tun

如果结果为空,请尝试安装它:

insmod /lib/modules/tun.ko

如果一切顺利,继续进行下一个测试。

测试tun.ko模块是否有效

确保 tun.ko 模块可以正常工作:

mkdir /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
cat /dev/net/tun

如果 cat 命令的返回结果是 File descriptor in bad state,则表示模块已正确安装。

使tun.ko模块持久化

模块安装需要在每次 Syn­ol­ogy 重启时保持持久性,就必须重复使用 insmod 命令。

可以创建开机脚本搞定,执行如下命令进行创建:

cat <<EOF > /usr/local/etc/rc.d/tun.sh
#!/bin/sh -e

insmod /lib/modules/tun.ko
EOF

给脚本可执行权限:

chmod a+x /usr/local/etc/rc.d/tun.sh

重新启动 Syn­ol­ogy NAS 或手动执行一次脚本。完成!

运行一次脚本以创建一个 TUN

/usr/local/etc/rc.d/tun.sh

运行ZeroTier Docker

创建目录来存储 ZeroTier 的身份和配置(容器目录挂载到宿主机)

mkdir /var/lib/zerotier-one

拉取ZeroTier Docker容器并运行(容器名zt):

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

Github:https://github.com/zerotier/zerotier-synology

Docker Hub:https://hub.docker.com/r/zyclonite/zerotier

常用命令

查看节点状态

docker exec -it zt zerotier-cli status

加入您的网络

docker exec -it zt zerotier-cli join e5cd7a9e1cae134f

在官网网络设备列表中授权NAS 。然后查看网络状态:

docker exec -it zt zerotier-cli listnetworks

显示正在运行的容器(可选)

docker ps

进入容器(可选)

docker exec -it zt bash

升级 ZeroTier

要升级 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

停止容器

docker stop 52c7cb58a1dd

删除容器

docker container rm 52c7cb58a1dd

拉取最新镜像

docker pull zerotier/zerotier-synology:latest

运行容器

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

添加Moons(可选)

自己搭建Moons:Linux搭建ZeroTier的Moon服务器

Moons官方文档:https://docs.zerotier.com/zerotier/moons

直接使用命令zerotier-cli orbit

docker exec zt zerotier-cli orbit 9c960b9ac2 9c960b9ac2

是否成功?

查看 zerotier-cli listpeers

docker exec zerotier-one zerotier-cli listpeers 

如果输出中出现一条最后为MOON的记录,说明已经成功连接Moon服务器

zerotier-cli listpeers
200 listpeers <ztaddr> <path> <latency> <version> <role>
200 listpeers id myip/9993;6012;1706 -1 1.8.4 MOON
200 listpeers 62f865ae71 50.7.252.138/9993;6012;1070 -294 - PLANET
赞(12)
未经允许不得转载:技术好学屋 » 群晖 DSM 7 使用 Docker 安装 ZeroTier
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址