Установка и использование виртуальной сетевой лаборатории EVE-NG совместно с Ansible. Первый опыт

В данной статье приведен опыт инженера-сетевика по развертыванию виртуальной лаборатории EVE-NG в домашних условиях, для целей подготовки к экспертным экзаменам Cisco.
Я постарался собрать все основные вехи настройки, разбросанные по статьям в интернете и попытался добавить в топологию, попутно изучая, ansible — систему управления конфигурациями. Черновик статьи появился случайно, поскольку мне стало жаль терять накопленный опыт и решил сохранять его в отдельный файл. Вот его я и представляю на ваш суд.
Все решения, приведенные в статье, не претендуют на оптимальность, но абсолютно точно работают.
Установка EVE-NG
Подготовка хоста
В качестве хостовой я использую следующую систему: Intel Xeon X3240, 32Gb RAM под управлением Gentoo. Настройка KVM на Gentoo дело достаточно тривиальное и, по правде сказать, я не помню с какими подводными камнями мне пришлось столкнуться при её развертывании. Дело было давно.
Основное, что катастрофически сказывается на производительности лабораторного стенда типа EVE-NG, — это параметр ядра, который запускает возможность использования nested virtualization (вложенную виртуальзацию).
Для процессоров Intel:
Подробнее можно прочесть по ссылке.
Подключение образов сетевых устройств
Образы сетевых устройств для подключения находятся в свободном доступе на самом cisco.com, для скачивания достаточно иметь учётную запись начального уровня. Нам понадобятся XRv и CSR.
Скачиваем по указанными ссылкам и следуем рекомендациям в how-to.
Проблема, с которой я столкнулся при добавлении образов — как называть директории, куда нужно складывать файлы hda.qcow2. Решение, как всегда, — реверс-инжиниринг. Список заголовков, обрабатываемых EVE-NG зашит в файле:
Приведу его здесь:
То есть, если нам необходимо добавить образ с любым Linux, как мы будем делать ниже, то достаточно создать директорию /opt/unetlab/addons/qemu/linux-что-то-там/ и положить в неё файл образа hda.qcow2.
Настройка окружения
Под окружением будем понимать всё, что делает нашу жизнь удобнее.
Доступ к консоли маршрутизаторов
Несмотря на то, что в EVE-NG разработчики внедрили возможность доступа к консолям сетевых устройств по web с использованием HTML5, доступ со сторонних клиентов удобнее и привычнее. Основное удобство, которое предоставляется putty в моём случае, — это возможность использования буфера обмена. Не работает copy/paste в web-консоли.
Итак, процесс выглядит следующим образом:
Установка putty на машине, откуда будет осуществляться доступ. Я работаю на ПК c ubuntu, поэтому:
Но этого мало, нужно еще рассказать браузеру, в моём случае это chrome, как реагировать на ссылки вида telnet://. Для этого необходимо создать файл
/.local/share/applications/telnet.desktop следующего содержания:
После этого консоли будут отлично открываться в putty. Задачу перехода на gnome-terminal с вкладками или его аналог оставлю на потом.
Запуск сниффера трафика
Wireshark — насущная необходимость при изучении сетевых технологий. Очень много написано про его использование. Не стану повторяться. Опишу процесс его настройки.
Установка на клиенте:
Но снова браузер не понимает как обработать ссылку capture://
Объяснять ему это придется в три этапа:
Этап 1:
Как и в случае с консолями, файл
Этап 2:
Обработчик в виде скрипта на bash на клиентской машине в любой директории из списка PATH:
Этап 3:
Ключевой ssh-доступ между клиентской машиной и EVE-NG.
На клиентской машине (вместо ip_eve поставить адрес EVE-NG):
После этого будет работать захват трафика в wireshark на стороне клиента. Что нам и требовалось.
На этом непритязательный пользователь может остановиться, но нет предела совершенству и мы продолжаем.
Настройка инстанса сервера ansible
Необходимость ansible для виртуальных лабораторных топологий в начале пути была для меня неочевидна. Но со временем, на втором десятке лабораторных часов, приходит мысль — а не автоматизировать ли загрузку стартовых топологий в устройства, не перегружая их, тем самым экономя время?
Итак, с чего начать? С ограничений ansible! Да, они действительно есть. Для меня, как достаточно далекого от программирования, слишком жестоким оказалось предложение на одном из форумов — дописать обработчик телнета самому. Телнет нужен был для решения в лоб — настроить ansible на виртуальной машине EVE-NG и телнетится на консольные порты виртуальных маршрутизаторов. Но не тут-то было — работает только ssh.
Но мы старые инженеры и не привыкли отступать! Если гора не идёт к Магомету, то двинем мы к ней — настроим отдельный инстанс с ububtu в самой топологии, благо для этого есть возможность.
Как разворачивать в KVM образ скаченный с ubuntu.com я приводить не буду. Делал я это на отдельной машине, настраивал и заливал в EVE-NG. После установки нам понадобятся пакеты с telnet-сервером и настройка статического IP-адреса.
Настройка telnet-сервера
У меня не вышло заставить EVE-NG показать мне консоль сервера стандартным способом через клик по девайсу. Чтобы не закапываться глубоко, я пошел в обход — настроил telnet-сервер. SSH v2, конечно, тоже имеется и работает с CSR, но уж очень медленно для интерактивной работы, да и бесполезно — у нас лабораторный стенд, а не продакшн.
Потом необходимость в сервере отпала, но запись в шпаргалке осталась, поэтому приведу и её.
После автоматического запуска xinetd, конечно, ничего не произошло, как нам обещали в интернете.
Нужно добавить в /etc/xinetd.d файл telnet следующего содержания:
и перезапустить сервер xinetd:
Проверяем телнет локально:
Закачиваем полученный образ в виртуальную машину EVE-NG и пробуем собрать топологию.
Теперь мы можем, настроив на соседней цыске в топологии адрес из подсети сервера, до него достучаться по telnet. Всё работает быстро, не в пример SSH.
Сбор топологии
Здесь всё чрезвычайно просто. Моя топология выглядит следующим образом:

