XiaoLin's Blog

Xiao Lin

ZeroTier 自建 PLANET 节点实现异地虚拟组网

2024-02-07

ZeroTier 是一个全球性的虚拟专用网络(VPN),允许用户在 Internet 上创建和管理私有网络。它使用加密隧道来确保数据在传输过程中的安全,并提供多种安全功能,例如防火墙和入侵检测系统。ZeroTier 可以用于连接远程办公室、家庭网络和移动设备,并支持多种操作系统,包括 Windows、macOS、Linux、iOS 和 Android。

ZeroTier 的主要优点包括:

  • 全球覆盖: ZeroTier 在全球拥有超过 100 个数据中心,这意味着用户可以从任何地方访问他们的私有网络。
  • 安全: ZeroTier 使用加密隧道来确保数据在传输过程中的安全,并提供多种安全功能,例如防火墙和入侵检测系统。
  • 易于使用: ZeroTier 易于安装和配置,即使对于非技术人员也是如此。
  • 跨平台: ZeroTier 支持多种操作系统,包括 Windows、macOS、Linux、iOS 和 Android。
  • 免费: ZeroTier 提供免费版本,适用于个人和小型企业使用。

ZeroTier 可以用于多种用途,包括:

  • 连接远程办公室: ZeroTier 可以用于连接远程办公室,使员工能够安全地访问公司网络。
  • 连接家庭网络: ZeroTier 可以用于连接家庭网络,使家人和朋友能够安全地共享文件和资源。
  • 连接移动设备: ZeroTier 可以用于连接移动设备,使员工能够安全地访问公司网络和资源,即使他们不在办公室。
  • 创建虚拟专用云(VPC): ZeroTier 可以用于创建虚拟专用云(VPC),使企业能够在云中部署和管理应用程序。

ZeroTier 是一个功能强大且易于使用的虚拟专用网络(VPN),可以用于多种用途。它提供全球覆盖、安全、易于使用、跨平台和免费等优点。

ZeroTier 的 PLANET 和 Moon

PLANET

PLANET 是 ZeroTier 与全球互联网服务提供商 (ISP) 合作提供的基于软件的全球网络。它位于 Internet 之上,但独立于 Internet。 PLANET 的设计目标是提供一个安全、可靠且易于使用的网络,可用于构建各种应用程序和服务。

PLANET 的主要优势包括:

  • 全球覆盖: PLANET 在全球拥有超过 100 个位置,因此您可以从任何地方访问您的网络。
  • 高性能: PLANET 使用最先进的技术来提供高性能和低延迟。
  • 安全性: PLANET 使用强大的加密技术来保护您的数据。
  • 可扩展性: PLANET 可以轻松扩展以满足您的需求。

PLANET 可用于各种应用程序和服务,包括:

  • 虚拟专用网络 (VPN): PLANET 可用于创建安全的 VPN,以便您可以从任何地方安全地访问您的网络。
  • 云计算: PLANET 可用于构建云计算平台,以便您可以轻松地部署和管理您的应用程序。
  • 物联网 (IoT): PLANET 可用于连接物联网设备,以便您可以远程监控和控制它们。

Moon

Moon 是 ZeroTier 提供的基于软件的本地网络。它旨在为您的设备提供一个安全、可靠且易于使用的网络。 Moon 的设计目标是易于使用,即使对于不熟悉网络技术的用户也是如此。

Moon 的主要优势包括:

  • 易于使用: Moon 易于安装和配置,即使对于不熟悉网络技术的用户也是如此。
  • 安全性: Moon 使用强大的加密技术来保护您的数据。
  • 可扩展性: Moon 可以轻松扩展以满足您的需求。

Moon 可用于各种应用程序和服务,包括:

  • 文件共享: Moon 可用于共享文件和文件夹,以便您可以轻松地与其他人协作。
  • 打印: Moon 可用于共享打印机,以便您可以从任何设备打印。
  • 游戏: Moon 可用于创建本地游戏网络,以便您可以与您的朋友一起玩游戏。

