跳到主要内容

zerotier 相关

提示

本篇着重介绍在群晖Nas上使用zerotier的方法。

介绍

ZeroTier是一个全球智能网络交换机。

它是一个分布式网络管理程序,构建在加密安全的全球点对点网络之上。它提供了先进的网络虚拟化和管理能力,与企业SDN交换机相当,但跨越局域网和广域网,并连接几乎任何类型的应用程序或设备。

简而言之,zerotier 是一个同 frp 一样的内网穿透工具,用来 “打洞”

作用

  1. 以更快的速度远程连接,体验远胜于 frp
  2. 给Nas内网穿透。(这也是我为什么把zerotier放在Nas分类中的原因)

安装

信息

Synology DSM7.0后不允许第三方软件使用 root 权限,所以需要结合 docker 来使用 zerotier
如果是DSM6.x,则可以直接使用官方提供的 .spk安装包
其他 Linux 系统则可以直接执行 curl -s https://install.zerotier.com/ | sudo bash 命令即可安装。

创建一个持续的TUN

以下操作都需在 root 权限下进行。

  1. 编写脚本 /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
  1. 设置脚本的可执行权限
chmod a+x /usr/local/etc/rc.d/tun.sh
  1. 运行脚本来新建一个TUN
/usr/local/etc/rc.d/tun.sh
  1. 检查TUN是否正常
ls /dev/net/tun

# 显示以下内容则为正常
/dev/net/tun

在docker中安装zerotier镜像

在图形界面操作,就不多赘述。
直接搜索 zerotier,就会出现官方最新的 synology版镜像。

在docker中设置容器

  1. 新建一个文件夹存储zerotier的文件和配置
mkdir /var/lib/zerotier-one
警告

建议放在 /var/lib/ 目录中,非常不建议放在nas的共享目录中。

  1. 创建容器名为 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

使用

  1. 查看状态
docker exec -it zt zerotier-cli status
  1. 加入网络
docker exec -it zt zerotier-cli join [Network ID]
提示

如此步骤加入网络不成功,可使用手动添加的方式进行添加:
ZeroTier Central 控制页面 Member - MANUALLY ADD MEMBER 中输入对应的 Address 进行 Add New Member 即可

  1. 给Nas授权,并查看网络状态
docker exec -it zt zerotier-cli listnetworks

会显示你的IP地址

注:ZeroTier Central页面的 Members 项中并不会显示出相关授权信息,但确实已连上!

  1. 显示正在运行的容器(可选项)
docker ps
  1. 进入 zt 容器(可选项)
docker exec -it zt bash

更新

  1. 显示正在运行的容器
docker ps
  1. 停止容器 根据显示的 CONTAINER ID 来终止对应容器
docker stop [CONTAINER ID]
  1. 删除容器
docker container rm [CONTAINER ID]
  1. pull最新更新
docker pull zerotier/zerotier-synology:latest

问题

刚开始启动 zerotier 时,就会出现报错。
报错如下:

ERROR: unable to configure virtual network port: could not open TUN/TAP device: No such file or directory

解决办法