跳转至

通过ZeroTier+JumpServer+EXSI管理自己的实验环境

任务需求:

在个人计算机上实现多虚拟机的并行的实验环境,往往需要在本地具备比较强的计算能力主要体现在需要具备多核心的cpu资源和充足的内存资源。这些在移动便携设备(笔记本上显然是不够方便的)本地一般不具备如此高规格的计算能力。那么是否把实验场景安置在个人服务器或者家用的高性能PC上就能满足需求呢?显然也是不行的,家用高性能PC显然具备实现同时开放多虚拟机的实验环境。但是家用高性能PC并不便携,只能放置在固定环境中 不方便移动。从价格上来说也相对比较昂贵。为了实现两方面的需求,第一是足够稳定的实验环境,虚拟机不需要频繁的在不同的节点之间实现变更,又要具备足够的便携性还得能够调度足够多的计算资源用于实现虚拟机业务的发放和部署。基于此以上这些不太能够调和的矛盾和因为穷从而不得不采用非常规的解决方案我使用ZeroTier+JumpServer+EXSI来满足我以上的种种需求。

环境准备

1.ZeroTier账号(免费版)

image-20240908080733942

2.JumpServer(社区版)

image-20240908080822919

3.EXSI部署服务器(DELL R730)

image-20240908082923561

4.带有浏览器的设备

一台老旧的Thinkpad T420;

OS:ubuntu 22.04 LTS

BTW:带有舒适的7行键盘

任务说明

本文旨在对个人的内网穿透实验环境做一个简单的介绍和归纳,并不会尝试从无到有从零到一的 步骤清晰的搭建与实现,请见谅。

环境实现说明

image-20240908085303488

1.首先在DELL R70上部署了虚拟化平台EXSI;通过虚拟化平台能够快速的创建、部署和管理虚拟机。所有的虚拟机都连接到同一个EXSI上的虚拟交换机

2.通过虚拟交换机的上行链路将网络引出到DELL R730服务器的物理网口;在通过物理网口接入到家用无线路由器的LAN口

3.家用无线路由器作为所有VM的网关和VM与外网通信的数据出口以及实现为VM发放动态IP的DHCP服务器。

4.基于EXSI创建一台虚拟机安装ubuntu 22.04,并在其上部署JumperServer。通过JumpSserver纳管所有虚拟机(所有VM接入到同一个VirtualSwitch)这样JumpServer所纳管的虚拟机都在同一个VLAN中,并且Jumpserver再去访问和管理虚拟机时所走的流量都只需要在VirtualSwitch内部进行二层转发。

部署流程

1.在VM上部署Jumpserver

我选择Jumpserver部署平台是ubuntu22.04 LTS的虚拟机

规格如下:

image-20240908114727018

在部署Jumpserver可以移步Jumpserver的部署文档

在部署文档里有详细的规格要求和部署方式;我选择是离线安装的方式。

image-20240908115215938

离线安装

cd /opt
tar -xf jumpserver-ce-v4.1.0-x86_64.tar.gz
cd jumpserver-ce-v4.1.0-x86_64

安装

# 安装
./jmsctl.sh install

# 启动
./jmsctl.sh start

管理Jumpserver服务

cd jumpserver-ce-v4.1.0-x86_64

# 启动
./jmsctl.sh start

# 停止
./jmsctl.sh down

# 卸载
./jmsctl.sh uninstall

# 帮助
./jmsctl.sh -h

浏览器访问

地址: http://<JumpServer服务器IP地址>:<服务运行端口>
用户名: admin
密码: ChangeMe

image-20240908115709912

2.ZeroTier服务

0.简单说一下各个网元之间的关系

首先在ZeroTier网站上创建一个网络,然后再任意地方不同的终端安装ZeroTier客户端,然后将不同地域的客户端加入到ZeroTier创建的网络当中。这样就使得所有的处在不同网络环境当中的设备加入到ZeroTier所提供的虚拟网络当中。就好像这些终端都在一个局域网内一样。使得彼此之间相互访问成为可能。

image-20240908121507085

1.登录ZeroTier的网址

image-20240908115850202

2.注册账号或者用第三方账号进行登录

image-20240908115939648

3.创建网络:

点击Create A Network就能够马上创建一个虚拟的网络了。

每一个免费账户都能创建3个虚拟网络至多添加10台设备;当你创建好网络后会自动生成一个该网络的唯一标识符用来识别哪个网络。

image-20240908122330210

image-20240908122830159

4.将设备加入创建好的ZeroTier网络

在Zero的下载界面提供了多平台的客户端可供下载

image-20240908123140559

首先在部署Jumpserver的ubuntu 24.04LST虚拟机上部署ZeroTier。

curl -s https://install.zerotier.com | sudo bash

执行完上面的命令后ZeroTier客户端就安装成功了

image-20240908124843382

通过zerotier-cli info命令查看

image-20240908125018296

在客户端上使用zerotier-cli jion把安装好zerotier客户端的设备添加到在ZeroTier创建的网络中。

每个创建的网络都会有一个16位的唯一标识符,通过这个唯一的16位的标识符指示这台设备要添加到哪个网络当中。

这个16位的标识符可以在创建网络界面直接进行查看和复制。

image-20240908125700161

[h@localhost ~]$ sudo zerotier-cli join **********89
200 join OK
[h@localhost ~]$ sudo zerotier-cli info
200 info 6070c11ea4 1.14.0 ONLINE

接下来使用zerotier-cli listnetworks命令查看;此时客户端应该会显示禁止访问。

[h@localhost ~]$ sudo zerotier-cli listnetworks
200 listnetworks <nwid> <name> <mac> <status> <type> <dev> <ZT assigned ips>
200 listnetworks fada62b0159b6889  8a:08:eb:d4:ae:c6 ACCESS_DENIED PRIVATE ztjlh7twe4 -

接下来需要再Zerotier创建的网络上授权这个新加入的客户端。

进入在zerotier创建的网络视图发现客户端此时属于未授权状态。

image-20240908130535025

给客户端授权

image-20240908130829024

此时再查看客户端的授权状态;变为已授权。

image-20240908130904993

在该网络中按照相同的步骤再添加一台设备使得两台设备之间能够互访。

image-20240908141149112

image-20240908143418008

搞定