В этой статье я кратко покажу как выполняется добавление образов Cisco IOL в EVE-NG. В прошлой публикации я показал, как выполнить установку и первоначальную настройку EVE-NG.
Хотя EVE-NG поддерживаем внушительное количество образов, но сразу после установки все они недоступны. Их нужно добавлять вручную. Рассмотрим пример добавления образов Cisco IOL.
За основу будет взята статья из официального руководства, но дополненная ссылками на образы и дополнительные примерами с пояснениями.
Загрузка образов на виртуальную машину EVE-NG
IOL расшифровывается как IOS on Linux. Это эмулятор работы Cisco IOS для внутреннего использования сотрудниками компании Cisco или авторизованными партнерами.
Я буду использовать следующие образы:
Тип устройства | Имя образа | Версия |
L2/L3 Switch | L2-ADVENTERPRISEK9-M-15.2-20150703 | Cisco IOS Software, Linux Software (I86BI_LINUXL2-ADVENTERPRISEK9-M), Version 15.2(CML_NIGHTLY_20150703)FLO_DSGS7 |
L3 Router | L3-ADVENTERPRISEK9-M-15.4-2T | Cisco IOS Software, Linux Software (I86BI_LINUX-ADVENTERPRISEK9-M), Version 15.4(2)T4 |
На просторах интернета вы можете найти очень много образов IOL. Для удобства навигации я прикрепил два наиболее распространенных образа.
Если вы загружали образы по ссылке выше, то предварительно распакуйте их.
Теперь образы необходимо загрузить в следующий каталог:
/opt/unetlab/addons/iol/bin/
Обычно я использую для этих целей WinSCP.
Создаю новое подключение через WinSCP. Если вы не меняли пароль пользователя root, то для подключения используйте следующие учетные данные:
Логин: root
Пароль: eve
Загружаю образы в каталог /opt/unetlab/addons/iol/bin/:
Запускаем команду:
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions
Эта команда устанавливает разрешение на выполнение bin файлов с образами, а также корректирует остальные сопутствующие разрешения.
Генерация ключей для IOL
Теперь необходимо сгенерировать лицензии. Скрипт не мой – нашел на просторах интернета.
Создаем файл Python скрипта:
nano /opt/unetlab/addons/iol/bin/CiscoIOUKeygen3f.py
Содержимое скрипта:
#!/usr/bin/python3
print("*")
print("Cisco IOU License Generator - Kal 2011, python port of 2006 C version")
import os
import socket
import hashlib
import struct
#get the host id and host name to calculate the hostkey
hostid=os.popen("hostid").read().strip()
hostname = socket.gethostname()
ioukey=int(hostid,16)
for x in hostname:
ioukey = ioukey + ord(x)
print("hostid=" + hostid +", hostname="+ hostname + ", ioukey=" + hex(ioukey)[2:])
#create the license using md5sum
iouPad1 = b'\x4B\x58\x21\x81\x56\x7B\x0D\xF3\x21\x43\x9B\x7E\xAC\x1D\xE6\x8A'
iouPad2 = b'\x80' + 39*b'\0'
md5input=iouPad1 + iouPad2 + struct.pack('!i', ioukey) + iouPad1
iouLicense=hashlib.md5(md5input).hexdigest()[:16]
print("\nAdd the following text to ~/.iourc:")
print("[license]\n" + hostname + " = " + iouLicense + ";\n")
with open("/opt/unetlab/addons/iol/bin/iourc", "wt") as out_file:
out_file.write("[license]\n" + hostname + " = " + iouLicense + ";\n")
print("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nAlready copy to the file iourc\n ")
print("You can disable the phone home feature with something like:")
print(" echo '127.0.0.127 xml.cisco.com' >> /etc/hosts\n")
Особое внимание в скрипте обратите на проблемы вот в этих строках – Python очень чувствителен к пробелам.:
ioukey = ioukey + ord(x)
out_file.write("[license]\n" + hostname + " = " + iouLicense + ";\n")
Должно быть либо 4-ре пробела, либо табуляция.
Сохраняем изменения в файле /opt/unetlab/addons/iol/bin/CiscoIOUKeygen3f.py.
Добавляем разрешение на выполнение:
chmod u+x /opt/unetlab/addons/iol/bin/CiscoIOUKeygen3f.py
Запускаем скрипт:
/opt/unetlab/addons/iol/bin/CiscoIOUKeygen3f.py
root@netlab:/opt/unetlab/addons/iol/bin# /opt/unetlab/addons/iol/bin/CiscoIOUKeygen3f.py *
Cisco IOU License Generator - Kal 2011, python port of 2006 C version
hostid=007f0101, hostname=netlab, ioukey=7f0377
Add the following text to ~/.iourc:
[license]
netlab = 8743e08425a6691e;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Already copy to the file iourc
You can disable the phone home feature with something like:
echo '127.0.0.127 xml.cisco.com' >> /etc/hosts
root@netlab:/opt/unetlab/addons/iol/bin#
По результатам работы скрипта должен сгенерироваться файл iourc.txt. Посмотрим содержимое файла:
cat /opt/unetlab/addons/iol/bin/iourc
root@netlab:/opt/unetlab/addons/iol/bin# cat /opt/unetlab/addons/iol/bin/iourc
[license]
netlab = 8743e08425a6691e;
root@netlab:/opt/unetlab/addons/iol/bin#
В вашем случае содержимое файла скорее всего будет немного отличаться.
Последний конфигурационный момент – немного скорректируем файл hosts, чтобы отключить попытки достучаться до адресов Cisco:
echo '127.0.0.127 xml.cisco.com' >> /etc/hosts
Пример добавления устройства
Теперь мы можем открыть браузер и перейти в веб интерфейс по следующему адресу:
http://10.10.10.26
Логин: admin
Пароль: eve
Добавим новую лабораторную схему:
Укажем имя лабораторной схему и нажимаем “Save”:
В контекстном меню схемы выбираем пункт для добавления нового узла:
Для удобства навигации можем немного пофильтровать вывод:
Сначала попробуем добавить L3 коммутатор. Выбираем образ и нажимаем “Save”:
Запускаем образ:
В случае успешного запуска мы сможем подключиться к виртуальному коммутатору через HTML5 или нативную консоль:
Выполним аналогичную проверку для образа маршрутизатора:
Попробуем запустить образ и подключиться через консоль:
Как видно из скриншота выше запуск образа маршрутизатора выполнен успешно.
Добавление образов Cisco IOL завершено.
EVE-NG добавление образов Cisco IOL: 4 комментария
Скрипт не запускается ругается, что нет каталого питон:
-bash: /opt/unetlab/addons/iol/bin/CiscoIOUKeygen3f.py: /usr/bin/python3^M: bad interpreter: No such file or directory
Файл точно расположе по пути /opt/unetlab/addons/iol/bin/CiscoIOUKeygen3f.py?
Что выводит вот эта команда: ls -l /opt/unetlab/addons/iol/bin/CiscoIOUKeygen3f.py
Необходимо создать скрипт в ОС eve-ng
nano /opt/unetlab/addons/iol/bin/CiscoIOUKeygen3f.py
и уже далее скопировать содержимое скрипта и далее по инструкции
cd /opt/unetlab/addons/iol/bin
python3 CiscoIOUKeygen3f.py