Развёртывание подсистемы аnsible
Настройка CSR для работы с ansible
Выделим на каждом маршрутизаторe отдельный порт для управления и подключим к общему хабу с сервером ansible портами Gi2. Выберем подсеть для управления, у меня это 192.168.0.0/24. И назначим IP-адреса на портах в соответствии с номером маршрутизатора.
Эту же информацию занесем в /etc/hosts сервера:
На каждом маршрутизаторе настроим SSH v2 согласно ссылки. Всё тривиально, скажу лишь то, что для запуска требумеого нам SSHv2 нужно генерировать ключ более 768 бит, я выбрал размер 2048.
Проверяем доступ с сервера до маршрутизаторов по SSH, заодно собирая в хранилище ключи.
Сохраняем конфигурацию на маршрутизаторе:
И экспортируем в EVE-NG конфигурацию для того, чтобы заново не настраивать при перезагрузках девайсы:

Эта фича в EVE-NG, как и Unetlab до неё, работает с переменным успехом. Но будем надеяться.
Создание первого воркбука
Как мы помним, структура ansible состоит из двух основных частей — описания девайсов (inventory), и воркбука, собственно с логикой работы системы.
В нашем случае inventory достаточно примитивен и файл его содержащий (/etc/ansible/hosts) принимает вид:
Что раскрывается списком хостнеймов от R1 до R10 (помним, что мы уже прописали /etc/hosts для разрешения имён).
А вот с ворбуком придется повозиться.
Первым этапом, для того, чтобы залить конфигурацию, представляющую для нас лабораторный интерес, на виртуальный маршрутизатор IOS, нам необходимо сделать откат на начальную нулевую, содержащую только IP управления и настройки VTY.
Для этого мы попытаемся использовать модуль ios_command.
Основой всей работы по смене конфигураций в устройствах IOS для нас будет служить функционал команды привилегированного режима маршрутизатора:
Нулевые конфигурации будем хранить на сервере в домашнем каталоге нового пользователя под именем router в директории /home/router/default_configs/. Забегая вперед, скажу, что файлы будут иметь имена такие же, как и в inventory, т.е. в нашем случае это R1, R2 и т.д.
Создадим в /opt/ansible файл rollback.yml вида:
Итак, по порядку:
Название используемого инвентори:
Количество параллельно конфигурируемых устройств из инвентори. Важная часть последующей оптимизации производительности.
Как я понял, это говорит о соединении с локальным обработчиком заданий. Могу ошибаться.
Отключение сбора информации о хостах:
Имя пользователя для соединения с устройствами:
Передача команды в устройство из инвентори:
Время ожидания отклика в секундах:
Ничего особо сложного, как мы видим, но есть одно но!
Гугл нам об этом не особо много расскажет, поэтому вооружаемся смекалкой и пытаемся найти кто же нам это заявил. И находим файл самого используемого нами модуля: /usr/local/lib/python2.7/dist-packages/ansible-2.3.0-py2.7.egg/ansible/modules/network/ios/ios_command.py, содержащий вот такой код:
Явно, что разработчики немного перегнули палку, отнеся все параметры configure к конфигурационному режиму, поэтому дописываем в соответсвующую строку:
Создание второго воркбука
Не стану описывать так же подробно, как на предыдущем этапе, просто приведу пример воркбука, который заливает тематическую начальную конфигурацию лабораторных работ одного известного бренда с тремя буквами в названии:
Файлы начальных конфигурации лежат в /opt/ansible/IOS-XE-initials/base.ipv4, соответственно. Основное отличие данного сценария — это использование функционала модуля ios_config и передача права ему интерпретировать те команды, которые необходимо выполнить на устройствах.
На этом всё, спасибо за внимание. Если статья достойна продолжения, то следующей темой станет настройка взаимодействия IOS XR и ansible.
Введение
Дистрибутив EVE-NG доступен в OVA и ISO формате. Открытый стандарт виртуальных машин (OVA) представляет собой tar-архив, в который упакованы диски и конфигурационные файлы виртуальной машины. Данный файл может использоваться для развертывания машины в VMware workstation, Player, ESXI. Обратите внимание, что использования EVE-NG как гостевой виртуальной машины снижает производительность. Это может быть незаметно, если у вас достаточно ресурсов на хосте виртуализации. Также EVE-NG может быть установлен на физические машины, без использования гипервизора, используя установку с iso образа. Данный метод называется установкой на “голое железо” (bare metal) и является рекомендуемым методом установки EVE.
-
(предпочтительный вариант)
Системные требования
Основные потребности и ограничения
Для EVE-NG требуется:
- Поддержка технологии Intel CPU VT-x/EPT
- Одно из следующего списка:
- Ubuntu 18.04 64bit / 16.04 64bit. (Ubuntu 18 не поддерживается, т.к. не содержит необходимых библиотек для EVE). Начиная с 3 версии EVE-NG Pro поддерживается только 18.04 версия. EVE-NG Community работает на 16.04.
- VMware ESXi 6.0 или новее
- VMware Workstation 12.5 или новее
- VMware Fusion 8 или новее
- VMware Player 12.5 или новее
- Не поддерживается Oracle VM VirtualBox.
- Не поддерживается Citrix XenServer.
- AMD-V/RVI процессоры совместимы (практически без ограничений), но официально не поддерживаются командой разработчиков EVE-NG Team, т.к. возможны проблемы с виртуализацией qemu образов.
- Hyper-V and Proxmox не официально поддерживаются, но не рекомендуются.
Примеры конфигураций
Системные требования к количеству ядер и объему RAM напрямую зависят от типа и количества образов, которые будут задействованы в вашей топологии и конфигураций используемых на них. На нашем сайте есть калькулятор. При помощи данного калькулятора можно рассчитать рекомендуемые системные требования к железу.
Минимальная конфигурация
CPU (ядра) RAM (Gb) HDD (Gb) 4 6 40 Минимальные требования позволят запускать маленькие лаборатории. Общая производительность будет сильно зависеть от числа узлов, задействованных в схеме. На данной конфигурации можно будет запустить один из следующих вариантов:
- IOL: 40-50 устройств
- Dynamips: 20-25 устройств
- vIOS: 8-10 устройств
- CSRv1000: 2-3 устройства
Данная конфигурация подходит для средних лабораторных стендов. На данной конфигурации можно будет запустить один из следующих вариантов:
Установка и настройка eve-ng эмулятора
В данной статье приведено описание установки самого лучшего эмулятора сетевых устройств EVE-NG. Разработкой этого чуда занимаются те же ребята что сделали всеми нами любимый эмулятор UNetLab. Что для нас самое главное в eve можно собрать топологию с использованием микротиков (mikrotik), cisco, можно добавлять сервера и много еще интересного.
Для установки на домашний ПК нам понадобиться:
1) VMware workstation
2) Место 20 ГБ (можно и меньше, но лучше столько)
3) Поддержка CPU Inte-VT или AMD-V
Развертывание эмулятора EVE-NG
Будем считать, что у вас уже стоит VMware. Для скачки готового образа переходим на сайт разработчиков «http://www.eve-ng.net/index.php/downloads/eve-ng» и скачаем его.


