一、EVE-NG镜像介绍

当在EVE-NG中做实验时,缺少了某个镜像,但是该实验需要用到时,就是到了该上传镜像的时候了。主要上传的是之前文章提到了三种镜像:IOL、QEMU、Dynamips。

所需要用到的其他技术:

  • 其中用到的上传至服务器的技术,采用前文使用的SCP技术
  • 连接到服务器,可以使用xshell、secure-CRT、putty、WSL等可用SSH集成SSH工具的都行

dynamips镜像介绍

Dynamips用于模拟cisco设备的模拟器,能够模拟1700、2600、3600、3700、7200平台。因为它能运行标准的IOS镜像,尽管模拟器陈旧,但是很多人还是喜欢用。EVE支持cisco IOS 1710、cisco IOS 3725、cisco IOS7206VXR的镜像。

IOL镜像介绍

IOL(IOS on linux)是cisco路由器和交换机的操作系统,可以运行在x86平台的任意linux发行版系统之上。有众多优点,比如支持交换机的高级特性、占用系统资源更少、启动更快等特点。是模拟cisco设备的最佳选择之一,同时它也是EVE-NG非常重要的核心组件之一。但是bug也较多,某些高级特性只有特定的版本支持,比如PVLAN、port channel等技术。所以需要不停的更换系统版本,才能找到适合自己的版本。一般用IOL运行二层和三层设备。

QEMU镜像介绍

QEMU使得EVE-NG拥有更加强大的虚拟能力。随着KVM与QEMU越来越容易使用,很多设备厂商开始开发并释放出适配在KVM环境的系统,甚至能适配openstack环境。以此丰富了EVE-NG的功能。QEMU类型的镜像种类众多,不仅仅支持网络设备,连操作系统都支持。所以QEMU类型的镜像相比dynamips和IOL更为复杂,涉及目录和镜像文件的名字也必须和官方给定的名字。

二、上传Dynamips镜像

Dynamips镜像下载地址

Dynamips镜像文件格式:

#dynamips镜像以.image为后缀名的文件
xxxx.image 

上传dynamips镜像步骤

  1. 上传至EVE-NG/opt/unetlab/addons/dynamips/目录下
  2. 修正权限

修正权限的作用主要是保证dynamips对于这个IOS镜像有读取的权限,虽然以root上传的IOS镜像在一般情况下符合要求的,但是进行权限修正是为了万无一失

/opt/unetlab/wrappers/unl_wrapper -a fixpermissions
  1. 计算idle值

Dynamips是个模拟器,它会在x86的平台下模拟cisco的CPU,所以dynamips需要实时地将虚拟地CPU的指令翻译成在x86下可执行的指令。Idle-pc(idle pointer counter)就是空闲计数器,这里简称idle值,用来记录虚拟CPU何时不工作,从而可以在它不工作时停止翻译工作,这样就能降低dynamips的CPU占用率。如果使用了错误的idle值将会导致dynamips的CPU占用率过高,所以需要计算出合适的idle值以降低CPU占用率。计算idle值需要用到dynamips命令,那么先来看一下dynamips的命令。格式:dynamips -P <ios_image>

本例以3725平台为例,镜像名为c3725-adventerprisek9-mz.124-15.T14.image
#加载镜像
dynamips -P 3725 /opt/unetlab/addons/dynamips/c3725-adventerprisek9-mz.124-15.T14.image

#计算idle值
同时按住ctrl + ] ,大约15s左右,快速放开按i,即可开始计算idle值。记住idle值

E3.png

#退出,同时按住ctrl + ],也是相同时间,快速放开按q,即可退出
#使用计算的idle值来启动dynamips镜像
dynamips -P 3725 /opt/unetlab/addons/dynamips/c3725-adventerprisek9-mz.124-15.T14.image --idle-pc=0x60c086a8

tips:不管是计算idle还是退出,都有点反人类设计,很容易就不能成功,所以多试几次,把握时间精度,嘿嘿,这就是一个巨坑!

使用计算的idle值前后比较

未使用计算的idle值CPU占用量
E4.png
可以看到dynamips进程占用了CPU资源的100%

使用了计算的idle值CPU占用量
E5.png
可以看到dynamips进程占用CPU资源的2%

但是你会发现,每次运行都要使用idle值很麻烦,进入/opt/unetlab/html/templates/目录,查看到所有的yml文件,其中部分文件就是修改idle值的关键。

idle2.png

我们通过修改/opt/unetlab/html/templates/下的dynamips设备文件,比如c7200.yml,将计算的idle值填入到idlepc字段,这样下次启动c7200时,就会以该idle值运行,占用CPU资源将非常的少。同理其他dynamips计算出的idle也可以对相应的yml文件进行修改!

idle1.png

三、上传IOL镜像

IOL镜像下载地址

IOL镜像文件格式:

IOL镜像以.bin为后缀名的文件
xxx.bin

IOL镜像命名规则:

示例:i86bin-linux-l3-adventerprisek9-15.4.1T.bin
i86bin:x86平台
linux:运行在linux系统上
l3:支持3层功能,如果是l2,则支持二层功能
adventerprisek9:IOS特性
15.4.1T:IOS版本
bin:文件名后缀

运行IOL所需要的文件:

以.bin为后缀的IOL镜像文件

iourc为名的license文件

CiscoIOUKeygen.py的工具来生成iourc文件的license

上传IOL镜像步骤

  1. 上传至EVE-NG的/opt/unetlab/addons/iol/bin/目录下
  2. 上传CiscoIOUKeygen.py至同目录下
  3. 执行CiscoIOUKeygen.py
#赋予可执行权限
chmod a+x CiscoIOUkeygen.py
#执行
./CiscoIOUkeygen.py
#执行的结果

E6.png

  1. 将执行的结果复制到新建文件iourc中
[license]
SPOTO-EVE = 052f17298eeaf691;

不放心的话,查看下iourc文件即可:
E7.png
5. 修正权限

/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

tips:CiscoIOUkeygen.py文件在生成iourc中的值后,就可以删除了
tips:L2开头的文件为交换镜像、L3开头的文件为路由镜像

四、上传QEMU镜像

QEMU镜像下载地址

QEMU镜像文件格式:

#QEMU以.qcow2为后缀名的文件,不同的是QEMU的镜像名必须和存放镜像的目录名有关联
hda.qcow2

QEMU镜像目录名与镜像名:

只有在虚拟机设置中启用intel VT-X/EPT才能在EVE-NG中运行QEMU节点。用于存放QEMU镜像的目录对名称需要严格按照QEMU镜像目录名和镜像名对照表完全匹配才能使用,否则是会出错的。
#例如kali的镜像
/opt/unetlab/addons/qemu/linux-kali-2019.4-amd64/virtioa.qcow2
kali镜像名:virtioa.qcow2
存放镜像的镜像目录名:linux-kali-2019.4-amd64
根据《QEMU镜像目录名和镜像名对照表》查阅到如下图的内容:镜像目录名必须是linux开头,内部镜像名必须和镜像目录名所对应的virtioa所固定。

E8.png

也就是说,镜像目录名linux-不能修改,"-"后面可以自定义,但是一般都是发行版本号。而镜像目录中的镜像名不得自定义,必须遵循《QEMU镜像目录名和镜像名对照表》。

上传QEMU镜像步骤

  1. 上传至EVE-NG的/opt/unetlab/addons/qemu/
  2. 修正权限
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

未进行权限修正
eve2.png

进行权限修正后
eve3.png

文章若有错误之处,请评论指出,谢谢!
文章更新日期:2020/3/27


保持一个积极向上的良好心态,分享网络技术!