如何在群晖 NAS 上使用 Docker 运行 ZeroTier

moonjerx
2024-08-11 / 0 评论 / 154 阅读 / 正在检测是否收录...

本文将指导您如何在群晖 NAS 上使用 Docker 运行 ZeroTier 容器,从而实现虚拟私有网络 (VPN) 的功能。ZeroTier 是一款开源的虚拟网络管理工具,可以将不同的设备连接到同一个虚拟网络中。

前提条件

  • 确保您的群晖 NAS 允许 SSH 连接。
  • 确保 Docker 应用已在群晖 NAS 上安装并且运行正常。
  • 您需要一个有效的 ZeroTier 身份验证令牌。

使用 ip tuntap 创建 TUN 设备

由于群晖 NAS 并不直接支持 /dev/net/tun,您需要使用 ip tuntap 命令来创建 TUN 设备。请注意,群晖 NAS 的 ip tuntap 命令可能不可用,因此您需要采用其他方法来模拟 TUN 设备的功能。

创建 TUN 设备

  1. 加载 TUN 模块:

    sudo modprobe tun
  2. 手动创建 TUN 设备:

    sudo ip tuntap add dev tun0 mode tun
    sudo ip link set tun0 up

检查 TUN 设备状态

  • 检查 TUN 设备的状态:

    ip link show tun0

创建 ZeroTier 容器

为了在群晖 NAS 上运行 ZeroTier 容器,您需要使用以下命令。此命令已经过实践验证,并且在群晖 NAS 上可行。

示例命令

docker run -d \
--name ztclient \
--restart=always \
--device=/dev/net/tun \
--net=host \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
-v /volume1/docker/dockerfile/zerotier/ztclient/data:/var/lib/zerotier-one \
zerotier/zerotier-synology:1.8.10 \
-e ZT1_AUTH_TOKEN=<your_auth_token>

命令解析

  • -d: 以守护进程模式运行容器。
  • --name ztclient: 为容器命名。
  • --restart=always: 容器会在系统启动时自动重启。
  • --device=/dev/net/tun: 挂载 /dev/net/tun 设备,以便容器能够使用 TUN 功能。
  • --net=host: 使用宿主机网络栈,而不是 Docker 的默认网络栈。
  • --cap-add=NET_ADMIN: 增加容器的权限,使其能够管理网络接口。
  • --cap-add=SYS_ADMIN: 增加容器的权限,使其能够执行系统级操作。
  • -v /volume1/docker/dockerfile/zerotier/ztclient/data:/var/lib/zerotier-one: 将宿主机上的目录挂载到容器内,用于持久化存储 ZeroTier 数据。
  • zerotier/zerotier-synology:1.8.10: 指定要运行的 Docker 镜像及其版本。
  • -e ZT1_AUTH_TOKEN=<your_auth_token>: 设置环境变量,其中 <your_auth_token> 是您的 ZeroTier 身份验证令牌。

注意事项

  • 确保您已经创建了 /volume1/docker/dockerfile/zerotier/ztclient/data 目录。
  • 如果您遇到权限问题,可能需要使用 sudo 来运行 Docker 命令。
  • 如果您之前从未在群晖上使用过 Docker,您可能需要先使用 sudo 来执行 Docker 命令。如果您经常使用 Docker,可以考虑将您的用户添加到 docker 组,这样就不需要每次都使用 sudo

结论

通过上述步骤,您应该能够在群晖 NAS 上成功运行 ZeroTier 容器。如果您需要进一步的帮助,请随时提问。

0

评论 (0)

取消

您的IP: