虚拟局域网!跨地域访问!在现有的Mesh VPN中,ZeroTier是最用户友好且易于使用的,但它也有一个致命的问题:即使建立了自己的moon,连接不是很稳定。在本篇文章中,我们将自建ZeroTier网络控制器,尝试解决这一问题。

ZeroTier基础根服务器并不能自建,很遗憾。

2022/9/11注:解决不了,别试了。还是去看看Headscale这篇吧!

0x00 参考文档

https://docs.zerotier.com/self-hosting/network-controllers https://github.com/key-networks/ztncui
读者可以先阅读以上文档,以确保使用最新的项目特性。

0x01 准备搭建基础网络控制器

文章假设您已经在目标机器上安装了 zerotier-one 软件包。

根据官方文档,我们可以通过调用API的方式创建自己的网络,不过那样不够low code,这里我们直接来使用 ztncui 网页端帮助我们调用API来创建属于自己的网络。

0x02 一转搭建ztncui

ztncui 需要安装在与网络控制器相同的主机上

ztncui 是一个 node.js 项目,如果你之前没有接触过 node.js ,那么以下是简要的安装说明:
https://nodejs.org/en/download/package-manager/
建议安装LTS版本,以保证依赖正常安装。

注: ztncui 也提供主流发行版的二进制软件包与 docker 镜像,这里我们采用最追新也最方便自定义的方式。

又注:如果你想使用 docker 镜像,还想让服务器上的应用可以直接受益于 虚拟局域网,请额外注意docker network的配置。

之后我们安装 yarn 替代 npm 进行依赖管理,安装同样很简单:

sudo npm install --global yarn

虽然安装 node.js 时会提示使用系统包管理器安装 yarnpkg ,但是不建议。

  1. 安装 g++node-gyp ,因为 ztncui 需要它们进行密码散列。

g++ 可通过包管理器安装,而对于 node-gyp :