黑/白群晖 安装 zerotier-docker 完美版

前言

由于对象需要存照片和视频,256g已经塞不下了,于是前两天在咸鱼买了个星际蜗牛,由于卖家已经刷好了 6.23 版本,官网套件无法安装,于是又重刷了一下 7.2 版本系统,通过矿神的套件源安装zerotier,但是发现路由功能有问题,我无法用内网ip访问路由器的后台,多次百度无果,想到之前折腾openwrt,于是尝试自己干,经过多次尝试,有了本次教程,如果哪里说的不对还请指出。

  • 目的
  • 正常使用 zerotier 并且能正常使用zerotier的自定义路由功能
  • 重启依然完美的正常运行
  • docker 安装 zerotier 好处
  • [硬伤] ds 6.x 不支持从套件安装zerotier,只能升级ds 7.x
  • [硬伤]无法自己选择版本,如最官网最新版是1.10.6,套件版本1.10.2
  • 那种同样的软件喜欢在 docker和套件中,选docker跑软件的
  • 网上教程都无法完美达到想要的效果,总感觉差点东西,重启总有问题
  • 缺点
  • 第一次配置较为麻烦,对linux、群晖纯小白不友好

1. 拉取最新版镜像

  • 镜像网站:https://hub.docker.com/
  • 搜索:zerotier-synology
  • 获得下面最新版拉取最新版镜像命令
docker pull zerotier/zerotier-synology

如果你docker注册表能用也可以通过注册表拉取

2. 安装映像

  • 进入群晖docker面板,进入 映像 ,启动 zerotier-synology 镜像
  • 注意需要映射一个文件夹 /var/lib/zerotier-one

3. 创建 tun 模块

  • 检查是否安装了 tun 模块:
lsmod | grep tun
  • 如果结果为空,请尝试安装它:
insmod /lib/modules/tun.ko
  • 查看 TUN 的运行状态
ls /dev/net/tun

返回为 /dev/net/tun 即可

  • 再次查看 tun 是否安装完成
lsmod | grep tun

5. 加入网络

docker exec -it 容器名称 zerotier-cli join 网络id

4. 开启IP转发

  1. 在群晖系统 /etc/sysctl.conf 中增加
    (ipv6按需,没的话可以不加)
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

5. 添加群晖任务计划

  • 开启tun模块
insmod /lib/modules/tun.ko
  • 查看网卡信息
ifconfig
  1. 需要记住两个网卡名字,一个是群晖内网网卡,一个是zerotier的网卡
  2. 内网网卡的ip的地址是你的内网网卡,一般名字为eth0
  3. zerotier网卡ip的地址是zerotier分配的ip,一般名字为 ztxxxxxx
  4. 如果tun模块没有开启的话,zerotier是无法成功运行的
  • 添加规则到iptables
## 必须是zero启动以后才能设置,所以需延迟
sleep 1m
##设置与自己情况对应的环境状况
PHY_IFACE=内网网卡名称; ZT_IFACE=zerotier网卡名称
sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT
iptables-save
  • 最终任务计划为:
  • 执行脚本用户为:root !!!
  • 自定义代码
insmod /lib/modules/tun.ko
sleep 1m
PHY_IFACE=内网网卡名称; ZT_IFACE=zerotier网卡名称
sudo iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
sudo iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT
iptables-save
  • 试试重启你的群晖,重启完毕,等待至少1分钟以后,看看效果

6. 教程引用

  • 本教程通过以下教程多次亲测得到最终整合版
  1. [简书]zerotier访问局域网内所有电脑
  2. [矿神]利用群晖Zerotier套件虚拟组网 打通多个局域网互访
  3. [知乎]群晖DSM7安装Docker版Zerotier教程(官方版)