Далее импортируем образ в удобное место (нажав два раз на скаченный файл) у меня вот так.
После дожидаемся импорта нашего образа с эмулятором EVE и заходим в настройки появившийся VM. Добавляем ей ресурсов (сколько не жалко). Я накинул 8GB озу и 4 проца.
Если хотите, чтобы ваши эмулированные микторики, сервера и прочие железки имели доступ во внешнюю сеть, то сетевой адаптер добавьте мостом.

В разделе процессор нужно обязательно поставить галочку «Виртуальный Intel-VT-x/ или AMD-V/RVI»


Нажимаем ОК выходим на главный экран виртуалки и видим над разделом устройства надпись: «Обновить виртуальную машину». Жмем на надпись и делаем как на рисунках. (ее может и не быть)


После успешного завершения обновления настал момент запустить наш мощный эмулятор для домашней лаборатории. Как все загрузится на экране отобразится приветствие в виде IP адреса и строчкой для ввода логина, а после пароля.

После авторизации откроется мастер настроек, который предложит вам установить ip, dns, gateway, hostname и тд.

После сервер должен загрузится полностью и можно заходить на веб интерфейс по ip который мы ему дали 192.168.13.249.


В следующий статье рассмотрим то как добавлять образы в систему и строить различные топологии. А на этом все, всем спасибо надеюсь статья будет полезной. Если есть вопросы оставляйте их в комментариях.
89 вопросов по настройке MikroTik
Вы хорошо разбираетесь в Микротиках? Или впервые недавно столкнулись с этим оборудованием и не знаете, с какой стороны к нему подступиться? В обоих случаях вы найдете для себя полезную информацию в курсе «Настройка оборудования MikroTik». 162 видеоурока, большая лабораторная работа и 89 вопросов, на каждый из которых вы будете знать ответ. Подробности и доступ к началу курса бесплатно тут.
Установка EVE-NG Community
В этой статье кратко будет рассмотрена установки Установка EVE-NG бесплатной редакции Community.
Что такое EVE-NG? Это эмулятор сетевого оборудования и операционных систем очень широкого набора вендоров (Cisco, Juniper, Mikrotik, Linux, MS Windows и т.д.). Полный перечень поддерживаемых образов доступен в соответствующем разделе документации.
EVE-NG позволяет строить, например, вот такие схемы (картинка с официального сайта):

