黑/白群晖 安装 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教程(官方版)
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