告别龟速 QC:ZeroTier + NAS + Mac 构建极致私有云网
对于用户而言,群晖自带的 QuickConnect 虽然方便,但中转限速和协议受限(如无法原生挂载 SMB)常让人抓狂。
通过ZeroTier,我们可以利用UDP 打洞技术在 MacBook 和 NAS 之间建立加密的P2P 直连隧道。这不仅能让远程挂载磁盘像本地硬盘一样流畅,更能让你的 Mac 随时随地通过内网 IP 访问 NAS 里的数据库、消息队列或微服务组件。
核心优势一览:
满速传输:摆脱群晖中转服务器,直连速度仅取决于物理带宽。
全协议支持:无感挂载 SMB/NFS,SSH 远程管理及 Docker 服务直连。
数据安全:端到端加密,无需公网 IP,无需暴露任何端口到互联网。
本文将分享如何在 Mac 和群晖环境下载快速部署 ZeroTier
1. 环境准备
阶段一:环境准备与镜像获取
在跨越物理距离组建局域网之前,我们需要先在群晖(Synology)端搭建好运行环境。由于国内特殊的网络环境,传统的“搜索-下载”模式往往会失效,因此本章重点介绍如何高效、稳定地准备 Docker 运行环境。
第一步:安装 Container Manager (原 Docker)
群晖在 DSM 7.2 版本后将“Docker”套件更名为“Container Manager”。它是我们运行 ZeroTier 核心引擎的基础。
访问套件中心:登录 DSM 网页管理界面。
搜索与安装:在搜索框输入
Container Manager,点击安装。确认状态:安装完成后,确保套件显示为“已启动”状态。
第二步:解决 Docker 镜像拉取难题
目前国内直接在 Container Manager 界面拉取 Docker Hub 镜像(如zerotier/zerotier-one)大概率会遇到网络连接超时。为了 100% 成功,我们推荐以下两种方案:
方案 A:本地 PC 离线导入(最稳定)
既然你的 Mac/PC 可以正常科学上网,我们可以利用“蚂蚁搬家”的方式:
电脑端下载:在已开启代理的电脑终端运行:
Bash
docker pull zerotier/zerotier-one:latest导出为包:将下载好的镜像打包:
Bash
docker save zerotier/zerotier-one:latest -o zerotier.tar上传至 NAS:将生成的
zerotier.tar通过 File Station 上传到群晖的/docker文件夹下。手动导入:
打开Container Manager->映像。
点击新增->从文件添加,选择刚才上传的
.tar文件。
方案 B:配置群晖系统代理(一劳永逸)
如果你希望群晖具备直接拉取的能力,建议配置系统级代理:
进入控制面板 > 网络 > 常规。
勾选手动配置代理服务器。
填写你内网中其他代理网关的 IP(如你的电脑或软路由)及端口(通常是 7890)。
配置完成后,即可直接在 Container Manager 的“注册表”中搜索并下载。
第三步:确定数据持久化目录
为了保证 ZeroTier 的Identity(节点 ID)在容器升级或重启后不丢失,我们需要建立物理映射目录。
打开File Station。
在
docker共享文件夹下新建子文件夹,命名为zerotier。(可选)建议右键该文件夹,检查权限,确保
SYSTEM账户拥有读写权限。
阶段二:控制台准备
ZeroTier Central 是一个基于 Web 的管理控制台,它决定了哪些设备有权进入你的私有网络。即便两台设备都安装了客户端,只要你不在控制台授权,它们依然无法互相通信。
第一步:注册 ZeroTier 账号
访问官网:打开 ZeroTier官网。
创建账号:点击Login。你可以选择使用 Google、GitHub、Microsoft 账号快捷登录,或者使用邮箱注册。
免费额度确认:对于个人用户,ZeroTier 提供的基础方案支持 1 个网络和 10 个设备,这对于家庭组网(手机、Mac、NAS、公司电脑)绰绰有余。
第二步:创建虚拟网络
登录后,你会看到一个简洁的仪表盘。
新建网络:点击页面顶部的New Network按钮(或者用账号默认的也可以)。
获取网络 ID:系统会自动生成一个类似
8ad51234567890ab的 16 位Network ID。- 请务必记下这个 ID,它是后续所有设备加入的唯一凭证。
- 请务必记下这个 ID,它是后续所有设备加入的唯一凭证。
命名与描述:点击该 ID 进入详细配置页。在Basics栏目下,可以给网络起个名字(如
群晖网络),方便识别。
第三步:准备客户端设备
在返回群晖进行部署前,建议先在笔记本电脑上完成准备:
下载客户端:前往 ZeroTier Download 页面,下载对应操作系统的安装包。
安装并运行:安装并启动后,任务栏会出现对应图标。
加入网络:点击图标 ->Join New Network,输入刚才在网页后台获取的16 位网络 ID。
设备授权:打开官网控制台,选中加入的网络,下方Member Devices列表中会出现客户端设备,点击设备,在Device Details中打开Device Authorized授权。
阶段三:内核驱动修复与高权限容器部署
在 Linux 系统中,ZeroTier 需要通过/dev/net/tun设备来创建虚拟网卡。默认情况下,Docker 容器是无法触碰这个内核驱动的。
第一步:修复 TUN 设备(内核驱动挂载)
由于可能无法直接通过局域网 SSH 进入 NAS,我们利用群晖内置的任务计划来执行提权脚本(能直接连接SSH连接NAS的,使用root执行后面脚本即可)。
打开任务计划:登录 DSM,进入控制面板 > 任务计划。
创建脚本:点击新增 > 计划的任务 > 用户定义的脚本。
任务名称:
fix_tun用户账号:
root
输入脚本内容:在“任务设置”标签页中粘贴以下代码:
# 检查目录是否存在,不存在则创建 if [ ! -d /dev/net ]; then mkdir -p /dev/net fi # 检查设备节点是否存在,不存在则创建 if [ ! -c /dev/net/tun ]; then mknod /dev/net/tun c 10 200 chmod 600 /dev/net/tun fi # 尝试加载驱动,如果已加载则忽略错误 insmod /lib/modules/tun.ko || true # 最后检查一下状态 ls -la /dev/net/tun运行脚本:点击确定后,在列表选中该任务,点击上方的运行。
第二步:创建并配置 ZeroTier 容器
回到Container Manager,利用阶段一准备好的映像开始部署。
启动向导:进入“映像”菜单,选中
zerotier/zerotier-one,点击“运行”。常规设置:
容器名称:
zt(建议简短,方便命令行调用)。启用自动重新启动:勾选。
使用高权限执行容器:核心步骤,务必勾选!这赋予了容器修改网卡的
NET_ADMIN权限。
高级设置 - 存储空间:
添加文件夹,选择阶段一创建的
/docker/zerotier。装载路径填写:
/var/lib/zerotier-one。
高级设置 - 网络:
选择host模式。
解释:host 模式能让 ZeroTier 直接使用 NAS 的物理网络资源,避免复杂的 NAT 嵌套,从而大幅提升 P2P 直连成功率。
第三步:正式加入虚拟网络
容器启动后并不会自动工作,你需要下达“入网指令”。
打开终端:在 Container Manager 的“容器”列表中点击
zt,进入详情,选择“终端机”标签。执行指令:点击“新增 -> 通过命令启动”,输入
sh。在黑色窗口中输入:Bash
zerotier-cli join [你在阶段二获得的16位网络ID]结果验证:如果返回
200 join OK,说明 NAS 已成功向云端指挥中心发送了入网申请。
第四步:云端授权(最后闭环)
回到你的ZeroTier Central网页后台。
刷新页面,滚动到Members区域。你会发现一个新的成员(这就是你的群晖)。
设备授权:点击设备,在Device Details中打开Device Authorized授权。
确认 IP:观察
ZT IP栏,此时 NAS 会获得一个虚拟局域网 IP(例如10.166.15.x)。
阶段四:macOS 远程 SMB 挂载与体验优化
本阶段将指导利用已经打通的 ZeroTier 隧道,实现跨地域的文件同步与管理,并针对远程访问的性能进行最后调优。
第一步:确认群晖 SMB 服务配置
在挂载之前,需确保 NAS 的文件协议已经处于就绪状态。
登录 DSM:使用 QuickConnect 或 ZeroTier 虚拟局域网 IP(加端口,默认为5001) 登录网页版。
开启服务:进入控制面板 > 文件服务 > SMB。
检查勾选:确保“启用 SMB 服务”已勾选。建议在“高级设置”中将最小 SMB 协议设为
SMB2,最大 SMB 协议设为SMB3,以获得最佳的 macOS 兼容性。
第二步:在 Mac 上执行远程挂载
现在,只要 Mac 上的 ZeroTier 连接上虚拟局域网,即可开始挂载。
唤起连接:在 Mac 的访达 (Finder)界面,按下快捷键
Command + K。输入虚拟地址:在地址框输入 NAS 分配到的 ZeroTier 虚拟 IP:
smb://10.166.15.x(请替换为你后台查到的真实虚拟 IP)
身份认证:点击“连接”,在弹出的窗口中输入你的群晖DSM 用户名与密码。为了方便,建议勾选“在我的钥匙串中记住此密码”。
选择路径:选择你想要挂载的共享文件夹(例如
home或video)。
第三步:连接质量诊断(直连 vs 中转)
由于远程挂载的流畅度极大程度上取决于网络路径,你需要确认两端是否建立了P2P 直连。
- 核心诊断命令
在你的 Mac 终端或群晖容器终端中输入以下命令:
Bash
zerotier-cli listpeers该命令会返回当前设备发现的所有节点及其通信路径。
- 输出结果解读(实战分析)
以下是一段典型的输出示例及其对应的含义解析:
| ztaddr | path | latency | version | role |
|---|---|---|---|---|
031a4a315b | 117.64.95.x/18520 | 4 | 1.14.0 | LEAF |
778cde1850 | 103.195.103.x/9993 | 219 | - | PLANET |
关键列深度拆解:
ztaddr(节点 ID):目标设备的“身份证号”。例如
031a4a315b就是你的群晖 NAS。path(物理路径):判定直连的核心依据。
直连状态:如果显示了具体的公网 IP 地址(如
117.64.95.x),说明两端已成功穿透 NAT,建立了P2P 直连。中转状态:如果该列显示为
-或EMPTY,说明打洞失败,流量正通过根服务器转发。
latency(延迟):响应时间。
4-50ms:极佳,通常为同城或同运营商直连,SMB 挂载体验如同插线。
150ms+:通常为中转或跨国路由,访问文件夹会有明显转圈。
role(角色):
LEAF:其他私有设备(NAS、笔记本、手机)。
PLANET:ZeroTier 官方的全球根服务器,负责最初的“牵线搭桥”。
- 如何判断“打洞”是否真正成功?
很多用户误以为看到PLANET很多就代表连接慢。其实,真正决定访问 NAS 速度的只有那一行标注为LEAF的 NAS 节点数据。
判定标准:
看 Path:有 IP 且端口号不再是默认的 9993(通常是随机的高位端口),说明 NAT 穿透成功。
看 Latency:数值越小,代表物理距离越近或路由路径越优。在你的数据中,4ms 的超低延迟意味着你和 NAS 之间建立了一条极高质量的直连隧道。
第四步:使用场景与性能建议
将 NAS 挂载为/Volumes路径后,就可以像操作本地磁盘一样操作它,但需注意其“物理特性”:
轻量化办公:直接在 Finder 里预览 PDF、小图片或编辑简单的 Word 文档非常流畅。
流媒体播放:使用 IINA 或 VLC 播放器,可以直接打开 NAS 上的 1080P 电影,播放器会自动缓冲,体验良好。
重度任务警告:不要直接在挂载路径下运行 Maven 编译、npm install 或 4K 视频剪辑。这些操作涉及数万次小文件读写,网络延迟会成倍放大耗时。
自动挂载:进入 Mac 的系统设置 > 登录项,将挂载好的磁盘图标拖进去,实现开机自动连接。