PLANET 和 Moon 的比较

PLANET 和 Moon 都提供了基于软件的网络解决方案。然而,它们之间有一些关键区别。

  • 范围: PLANET 是一个全球网络,而 Moon 是一个本地网络。
  • 性能: PLANET 提供比 Moon 更高的性能和更低的延迟。
  • 安全性: PLANET 和 Moon 都使用强大的加密技术来保护您的数据。
  • 可扩展性: PLANET 和 Moon 都可以轻松扩展以满足您的需求。
  • 易用性: Moon 比 PLANET 更易于使用。

选择 PLANET 还是 Moon

在 PLANET 和 Moon 之间进行选择时,您需要考虑您的具体需求。如果您需要一个全球网络并愿意牺牲一些易用性来获得更好的性能和安全性,那么 PLANET 是一个不错的选择。如果您需要一个本地网络并且易用性对您来说很重要,那么 Moon 是一个不错的选择。

自建 PLANET 服务器

ZeroTier 是国外的一款虚拟组网的产品,他的 PLANET 服务器都运行在国外,国内直连的体验并不是太好。
这时候我们可以自己搭建 ZeroTier 的 PLANET 服务器,已达到增强连接速度和稳定性的目的。

前置条件

  • 具有公网 ip 的服务器
  • 安装 docker
  • 安装 docker-compose
  • 需要开放 3443/tcp 端口,9993/tcp 端口,9993/udp 端口 这里的9993需要你根据实际情况替换

开始搭建

这里我们使用 xubiaolin 大佬提供的 docker-zerotier-planet 项目来快速的通过 docker 搭建 ZeroTier 的行星服务器

  1. 先将 docker-zerotier-planet 项目通过 git 命令 clone 到服务器上
git clone https://github.com/xubiaolin/docker-zerotier-planet.git
  • 目录结构为
.
├── asserts
├── build.sh
├── data
├── deploy.sh
├── Dockerfile
├── entrypoint.sh
├── http_server.js
├── mkmoonworld-x86_64
└── README.md
  1. 使用项目内提供的脚本 deploy.sh
root@iZ2ze2e56v1lf3t4c3fj4kZ:~/zero-tier/docker-zerotier-planet# ./deploy.sh 
欢迎使用zerotier-planet脚本,请选择需要执行的操作:
1. 安装
2. 卸载
4. 查看信息
5. 重置密码
0. 退出
请输入数字:

我们输入 1 后,开始进行安装

image.png

出现上述字样后表示安装完成!

开始使用

在搭建章节中,搭建完成后提示了 moons 和 planet 文件的下载地址,这里我们直接使用的 planet,所以先通过链接或者 sftp 将 planet 下载下来

  1. 访问 ztncui(上述开放的 3443 端口)进行新建网络
    image.png

  2. Add Networks 选项卡中,新建虚拟网络
    image.png
    这就是我们刚刚新建的网络,当前还未给网络分配 ip 段

  3. 点击 Easy setup 对该组网进行初始化
    点击 Generate network address 后,自动的生成局域网信息
    image.png

  4. 修改客户端的 PLANET 文件,然后加入我们自建的虚拟网络

我使用的是 macOS 的系统,以下步骤适用于 macOS 的 ZeroTier 客户端

步骤如下:

  1. 进入 /Library/Application\ Support/ZeroTier/One/ 目录,并替换目录下的 planet 文件
  2. 重启 ZeroTier-One:cat /Library/Application\ Support/ZeroTier/One/zerotier-one.pid | sudo xargs kill
  3. 加入网络 zerotier-cli join 网络 id
  4. 管理后台同意加入请求
  5. zerotier-cli peers 可以看到 planet 角色
zerotier-cli join af2d4940affdf246
200 join OK

image.png

这样我们就成功的加入了这个组网之中,通过组网分配的 IP assignment 地址可以访问到相同组网内的任意机器的服务之中