群晖 DSM 7.2 安装 ZeroTier Docker 完整教程
群晖 DSM 7.2 安装 ZeroTier Docker 完整教程
前言
ZeroTier 是一个强大的虚拟局域网(VPN)解决方案,可以让分散在全球各地的设备组成一个虚拟局域网。本文将详细介绍如何在群晖 DSM 7.2 系统上通过 Docker 安装和配置 ZeroTier 客户端。
环境要求
- 群晖 NAS 系统版本:DSM 7.2 或更高
- 已安装 Container Manager(Docker)套件
- 已开启 SSH 服务
- Root 权限访问
一、准备工作
1.1 安装 Container Manager
- 打开群晖 套件中心
- 搜索并安装 Container Manager(旧版本称为 Docker)
- 等待安装完成
1.2 开启 SSH 服务
- 进入 控制面板 > 终端机和 SNMP
- 勾选 启动 SSH 功能
- 端口保持默认 22 或自定义
- 点击 应用
1.3 SSH 连接到群晖
使用 SSH 客户端(如 PuTTY、Terminal)连接:
1 | ssh your_username@your_nas_ip |
登录后切换到 root 用户:
1 | sudo -i |
二、创建 TUN 设备
ZeroTier 需要 TUN/TAP 设备来创建虚拟网络接口。群晖系统默认没有创建该设备,需要手动创建。
2.1 手动创建 TUN 设备
1 | # 创建 /dev/net 目录 |
你应该看到类似以下输出:
1 | crw-rw-rw- 1 root root 10, 200 Nov 3 10:30 /dev/net/tun |
2.2 创建开机自启动脚本
由于群晖重启后 TUN 设备会消失,需要创建开机自动执行的脚本。
方法一:使用 rc.d 脚本(推荐)
1 | # 创建脚本目录(如果不存在) |
方法二:使用任务计划
打开群晖 控制面板 > 任务计划
点击 新增 > 触发的任务 > 用户定义的脚本
配置任务:
- 任务名称:创建 TUN 设备
- 用户账号:root
- 事件:开机
- 已启用:勾选
在 任务设置 > 用户定义的脚本 中输入:
1 |
|
- 点击 确定 保存
- 右键点击刚创建的任务,选择 运行 测试是否成功
三、安装 ZeroTier Docker 容器
3.1 创建数据目录
1 | # 创建 ZeroTier 数据存储目录 |
3.2 运行 ZeroTier 容器
使用以下命令创建并运行 ZeroTier 容器:
1 | docker run -d \ |
参数说明:
-d:后台运行--name zerotier-one:容器名称--restart=always:开机自动启动--privileged:特权模式,赋予容器完整的系统权限--net=host:使用主机网络模式--device=/dev/net/tun:映射 TUN 设备到容器-v /volume1/docker/zerotier:/var/lib/zerotier-one:挂载数据目录以持久化配置
3.3 验证容器运行状态
1 | # 等待容器启动(约 10-15 秒) |
成功的输出应该类似:
1 | 200 info a1b2c3d4e5 1.12.2 ONLINE |
其中 a1b2c3d4e5 是你的 ZeroTier 节点 ID(10 位十六进制字符)。
四、加入 ZeroTier 网络
4.1 加入网络
1 | # 加入 ZeroTier 网络(替换 <网络ID> 为你的实际网络 ID) |
成功的输出:
1 | 200 join OK |
4.2 查看网络状态
1 | # 查看已加入的网络列表 |
输出示例:
1 | 200 listnetworks <网络ID> <网络名称> <MAC地址> OK PRIVATE <分配的IP> |
4.3 在 ZeroTier Central 授权设备
- 访问 ZeroTier Central
- 登录你的账号
- 点击进入你的网络
- 在 Members 部分找到刚才显示的节点 ID
- 勾选 Auth 复选框授权该设备
- (可选)设置设备名称和描述
授权后,稍等片刻,再次检查网络状态:
1 | docker exec zerotier-one zerotier-cli listnetworks |
状态应该从 REQUESTING_CONFIGURATION 变为 OK。
4.4 验证网络连接
1 | # 查看网络接口(应该看到 ztxxxxxxxx 接口) |
输出示例:
1 | 10: ztc5f7g8h9i: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc fq_codel state UNKNOWN group default qlen 1000 |
五、使用 Docker Compose(可选)
如果你更喜欢使用 Docker Compose 管理容器,可以使用以下配置。
5.1 创建 docker-compose.yml
1 | # 进入 docker 目录 |
5.2 启动服务
1 | # 启动容器 |
5.3 在 Container Manager 中使用
- 打开 Container Manager
- 点击 项目 标签页
- 点击 新增
- 设置项目名称:
zerotier - 设置路径:
/volume1/docker - 将上面的
docker-compose.yml内容粘贴到编辑器中 - 点击 部署
六、常用管理命令
6.1 基本操作
1 | # 查看容器状态 |
6.2 ZeroTier 命令
1 | # 查看节点信息 |
七、故障排查
7.1 容器无法启动
问题: 容器启动失败或频繁重启
解决方案:
1 | # 查看详细日志 |
7.2 网络连接失败
问题: 加入网络后无法连接
检查步骤:
确认在 ZeroTier Central 已授权设备
检查网络状态:
1
docker exec zerotier-one zerotier-cli listnetworks
确认防火墙规则:
- 群晖防火墙允许 UDP 9993 端口
- 路由器允许 UDP 9993 端口转发
检查网络接口:
1
ip addr show | grep zt
7.3 重启后容器无法工作
问题: 群晖重启后 ZeroTier 容器报错
原因: TUN 设备未自动创建
解决方案:
检查 TUN 设备:
1
ls -l /dev/net/tun
如果不存在,检查开机脚本:
1
ls -l /usr/local/etc/rc.d/tun.sh
手动执行脚本:
1
/usr/local/etc/rc.d/tun.sh start
或在任务计划中手动运行一次
7.4 权限错误
问题: authtoken.secret not found or readable
解决方案:
1 | # 检查数据目录权限 |
7.5 查看日志
1 | # 容器日志 |
八、高级配置
8.1 设置静态 IP
在 ZeroTier Central 网络设置中:
- 进入你的网络
- 点击 Members 部分的设备
- 在 Managed IPs 中添加静态 IP
- 保存设置
8.2 配置路由
如果需要让 ZeroTier 网络访问群晖的其他网段:
1 | # 查看当前路由 |
8.3 设置防火墙规则
在群晖控制面板中配置:
控制面板 > 安全性 > 防火墙
编辑规则,允许以下端口:
- UDP 9993:ZeroTier 默认端口
8.4 性能优化
1 | # 查看 ZeroTier 统计信息 |
九、安全建议
使用强密码:确保 ZeroTier Central 账户使用强密码并启用两步验证
网络访问控制:在 ZeroTier Central 中合理设置网络访问规则
定期更新:定期更新 Docker 镜像以获取安全补丁
1
2
3
4docker pull zerotier/zerotier:latest
docker stop zerotier-one
docker rm zerotier-one
# 重新运行容器(使用之前的命令)审计日志:定期查看 ZeroTier 连接日志
最小权限原则:只授权必要的设备加入网络
十、卸载
如果需要完全卸载 ZeroTier:
1 | # 停止并删除容器 |
十一、总结
通过本教程,你已经成功在群晖 DSM 7.2 上部署了 ZeroTier Docker 客户端。主要步骤包括:
- ✅ 创建 TUN 设备
- ✅ 配置开机自启动
- ✅ 部署 ZeroTier Docker 容器
- ✅ 加入 ZeroTier 网络
- ✅ 在 ZeroTier Central 授权设备
现在你的群晖 NAS 已经加入了 ZeroTier 虚拟局域网,可以从任何地方安全地访问你的 NAS 资源。
参考资源
作者注:本教程基于 DSM 7.2 系统测试通过,如有问题欢迎反馈。
最后更新:2025年11月