Предварительные требования
Подробное описание предварительных требование приведено вот на этой странице официального сайта продукта.
Кратко рассмотрим основные требования:
- Процессор с поддержкой Intel CPU VT-x/EPT.
- Гипервизор нужен VMware ESXi 6.0 или новее.
- Поддерживается VMware Workstation/Player 14.0 или новее.
На других популярных гипервизорах (например, Hyper-V или Proxmox) могут наблюдаться проблемы со вложенной виртуализацией.
Количество ядер CPU и размер оперативной памяти зависят от размеров вашей лабораторной схемы. Например, 4vCPU и 8 ГБ оперативной памяти будет достаточно для работы с Cisco IOU/IOL. Однако, более свежие версии маршрутизаторов и коммутаторов Cisco будут требовать больше ресурсов.
Так же перед началом процесса установки необходимо загрузить дистрибутив бесплатной редакции со страницы официального сайта продукта.

Я буду использовать следующее окружение и характеристики для конфигурируемой виртуальной машины:
Гипервизор VMware Workstation 15 vCPU 6 RAM, GB 16 Disk storage, GB 60 Важный момент – необходимо включить поддержку инструкций Intel VT-x или AMD-V для процессора. Как это сделать – зависит от вашей платформы виртуализации. Например, в VMware Workstation для этого есть отдельная опция в настройках процессора.

Процесс установки
Процесс установки довольно прямолинеен. EVE-NG основан на дистрибутиве Ubuntu. Поэтому, если вы знакомы с установкой этого дистрибутива Linux, то установка EVE-NG для вас будет очень легким занятие.
1. Итак, запускаем виртуальную машину. На первом шаге мастера установки выбираем пункт “Install EVE-NG Community”. Либо подождите пару секунд и автоматически запустится установка EVE-NG.

2. Я выберу английский язык локализации.

3. Раскладку клавиатуры так же укажу английскую.

4. На этапе установки я оставлю вариант получения IP-адреса по DHCP, но в следующем разделе покажу, как настроить статический адрес.

5. Я не использую прокси сервер, поэтому на этапе настройки прокси просто нажимаю “Done”.
6. На последнем шаге мастер предупредит нас о том, что вносимые изменения уничтожат все данные на нашем диске. Даем наше согласие на эту операцию – нажимаем “Continue”.

7. Дожидаемся окончания процесса установки.
8. Перезагружаем виртуальную машину.
Первоначальная настройка
После установки EVE-NG нам осталось выполнить следующие шаги:
1. Изменить пароль пользователя root
2. Задать статический IP-адрес.
Выполним эти настройки:
1. Подключаемся к консоли виртуальной машины.

2. Стандартные логин и пароль:
Указываем логин и пароль в консоли виртуальной машины.
3. Сразу же после запуска нам будет предложено изменить пароль.

Можем либо изменить пароль, либо указать прежний пароль (eve), а затем повторно указываем пароль.
4. Указываем имя хоста.

5. Указываем имя DNS домена виртуальной машины:

6. Вот теперь мы можем указать, что намерены сконфигурировать статический IP-адрес:

7. Указываем IP-адрес:

8. Конфигурируем маску подсети:

9. Далее необходимо указать шлюз по умолчанию:

10. Последним шагом указываю адрес сервера DNS:

11. Настройку второго сервера DNS и сервера NTP я пропущу.
12. Прокси сервер я не использую, поэтому выбираю вариант “direct connection”.

Теперь мы можем открыть браузер и перейти в веб интерфейс по следующему адресу: