понедельник, 6 августа 2018 г.

Эмулятор сети EVE-NG Добавление образов устройств

  В предыдцщей статье мы установили эмулятор сети EVE-NG и провели его начальную настройку. Но попытавшись добавить в свою сеть новую ноду вы обнаруживаете, что из длинного списка устройств доступна только "Virtual PC (VPCS)". Остальные системы надо добавлять вручную.
  В EVE-NG мне известны два вида образов для сетевых устройств - QEMU и Cisco IOL

QEMU образы

  QEMU образы предсавляют из себя файлы с расширением *.qcow2. Их нет на сайтах производителей и я гуглил их. Лежать они должны в папке /opt/unetlab/addons/qemu. Образы должны иметь строго определенные имена файлов и лежать в только в определенных подпапках. Подробнее о том какие должны быть имена файлов и папкок смотри таблицу правильных имен папок и файлов EVE-NG.
  Устройство ASA требует, чтобы в /opt/unetlab/addons/qemu создали папку с именем asa-НомерВерсии и в ней лежал файл образа с обязательным именем hda.qcow2. Например для образа ASA с версией 8.02 я создал подпапку с именем asa-8.02, а в ней скопировал файл образа с именем hda.qcow2.
  Для роутеров Mikrotik с версией прошивки 4.17 создал папку /opt/unetlab/addons/qemu/mikrotik-4.17 и в ней файл образа hda.qcow2
  А для совершенно непонятного мне устройства VIOS создал подпапку vios-15 с файлом virtioa.qcow2
  В HowTo по подключению образов подробно написано как добавлять образы различных устройств.
  Сделав эти действия запустите "/opt/unetlab/wrappers/unl_wrapper -a fixpermissions" и новые устройства появятся в EVE-NG.

  Возможные ошибки

  Если эти устройства в eve-ng нельзя запустить, то скорее всего проблема аппаратной виртуализацией процессора. Для работы qemu-образов нужна поддержка процессором флагов vmx(Intel) или svm(AMD). Определяют поддержку инструкций для прямого доступа к ресурсам процессора из гостевых систем. Значительно повышает производительность системы.
  Чтобы узнать есть ли эта поддержка,  запусти "cat /proc/cpuinfo | grep vmx" и "cat /proc/cpuinfo | grep svm". Если ничего не найдено, значит аппаратной виртуализации процессора нет.
  Если вы запускаете EVE-NG под виртуальной машиной возможно надо настроить чтобы основная система "пропускала" в гостевую эти флаги. Допустим Microsoft Hyper-V может это делать только начиная с версии Windows Server 2016
  Если настройкой основной системы проблему не решить, то в папке /opt/unetlab/html/templates находятся *.php файлы поддерживаемых типов образов. Допустим в asa.php находятся настройки для устройств Cisco ASA и т.д.
Откройте его и найдите $p[‘qemu_options’]. Эта строка должна выглядеть примерно так:
$p['qemu_options'] = '-machine type=pc-1.0,accel=kvm -serial mon:stdio -nographic -nodefconfig -nodefaults -display none -vga std -rtc base=utc';
  Удалите «,accel=kvm». Теперь заработает.

Образы Cisco IOU/IOL

  Эти образы компания CISCO продает и они недоступны для  свободного распространения. Как я понял, они исходный код своих прошивок компилируют для Linux. Образы представляют из себя *.bin файлы.
  Есть HowTo как добавить Cisco IOU/IOL и можно почитать его на понятном английском языке.
  Для добавления образов скопировать *.bin файлы в /opt/unetlab/addons/iol/bin.
  Так как эти образы лицензионные, то надо указать лицензионный ключ. Файл /opt/unetlab/addons/iol/bin/iourc должен содержать
[license]
eve-ng = 1234567890abcdef;
  Где "1234567890abcdef" это лицензионный ключ полученный от Cisco. Правда отдельные любители дармовщины пользуются программой "Cisco IOU License Generator v2" в файле keygen.py, которая создает ключ.
  И в конце опять запускаем "/opt/unetlab/wrappers/unl_wrapper -a fixpermissions"
  В списке нод появляется "Cisco IOL". Нажав на нее получаем окно, где в поле "Image" можно выбрать все доступные bin-образы.

  Проверка

  Можно прямо в линуксе проверить bin-образы. Запустите следующие три команды. Здесь ИМЯФАЙЛА.bin это наш bin-образ.
cd /opt/unetlab/addons/iol/bin
touch NETMAP
LD_LIBRARY_PATH=/opt/unetlab/addons/iol/lib /opt/unetlab/addons/iol/bin/ИМЯФАЙЛА.bin> 1
  Если все правильно, образ должен запуститься и мы увидим систему роутера.