返回顶部
首页 > 资讯 > 服务器 >使用ztncui配置私有化zerotier服务器
  • 933
分享到

使用ztncui配置私有化zerotier服务器

服务器网络运维linuxc++ 2023-08-31 17:08:56 933人浏览 独家记忆
摘要

众所周知,Zerotier-One是一个非常好的组建虚拟局域网的工具,可以以p2p的方式穿透NAT网络进行连接。但是在使用中也仍然存在着一些瑕疵,主要就是以下两点: 因为Zerotier官方提供

众所周知,Zerotier-One是一个非常好的组建虚拟局域网的工具,可以以p2p的方式穿透NAT网络进行连接。但是在使用中也仍然存在着一些瑕疵,主要就是以下两点:

  • 因为Zerotier官方提供的中心节点(planet节点)全部都在国外,所以更新路由表的时候,通常会消耗较长的时间,甚至可能失败;
  • 官方免费版本最多只支持1个管理员和25个节点。

我这篇博客主要就是针对以上两个问题的解决做了一些记录。

一、加速节点(moon节点)

在原本的使用中,我们每次更新路由表,都是需要连接官方的planet节点,因此我们希望使用一种类似镜像的方式,将路由表缓存到一个能够快速查询的地方,也就是下面所说的moon节点。

moon节点可以理解为多级缓存,当需要更新路由表时,leaf节点会首先请求moon节点查询,如果失败再去planet节点查询;而moon节点会将最新的路由表信息返回,如果没有最新缓存则会再去请求上级节点(moon或者planet)并返回。

创建moon节点的方式很简单,只需要在一台拥有公网ip的服务器上使用命令生成即可,步骤如下:

1、安装zerotier

# 使用官方提供的脚本一键安装curl -s https://install.zerotier.com | sudo bash

2、生成moon配置文件

cd /var/lib/zerotier-onezerotier-idtool initmoon identity.public > moon.JSON

3、在配置文件中添加公网IP地址

moon.json文件中,roots下有一项stableEndpoints,在里面加入自己的公网ip和zerotier端口(9993),例如:

{  "stableEndpoints": ["47.102.205.100/9993"]}

注意点1:填的一定是公网IP,IPv4和IPv6均可,端口默认为9993不需要更换。

注意点2:服务器防火墙需要开放9993端口(注意是UDP)。

4、使用moon配置文件生成moon签名文件

cd /var/lib/zerotier-onezerotier-idtool genmoon moon.json

这一步会生成一个*.moon格式的文件,例如0000000ac535316c.moon

5、将moon文件移动到moons目录下,并重启zerotier-one服务

