黑群晖(DSM7)挂载zerotier one(使用docker)部署分享

2022-04-17 22:18:39 15点赞 84收藏 17评论


前言:前阵子在小伙伴那收了台二手的dell 9020,用来折腾黑群晖尝尝鲜,折腾完突然想到,没有外网访问,只有局域网差点意思,本来小伙伴推荐我淘宝买个码洗白,不过我手上有一台百度云服务器,有公网ip,并且部署了一个zerotier one的moon,所以想着,还是直接部署zerotier做内网穿透好了,便开始了上网查资料,在大妈论坛里,找到很多大神的帖子,都是直接安装群晖zerotier套件即可,等到实际操作,发现,DSM7以后的版本,官方不在支持群晖zerotier套件了,以下是zerotier官方说明大意:

“由于Synology 的 DSM 7 不允许第三方应用程序以 root 用户身份运行。所以DSM7以上的版本将只能使用docker的方式来安装zerotier(而DSM6的zerotier将在2023年进入EOL阶段(停止服务)(且用且珍惜吧。)”

好在zerotier的文档写的很清晰,照着管方文档一步一步操作即可,中间遇到了点和官方文档不太一致的地方,故写下自己的操作过程,给大家一个参考,也方便以后我重装黑群晖可以照着自己的文档一步一步操作,避免再次查资料;如需要查看官方文档,可以点击此处 以下是具体步骤;


通过docker安装zerotier主要分为以下五个步骤:

  1. 在nas启动ssh访问;

  2. 创建TUN服务;

  3. 安装docker服务(群晖套件直接安装即可,这里略过);

  4. 拉取并启动zerotier one镜像;

  5. 将zerotier-one镜像加入你的网络,并添加moon节点


在nas启动ssh访问

在群晖页面控制面板下,找的“终端机和SNMP”这一项,把“启动SSH功能”勾上即可,默认使用22端口即可;

开启SSH功能开启SSH功能

之后使用远程访问工具(我这里使用putty)登录群晖;

使用putty连接使用putty连接



创建TUN服务

首先切换到root用户(以下所有的操作都需要有root权限)

sudo -i

创建一个 /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

给刚刚创建的tun脚本授予所有用户均可执行的权限

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

使用以下命令检查以下tun.ko是否存在

lsmod | grep tun

检查是否有tun模块检查是否有tun模块

由于我的群晖默认已经有tun这个包了,所以就不需要安装,直接用即可,如果使用lsmod命令找不到tun这个包,则执行以下脚本,创建TUN

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

如果执行脚本遇到以下报错,说明tun.ko模块可能已存在,不需要重新编译

tun.ko冲突tun.ko冲突

检查一下 TUN

ls /dev/net/tun

官方:如果您在让TUN工作时遇到困难,请查看‎‎Rui Marinho的指南‎

创建zerotier镜像

创建一个文件夹用于挂载zerotier-one的配置文件和认证信息(我这里路径指定到我自己创建的docker/zerotier文件夹下)

mkdir /volume1/docker/zerotier

这里也可以直接在群晖file Station上创建,然后再文件夹属性中获取实际路径(建议使用这步,比较直观,不容易出错)

创建挂载映射路径创建挂载映射路径

以下是zerotier官方给的注意:

In the next step we bind mount to the host's created above in order to store ZeroTier's identity. This is not guaranteed to survive DSM updates. I would suggest placing this on an automatically-mounted volume where your other private user data resides. The location you choose to store your identities should be kept secure and never placed on a shared volume that others can access./var/lib/zerotier-one

译文版本:

‎在下一步中,我们将装载绑定到上面创建的主机,以存储ZeroTier的身份(我的理解是config配置和用户信息)。这不能保证在 DSM 更新后仍然有效(zerotier自己也不确定,为了群晖更新后,会不会不再允许用户使用zerotier做内网穿透,毕竟DSM7之后,群晖直接不再支持zerotier的套件了,可能zerotier自己也感觉后续可能会被不再支持,故在此给用户打个预防针)。zerotier建议将其放在其他私人用户数据所在的自动装载卷上。您选择存储身份(用户信息和config信息)的位置应保持安全,切勿放置在其他人可以访问的共享卷上‎。


构建zerotier-one镜像 (Repo: zerotier/zerotier-synology:zt)

docker run -d
--name zt
--restart=always
--device=/dev/net/tun
--net=host
--cap-add=NET_ADMIN
--cap-add=SYS_ADMIN
-v /volume1/docker/zerotier:/var/lib/zerotier-one zerotier/zerotier-synology:latest

生成容器生成容器

执行完,出现一串检验码即表示镜像部署启动成功,回到群晖管理页面,既可以看到多了一个群晖镜像;

容器启动正常容器启动正常

配置zerotier-one加入网络,并配置moon节点

配置zerotier-one加入网络

使用以下命令检查zerotier-one的运行状态

docker exec -it zt zerotier-cli status

再使用以下命令加入你的zerotier-one网络(其中后面的e5cd7a9e1cae134f换成你自己的zerotier-one生成的网络id

docker exec -it zt zerotier-cli join e5cd7a9e1cae134f

黑群晖(DSM7)挂载zerotier one(使用docker)部署分享

当看到200 join OK,既是表示加入网络成功,这时候登录zerotier控制台,即可看到网络列表多了一条未授权加入的网络,勾选允许其加入即可;

黑群晖(DSM7)挂载zerotier one(使用docker)部署分享

接下来在为docker环境下的zerotier-one添加moon节点

这个比较简单,直接在群晖file station下,找到你上面创建的docker文件夹下的zerotier文件夹,将你的moon.d拖拽进入即可

添加mood文件添加mood文件


最后,重启zerotier docker容器,在ssh端执行以下命令,检查moon节点是否加载成功(看到多了moon的那行即表示成功)

docker exec -it zt zerotier-cli listpeers

挂载moon识别成功挂载moon识别成功

最后在手机上使用zerotier分配的ip即可顺便在4G网络下接入局域网内的群晖了(前提是你的手机需要先安装zerotier客户端,并已加入同一个网络id)

黑群晖(DSM7)挂载zerotier one(使用docker)部署分享


写在最后,拿到dell 9020已经两个月了,在最开始我想过很多,怎么规划这台设备,要加多少多少服务,加openwrt做旁路由,安装esxi,划分空间,构建一个大而全all in one,每一分功耗都要用到极致,就是怎么也想不出,怎么规划是最好的,如果需要完成大全套,我需要把赛扬的u换成e3,我需要把4G的内存换成8G,我需要把加一个ngff固态,再加一个网口,一个4T机械盘,看着网上各位评论区的评论大佬,我一度以为,用zerotier-one都是耻辱,没有挂载frp服务,没有xxx的,都不好意思出来说自己用着黑群晖了,但是,后面,我突然发现,我好像,也没那么多需求呀,nas的主业,不就是做好网络存储文件共享么?网上的戾气,慢慢的影响了我们,后面,突然发现,我一个连代码都不怎么爱写注释的人,其实,够用就好了,nas就是nas,能满足我的需求就好了,zerotier用moon做打洞,也完全满足了我随时访问我宿舍电脑,nas的需求,也借着zerotier,再加上moonlight,我实现了远程串流,在宿舍串流我同事家的台式机,实现了在t480上60帧运行老头环,如果大家有兴趣,我可以再写一篇使用zerotier+云服务器公网ip+moonlight低成本稳定串流玩老头环的教程。

年少时,也曾为了某项技术谁好谁坏吵得面红耳赤,尽管自己,压根用的就不深,年纪上去了,工作忙碌之余,才发现自己用的,真不是很多,够用就好

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
17评论

  • 精彩
  • 最新
  • 能否通过群晖访问群晖所在的局域网其他设备? 我知道op搭建zerotier后可以达到这个目的。

    校验提示文案

    提交
    没留意,我操作的时候记录下来的 [喜极而泣]

    校验提示文案

    提交
    收起所有回复
  • 最后一句点赞,够用就好。 [高兴] [高兴]

    校验提示文案

    提交
    [喜极而泣] [喜极而泣] 因为我发现,单有一颗能力有限的爱折腾的心,一次性记不住那么多功能,用上了,和自己需求对上了,才是持久的,不然,除了折腾,剩下的,就是退烧后,一堆买来没用上又过时了的设备

    校验提示文案

    提交
    [喜极而泣] [喜极而泣] 够用就好,主要是懒。。。。

    校验提示文案

    提交
    收起所有回复
  • Spk更简单

    校验提示文案

    提交
    [喜极而泣] [喜极而泣] spk是啥??

    校验提示文案

    提交
    群晖套间。。。。。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 怎么获得moom节点?

    校验提示文案

    提交
    自己搭建。。。。 [喜极而泣] [喜极而泣]

    校验提示文案

    提交
    收起所有回复
  • 你好,占用你几分钟时间,我按照你的步骤安装,但是后面就无法运行了,不知怎么解决呢?到了构建这一步,出现了问题,构建zerotier-one镜像 (Repo: zerotier/zerotier-synology:zt)

    校验提示文案

    提交
    报啥错?

    校验提示文案

    提交
    收起所有回复
  • 本来是张大妈首发,结果。。。。张大妈审核时间太长,我又发到csdn,结果,那边文章秒过 [喜极而泣] 这边还没审批完

    校验提示文案

    提交
  • 你这个命令错的
    echo -e '#!/bin/sh -e ninsmod /lib/modules/tun.ko' > /usr/local/etc/rc.d/tun.sh
    这里没有换行,所有命令都被#注释了,实际上 -e后面要加一个\换行

    校验提示文案

    提交
  • 太棒了,docker版的可以用了。哈哈哈哈

    校验提示文案

    提交
  • 真的太好了,按照官方的教程和命令,最后显示200 join OK,但是zerotier管理后台始终看不到待授权的设备,试了无数次,总是不行,排查了各种网络问题,都不行,真的崩溃,本来很简单的操作,就是不成功,按照这个教程一次搞定,太感谢了。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
84
扫一下,分享更方便,购买更轻松