mkdir /var/lib/zerotier-one/moons.dmv /var/lib/zerotier-one/*.moon /var/lib/zerotier-one/moons.d/systemctl restart zerotier-one.service

至此,moon节点就算搭建好了

6、在leaf节点中导入moon

将上述生成的*.moon文件下载至本地,放到对应目录下,并重启zerotier-one服务。

windows 系统 放在 C:\ProgramData\ZeroTier\One\moons.d\
linux 系统 放在 /var/lib/zerotier-one/moons.d/

在管理员模式下使用命令行查看

sudo zerotier-cli peers # 此命令 Windows 和 Linux 相同

就可以看到自己新创建的moon节点了(role为MOON, path为自己的公网IP)

二、搭建私有服务器

官方免费版本最多只支持1个管理员和25个节点,前者倒不是很重要,但后者对于我们这些经常自己搭私服玩游戏的人来说就有点不太够用了,因此只能自建私有服务器来解决。

1、Restful api / Sockets API

Zerotier本身提供了Restful API 和主流程序语言的sdk,有兴趣的可以自行查阅文档https://docs.zerotier.com/

2、使用ztncui图形化用户界面控制

ztncui(ZeroTier Network Controller User Interface)是由key-networks开源的zerotier图形化用户界面。仓库地址:https://github.com/key-networks/ztncui,有兴趣的可以自行编译部署。

3、使用容器部署ztncui

与大多数编译安装的应用类似,编译部署ztncui也需要先安装其必备的环境、配置各项参数,并不方便。因此,我选择了云原生方式,使用Docker容器部署ztncui。仓库地址:https://github.com/key-networks/ztncui-containerized

3.1、拉取镜像

docker pull keynetworks/ztncui:latest

这里我们使用latest版本号,因为与zerotier-one一样,zerotier也仍在不断迭代新版本。

3.2、启动容器

因为我们只需要使用ztncui这一个进程,所以我们将entrypoint修改为/start_ztncui.sh

docker run -itd \  --restart=always \  --network=host \  -e 'Http_ALL_INTERFACES=yes' \  --entrypoint "/start_ztncui.sh" \  keynetworks/ztncui

这样我们就可以通过容器启动一个ztncui服务了,访问http://127.0.0.1:3000/,初始用户名密码为 admin/passWord

HTTP_ALL_INTERFACES=yes 为允许从任意的ip访问ztncui服务,若仅需要127.0.0.1,则可以略去这一环境变量。

3.3、连接本机zerotier-one服务

虽然ztncui服务启动成功了,但是他连接在一个独立的zerotier-one服务上,现在我们就需要将其连接到我们本机的zerotier-one上来。
其中有两个关键点,一是zerotier-onetcp端口,二是zerotier-oneauthtoken
添加环境变量ZT_ADDR并挂载/var/lib/zerotier-one/authtoken.secret文件,同时我们将ztncui的配置文件挂载出来:

docker run -itd \  --restart=always \  --network=host \  -v '/var/lib/zerotier-one/authtoken.secret:/var/lib/zerotier-one/authtoken.secret' \  -v '/var/lib/zerotier-one/ztncui:/opt/key-networks/ztncui/etc' \  -e 'HTTP_ALL_INTERFACES=yes' \  -e 'ZT_ADDR=127.0.0.1:9993' \  --entrypoint "/start_ztncui.sh" \  keynetworks/ztncui

也可以通过docker-compose启动:

version: '3'services:  ztncui:    restart: always    image: keynetworks/ztncui    entrypoint: ["/start_ztncui.sh"]    volumes:    - /var/lib/zerotier-one/authtoken.secret:/var/lib/zerotier-one/authtoken.secret    - /var/lib/zerotier-one/ztncui:/opt/key-networks/ztncui/etc    network_mode: host    environment:      HTTP_ALL_INTERFACES: 'yes'      ZT_ADDR: '127.0.0.1:9993'

因为我们需要通过127.0.0.1:9993来请求zerotier-one服务,因此必须将网络设置为host模式。

3.4、建立一个网络并加入

(1) 登录后点击 “Add network” 添加一个网络,点击 “Easy setup”,配置网段和子网掩码,例如192.168.1.0/24,会自动生成可用的IP地址范围,点击提交即可,如图:
建立一个网络

(2) 获取网络ID,并在客户端加入网络:
获取网络ID

sudo zerotier-cli join 0ac535316c3613f6

(3) 勾选Authorized授权加入网络,可以自动或手动分配IP地址:
加入一个网络
(4) 此时,该网络下的两台机器就可以使用分配的虚拟IP地址进行通信了。

三、Self-Hosting 根节点

该部分非必要,且操作较为复杂,如果没有相关需求就可以结束阅读了。

基于前两步,我们搭建了一个私有zerotier服务器,但其实它依然从属于官方的根节点。
这里需要讲到zerotier中的几种节点类型:
(1) leaf,叶子节点,这就是我们加入网络的各个机器;
(2) moon,月亮节点,也就是我们自建的缓存镜像的服务器;
(3) planet,行星节点,这就可以理解成是整个网络的根节点了。

当一个leaf节点连接另一个leaf节点时,实际上它需要去获取对方真实的ip地址,并将虚拟ip与之对应,这就存在一个路由表,如同arp表将ip地址与Mac地址对应一般。
当zerotier路由表需要更新时,leaf节点首先请求moon节点,如果失败则直接请求planet节点,而moon节点也是需要请求planet节点去更新路由表的。
因此,我们前面建立的服务器仍然会去请求官方的planet节点了。如果我们希望建立一个完全独立于官方的私有服务器,就需要建立自己的根节点(planet节点)。
完整文档:https://docs.zerotier.com//self-hosting/introduction/

1、如何建立根节点

建立根节点分为两步:(1)服务器脱离官方网络;(2)叶子节点加入私有根节点。

首先,就需要创建自己的planet文件。这里我们不需要使用任何的第三方脚本,直接使用官方仓库自己编译就行。仓库地址:https://github.com/zerotier/ZeroTierOne

2、下载仓库并修改相关源码

git clone https://GitHub.com/zerotier/ZeroTierOnecd ZeroTierOne/attic/worldcat mkworld.cpp

可以看到在mkworld.cpp文件中配置有4个官方的根节点,分别位于洛杉矶、迈阿密、阿姆斯特丹和东京:

std::vector<World::Root> roots;// Los Angelesroots.push_back(World::Root());roots.back().identity = Identity("3a46f1bf30:0:76e66fab33e28549a62ee2064d1843273c2c300ba45c3f20bef02dbad225723bb59a9bb4b13535730961aeecf5a163ace477cceb0727025b99ac14a5166a09a3");roots.back().stableEndpoints.push_back(InetAddress("185.180.13.82/9993"));roots.back().stableEndpoints.push_back(InetAddress("2a02:6ea0:c815::/9993"));// Miamiroots.push_back(World::Root());roots.back().identity = Identity("de8950a8b2:0:1b3ada8251b91b6b6fa6535b8c7e2460918f4f729abdec97d3c7f3796868fb02f0de0b0ee554b2d59fc3524743eebfcf5315e790ed6d92db5bd10c28c09b40ef");roots.back().stableEndpoints.push_back(InetAddress("207.246.73.245/443"));roots.back().stableEndpoints.push_back(InetAddress("2001:19f0:9002:5cb:ec4:7aff:fe8f:69d9/443"));// Tokyoroots.push_back(World::Root());roots.back().identity = Identity("34e0a5e174:0:93efb50934788f856d5cfb9ca5be88e85b40965586b75befac900df77352c145a1ba7007569d37c77bfe52c0999f3bdc67a47a4a6000b720a883ce47aa2fb7f8");roots.back().stableEndpoints.push_back(InetAddress("147.75.92.2/443"));roots.back().stableEndpoints.push_back(InetAddress("2604:1380:3000:7100::1/443"));// Amsterdamroots.push_back(World::Root());roots.back().identity = Identity("992fcf1db7:0:206ed59350b31916f749a1f85dffb3a8787dcbf83b8c6e9448d4e3ea0e3369301be716c3609344a9d1533850fb4460c50af43322bcfc8e13D3301a1f1003ceb6");roots.back().stableEndpoints.push_back(InetAddress("195.181.173.159/443"));roots.back().stableEndpoints.push_back(InetAddress("2a02:6ea0:c024::/443"));

我们需要做的就是将这4个节点注释掉,添加我们自己的planet节点,例如:

// 上海服务器roots.push_back(World::Root());roots.back().identity = Identity(""); //这里填identity.public文件的内容roots.back().stableEndpoints.push_back(InetAddress("47.102.205.100/9993")); // 这里填公网ip和端口

其中,identity的值可以通过cat /var/lib/zerotier-one/identity.public命令查看
stableEndpoints与前面配置moon节点时所填相同,IPv4和IPv6均可,可以push多个

3、编译并生成planet文件

cd ZeroTierOne/attic/world./build.sh && ./mkworld# 此时会生成一个名为"world.bin"的文件,就是我们要的planet,将其重命名mv world.bin planet

如果使用build.sh编译时报错:

In file included from ../../osdep/OSUtils.cpp:45:../../osdep/OSUtils.hpp:46:10: fatal error: nlohmann/json.hpp: No such file or directory

则需要先将ZeroTierOne/ext/nlohmann复制到/usr/local/include/目录下再重新编译。

现在,我们只需要将planet文件发放到各个节点(包括planet节点、moon节点和leaf节点),替换原有的planet文件,并重启Zerotier-One服务即可。

sudo systemctl restart zerotier-one.service

再次查看节点情况:

sudo zerotier-cli peers

可以看到仅剩一个planet节点,且ip和端口都是我们刚刚自己配置的,说明操作成功了。

来源地址:https://blog.csdn.net/weixin_43321041/article/details/131114019

--结束END--

本文标题: 使用ztncui配置私有化zerotier服务器

本文链接: https://lsjlt.com/news/386264.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用ztncui配置私有化zerotier服务器
    众所周知,Zerotier-One是一个非常好的组建虚拟局域网的工具,可以以p2p的方式穿透NAT网络进行连接。但是在使用中也仍然存在着一些瑕疵,主要就是以下两点: 因为Zerotier官方提供...
    99+
    2023-08-31
    服务器 网络 运维 linux c++
  • 搭建Zerotier私有根服务器(Planet)
    简介 ZeroTier 是一个加密的虚拟骨干网。它的客户端和服务端都是开源且免费的,对于一般的用户,可以用它做内网穿透,将处于不同内网中的主机组成虚拟局域网。可以解决很多P2P联网游戏/应用的需求。但目前的官方搭建的服务端Planet有2...
    99+
    2023-09-03
    网络 Powered by 金山文档
  • 使用zerotier planet自建服务器客户端配置方法
    客户端配置 客户端主要为Windows, Mac, Linux, Android 1 Windows 配置 1、在本页下载zerotier客户端 2、将 planet 文件覆盖粘贴到C:\ProgramData\ZeroTier\One中(...
    99+
    2023-08-19
    服务器 运维
  • 私有服务器端口怎么配置
    私有服务器端口配置的具体步骤可能因为不同的操作系统和服务器软件而有所不同,以下是一般的配置步骤:1. 登录服务器后台管理界面,进入端...
    99+
    2023-06-11
    私有服务器 服务器
  • 私有网络Linux云服务器配置IPv6
    要配置IPv6,您需要按照以下步骤进行操作:1. 检查内核版本:确保您的Linux服务器上运行的是支持IPv6的内核版本。您可以通过...
    99+
    2023-09-21
    linux
  • zerotier moon服务器使用流程和感受
    使用zerotier的目的: 游戏串流 todesk可以使用,并且及其稳定, 缺点是免费的部分延迟比较明显, 不适合打游戏 使用zerotier之后可以使用微软官方的 RD client 以及 如果有N卡使用 moonlight(要达到打游...
    99+
    2023-09-01
    网络
  • 云服务器私有化部署
    云服务器私有化部署通常需要采取私有云或者公有云的方式进行部署。私有云是指在云服务器的基础架构中不包括存储和数据服务器,只提供基础资源,客户可以通过租用或购买的方式将其部署到云服务器中。 私有云可以通过使用公有云服务提供商提供的私有云管理平...
    99+
    2023-10-27
    服务器
  • 私服服务器租用怎么选择配置
    租用私服服务器时,需要根据自己的需求选择适合的配置。以下是一些建议:1. 确定服务器的用途:如果是用于游戏服务器,则需要更高的CPU...
    99+
    2023-06-13
    私服服务器租用 服务器
  • 钉钉私有化部署服务器
    1. 什么是钉钉私有化部署服务器? 钉钉私有化部署服务器是一种企业级通讯工具,它可以帮助企业建立一个安全、高效、可靠的内部通讯平台。与公共云服务不同,钉钉私有化部署服务器是一种自主部署的解决方案,可以在企业内部的服务器上进行部署,从而实现...
    99+
    2023-10-27
    服务器
  • 云服务器私有化部署方案
    一、云服务器私有化部署的优势 资源共享 私有化部署可以将一台云服务器私有化,从而使得其他用户可以使用这台服务器的全部资源,包括计算、存储、网络等,从而实现资源的共享。此外,云服务器还可以根据用户需求进行弹性扩展,从而满足不同用户的需求...
    99+
    2023-10-27
    服务器 方案
  • 私服服务器架设需要哪些配置
    架设私服服务器需要以下配置:1. 服务器硬件:选择一台性能较好的服务器,包括CPU、内存、硬盘等。通常情况下,至少需要4核CPU、1...
    99+
    2023-09-21
    服务器
  • 使用docker 搭建 zerotier服务器 实现异地组网
    视频教程 B 站配套视频教程《11.zerotier实现异地组网(docker)》 博客教程 软件官网地址 https://www.zerotier.com/download/ 之前尝试过 n2n ...
    99+
    2023-09-01
    docker linux 容器
  • 云服务器私有化部署怎么弄
    选择云服务器提供商,确定需要部署的云服务器版本和规格。 在云服务器提供商的官方网站上下载相应的虚拟化软件,并将其安装到云服务器上。 配置云服务器提供商的管理控制台,使其可以访问和管理云服务器上的虚拟机。 将云服务器提供商提供的虚拟机镜像文...
    99+
    2023-10-27
    怎么弄 服务器
  • 私有服务器地址怎么设置
    要设置私有服务器地址,需要遵循以下步骤:1. 获得一个可用的 IP 地址:可以通过购买一个 IP 地址或者向网络服务提供商申请一个。...
    99+
    2023-06-11
    私有服务器 服务器
  • 个人私有云服务器怎么使用的
    私有云服务器是一种虚拟服务器,它是专门为企业和组织提供的云计算平台。在私有云服务器中,客户可以通过互联网连接到服务器并通过该服务器管理资源。在使用私有云服务器时,您需要遵循以下步骤: 安装和配置虚拟机 在本地计算机上安装私有云服务器时...
    99+
    2023-10-26
    服务器
  • 使用FileZilla配置FTP服务器
    在拷贝大文件的时候,由于Windows系统限制有时会拷贝失败,FTP Server可以解决文件的传输问题。FileZilla是一个很好的免费工具,且版本没有强制要求。FileZilla支持FTP、FTPS、SFTP等文件传输协议。官网下载地...
    99+
    2023-09-06
    服务器 运维
  • 云服务器私有网络怎么设置
    在选择私有网络时,用户需要考虑以下几个方面: 安全性:私有网络中的数据安全性需要得到保障,包括数据加密、身份认证、访问控制等。在选择私有网络时,用户需要选择符合相关安全标准的网络,例如,VPC需要采用独立的物理网络,并且需要设置防火墙等...
    99+
    2023-10-28
    服务器 网络
  • 云服务器私有ip有什么用
    云服务器私有ip是指在公有云服务器上的ip地址。在公有云服务器上,用户可以使用自己拥有的ip地址访问服务器,无需受到限制。使用私有ip可以有效地保护个人隐私和数据安全。 使用私有ip可以使得公有云服务器更加可靠,因为公有云服务器的安全性是...
    99+
    2023-10-27
    什么用 服务器 ip
  • 云服务器有哪些配置可调整使用
    云服务器有很多配置可供调整,以下是一些常见的可调整选项: 配置虚拟化:将数据中心中的多台云服务器虚拟化,以创建专属的虚拟化服务器集群,以便更高效地利用虚拟机资源。 服务器扩展:添加或移除云服务器以扩展其可用存储容量,从而提高性能和可伸缩...
    99+
    2023-10-27
    可调整 服务器 有哪些
  • 私有云盘搭建之OwnCloud的安装与服务配置
    OwnCloud的安装与服务配置 安装OwnCloud安装Apache服务安装并配置PHP配置OwnCloud 安装OwnCloud OwnCloud是一款开源的云存储软件,基于PHP的自...
    99+
    2023-09-05
    服务器 php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作