Именно этот эмулятор содержит максимальное количество фич и минимальное количество ограничений по функционалу (напомню, что он не распространяется и допускается только использование сотрудниками Cisco).
Основные его преимущества в том что достаточно быстр и неплохо работает с канальным уровнем.
Если быть максимально точным, то IOU работает только под Solaris, а под Linux’ом запускается IOL, но все привыкли использовать одно общее название, поэтому и в статье я буду придерживаться общего названия.
Рассмотрим его от начала и до конца, от установки и до конфигурирования, а под занавес выпустим его в реальную сеть.
Те, кого интересует только настройка IOU, могут пропустить этап установки и сразу перейти к настройке IOU.
Установка
Итак, в начале установка.
Варианты с предустановленным IOU рассматривать не будем, существует множество разнообразных сборок, но гораздо интереснее собрать все своими руками.
Поэтому пойдем с нуля.
Для того чтобы самостоятельно собрать IOU, требуются базовые знания Unix-like систем.
Возьмем, Linux, например, rpm-based CentOS (хотя возможен вариант и с использованием Debian). И средство виртуализации — VMware или VirtualBox по вкусу. Хотя при использовании VirtualBox не будет работать Облако (то есть не будет возможности выпустить IOU в реальную сеть).
Вначале требуется создать виртуальную машину и установить CentOS (этот процесс выходит за рамки статьи и не представляет особой сложности, но про установку можно прочитать, например, тут или тут.
После этого убедиться, что в виртуальной машине два виртуальных сетевых интерфейса.
Один из интерфейсов будет выходить в реальную сеть (режим bridge), а второй — для управления IOU (host-only).
И соответственно сконфигурировать их:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
и
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
Ключевые строки будут состоять из
DEVICE="eth0" BOOTPROTO=static ONBOOT=yes IPADDR=xxx.xxx.xxx.xxx NETMASK=255.255.255.0
в случае статического адреса и
DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes в случае получения адреса по DHCP.
Как можно заметить, нужно указать статический IP адрес, маску или DHCP, и перезапустить сетевую подсистему, чтобы изменения вступили в силу:
# service network restart
Для корректной работы IOU и в особенности для упрощения можно отключить SELinux и iptables.
Посмотреть текущий режим SELinux можно, выполнив:
# sestatus
Чтобы его отключить до первой перезагрузки, достаточно выполнить:
# echo 0 >/selinux/enforce
Для постоянных изменений можно отредактировать его конфигурационный файл до такого вида:
# cat /etc/sysconfig/selinux
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
И отключение фаерволла:
# service iptables stop # chkconfig iptables off
После этого переходим к установке веб-фронтенда.
Совсем недавно он обновился до версии 1.2.2-21
Из нового:
- Новый формат OVF: он меньше и его легче устанавливать;
- Стал быстрее: код был переписан, была оптимизирована база данных;
- Вместо ioulive86 теперь iou2net.pl: Облако может быть запущено до старта IOU;
- Теперь поддерживается более одного Облака;
- iousniffer: стало возможным анализировать трафик;
- Выборочный импорт: можно выбрать, что вы хотите импортировать;
- Добавлены html карты-изображения: теперь изображения могут стать активными ссылками;
- Добавлен обратный отсчет: пригодится для тех, кто отрабатывает задачи для CCIE;
- Отсрочка загрузки: загрузка устройства может быть отложена;
- Веб консоль: заработала веб консоль, но для работы требуется доступность непривилегированных портов (32768-61000);
- Сброс консоли: можно сделать reset на всех или одном терминальном подключении;
- Рекомендуется использовать браузер Google Chrome;
- Исправлено множество ошибок;
Сначала нужно создать файл /etc/yum.repos.d/iou-web.repo со следующим содержимым:
# /etc/yum.repos.d/iou-web.repo [iou-web] name=IOU Web Interface baseurl=http://public.routereflector.com/iou-web/yum enabled=1 gpgcheck=1 gpgkey=http://public.routereflector.com/iou-web/yum/RPM-GPG-KEY-iou-web
Это добавит в систему новой репозиторий, с которого будет устанавливаться и обновляться iou-web.
Затем собственно требуется установить iou-web:
# yum install iou-web
И создать симлинк на libcrypto.so.4 без которого ни l2 ни l3 не запуститься:
# ln -s /usr/lib/libcrypto.so.10 /usr/lib/libcrypto.so.4
Все необходимые недостающие зависимости (вроде apache и php) подтянутся в процессе установки iou-web.
Файлы появятся в каталоге /opt/iou, более того появятся и необходимые конфиги для веб-сервера.
Так же появится запись в конце файла /etc/hosts:
# tail -n 1 /etc/hosts 127.0.0.127 xml.cisco.com
Эта строка по всей видимости будет блокировать возможность отправки информации на сервер Сisco.
Появится и конфиг apache (в котором так же встречается xml.cisco.com):
Необходимости вносить изменения не возникает, всё заработает сразу же.
Видно, что Andrea Dainese (разработчик iou-web) старался максимально упростить жизнь пользователям и свести количество дополнительных действий до минимума.
Осталось запустить веб-сервер
# service httpd start
и указать запуск при каждой загрузке системы:
# chkconfig httpd on
На этом установка веб-фронтенда закончена.
Настройка
Чтобы зайти в iou-web, нужно просто узнать IP-адрес интерфейса, который работает в режиме host-only.
# ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:0C:29:19:D8:CD inet addr:192.168.xxx.xxx Bcast:192.168.xxx.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:10 errors:0 dropped:0 overruns:0 frame:0 TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
После этого достаточно открыть браузер (рекомендуется Google Chrome) и указать там этот IP-адрес.
Перед глазами предстанет веб-фронтенд, достаточно минималистичный, но при этом с приятным дизайном.
Установки непосредственно IOU как таковой нет, нужно просто скопировать файлы (используя Upload IOS), которые были скомпилированы под Linux.
Понадобятся две части — l2 и l3.
Cisco идет в ногу со временем, и эти два уровня не разделяются явно на канальный и сетевой. В данный момент L3 более или менее соответствует маршрутизатору уровня ISR, а L2 – мультилеер коммутатору уровня 3560.
Самая свежая версия на сегодня это IOS 15.2 для маршрутизаторов и IOS 15.1 для свичей.
После того, как будут получены l2 и l3, можно открывать веб-интерфейс и загружать эти файлы.
Для этого идем в Manage — Manage IOS, указываем полное имя файла, псевдоним (alias) который будет потом показывается во время создания топологии, например L3 15.2, нажав open выбираем файл и наконец кнопка upload загрузит IOU в виртуальную машину, в каталог /opt/iou/bin.
Можно переходить к использованию.
Но если попробовать запустить какую-либо топологию, то получим сообщение об ошибке “you must fill license file (/opt/iou/bin/iourc) before starting devices”.
Как пишет автор веб интерфейса – обратитесь к своему начальнику в отделе Cisco для получения лицензии.
IOU заглядывает в файл iourc при каждом запуске на предмет лицензионного ключа.
В двух словах о лицензировании.
Лицензия состоит из ключа, который использует информацию о текущем хосте, при попытке переместить или скопировать на другой хост, использование IOU становится невозможным.
Но в реальности всё обстоит несколько иначе.
Примечание: Автор статьи (sinist3r) не является автором генератора лицензий, и не призывает никоим образом использовать его. Информация предоставляется исключительно для ознакомления.
Скрипт для генерирования лицензий был написан пользователем Kel в 2011 году. Он портировал на питон оригинальный код, написанный на С в 2006-м году.
Сам скрипт по понятным причинам не приводится.
Чтобы им воспользоваться нужно добавить бит на выполнение:
#chmod 0755 CiscoIOUKeygen.py
И собственно запуск:
./CiscoIOUKeygen.py
Вывод вида
[license]
hostname = ключ;
нужно будет скопировать и вставить в разделе Manage – Manage license.
И завершая настройку, последний штрих.
По умолчанию клик на устройствах будет приводить к запуску стандартного telnet клиента.
Это не очень удобно, особенно если учесть что в последних версиях Windows он уже не предустановлен. Гораздо привычнее использовать PuTTY.
Для того чтобы по клику в браузере открывался PuTTY, нужно создать файл для реестра вида:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\telnet] @="URL:Telnet Protocol" "EditFlags"=dword:00000002 "URL Protocol"="" "FriendlyTypeName"="@C:\\WINDOWS\\system32\\ieframe.dll.mui,-907" [HKEY_CLASSES_ROOT\telnet\DefaultIcon] @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\ 00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,75,00,72,00,\ 6c,00,2e,00,64,00,6c,00,6c,00,2c,00,30,00,00,00 [HKEY_CLASSES_ROOT\telnet\shell] [HKEY_CLASSES_ROOT\telnet\shell\open] [HKEY_CLASSES_ROOT\telnet\shell\open\command] @="\"C:\\Program Files\\PuTTY\\putty.exe\" %1"
Естественно, не забыв указать правильное расположение PuTTY.
В случае 64-х битной системы последняя строка будет выглядеть как:
@="\"C:\\Program Files (x86)\\PuTTY\\putty.exe\" %1"
После этого сохранить файл в с расширением reg, запустить и согласиться с внесением изменений.
И теперь переходим к самому интересному – создаем свою топологию.
Создаем свою топологию в IOU
Для того чтобы создать новый стенд/лабораторию, нужно зайти в раздел Laboratories и нажать на Add new Lab.
Откроется страница на которой нужно будет заполнить следующие поля:
Name, Description — имя и описание играют чисто информационную роль
Time — обратный отчет который можно установить, вероятно, имеет смысл при подготовке к CCIE.
Display diagram? — если включено, то будет показана топология со всеми устройствами (которые можно перетягивать курсором), если выключить, то останутся только “активные изображения” — это фиксированные схемы с кликабельными устройствами (с нарисованными областями, номерами портов и прочим)
Additional Info — здесь можно написать вопросы, или какой-либо другой текст
Netmap — именно здесь задаются соединения между устройствами
Здесь стоит сделать небольшое отступление и рассмотреть несколько особенностей IOU.
IOU L3 поддерживает два сетевых модуля NM-4E и NM-4T — для Ethernet и Serial соответственно.
При выборе обоих модулей первым всегда идет Ethernet.
IOU L2 – поддерживает только Ethernet.
К примеру один NM-4E и один NM-4T выглядит как: e0/0-0/3, s1/0-1/3
Предположим мы хотим создать следующий стенд:
R1 e0/0 который соединен с R2 e0/0
R1 s1/0 соединен с R3 s0/0
R1 e0/1 – SW1 e0/0
R2 e0/1 – SW1 e0/1
Тогда синтаксис для netmap будет следующий:
1:0/0 2:0/0 1:1/0 3:0/0 1:0/1 4:0/0 2:0/1 4:0/1
Первой цифрой идет ID устройства (произвольное значение, которое играет скорее информационную роль, хорошая идея чтобы оно совпадало с номером устройства в имени) и затем через двоеточие указывается номер слота/номер порта. Как можно заметить — это практически стандартное именование интерфейсов Cisco.
После этого нажимаем кнопку Add. В результате выпадет еще множество настроек
Apply an Initial Config Pack to all device рассмотрим позднее.
На данном этапе просто укажем имена и выберем подходящую IOS.
Далее нужно заполнить поля RAM и NVRAM, для 15й IOS рекомендуется хотя бы 256RAM и 64 NVRAM.
И теперь самое главное — интерфейсы.
Важно не оставлять поля Eth и Ser пустыми — иначе будет добавлено по 8 модулей NM.
Выходит, что для R1 имеем 1 NM-4E и 1 NM-4T, для R2 — 1 NM-4E и 0 NM-4T, для R3 — только Serial, значит 0 NM-4E и 1 NM-4T и для SW1 — 1 NM-4E и 0 NM-4T.
Далее видим check L2 keepalive — эта технология исправляет ситуацию когда интерфейс в состоянии up, даже если на другом конце все выключено. Работает только в чисто свичовых лабах, в смешанных топологиях рекомендуется не включать.
Watchdog — автор iou-web крайне рекомендует оставлять всегда включенным.
У процессоров Cisco есть таймеры, защищающие систему от некоторых типов зависаний. CPU периодически сбрасывает таймер watchdog. Таймер watchdog в основном контролирует время каждого процесса. Если длительность выполнения процесса больше, чем должна быть, таймер watchdog применяется для завершения процесса.
Затем идет выпадающий список позволяющий выбрать тип устройства и соответствующее изображение.
Опция — Boot delay — позволяет задать задержку в секундах до запуска, например можно выставить чтобы все устройства начали запускаться сразу, а некоторые маршрутизаторы через 20 секунд.
И последняя опция Initial Config — напрямую зависит от Initial Config Pack — и пока будет оставлена без изменений.
Кроме того, внизу еще идет раздел Images, который позволяет загружать свои изображения в формате png.
Например, можно рисовать схемы в Dia/Visio и затем их подгружать в стенды.
Жмем save и переходим в свежесозданный стенд нажатием на нем.
На вкладке Diagram — можно разместить устройства по вкусу и сохранить расположение.
А на вкладке Devices и происходит основное управление.
Нажатием на кнопку Start all devices можно, собственно, и запустить стенд.
Теперь после нажатия на кнопку open console возле каждого устройства будет открываться окно терминала (putty, если были добавлены изменения в реестр).
Нажав на иконку с изображением Wireshark, можно запустить сниффинг трафика.
Забирать сохраненные pcap файлы можно в разделе Downloads — Sniffer.
Возвращаясь к пропущенной опции Initial Config Pack.
При желании можно сконфигурировать все устройства, сохранить настройки командой wr, и затем на каждом устройстве набрать copy running-config unix:, для того чтобы сохранить конфиги на диск.
Затем нажать кнопку Copy all unix://running-config files to database, для того чтобы экспортировать все конфиги.
И теперь можно зайти в раздел Laboratories и увидеть свежесозданный конфиг пак.
Этот файл будет называться так же как и сам стенд, но только без описания.
Теперь можно зайти в режим редактирования стенда и в меню Apply an Initial Config Pack to all device выбрать свежесозданный конфиг пак и сохранить изменения.
Для того чтобы они вступили в силу, в закладке Devices нажать кнопку «stop all devices and wipe all configurations». И вот теперь можно запускать стенд с конфиг паком.
IOU в настоящей сети
Теперь попробуем вывести все это в реальную сеть.
Для этого в IOU используется понятия Облака (до 8-ми штук).
Зайдем в режим редактирования лаборатории.
Возьмем маршрутизатор R1, модуль Ethernet.
Для Облака наглядно использовать большие значения ID, например 800
Допишем одну строку в поле NETMAP:
1:0/2 800:0/0
Save и переходим в уже знакомый расширенный режим редактирования.
Имя указывается произвольное, поле IOS нужно оставлять empty.
В поле ethernet набираем eth1, в случае если eth1 это виртуальный сетевой адаптер который в режиме моста смотрит в существующую сеть.
Затем выбрать Picture — Cloud (это достаточно важно).
И, собственно, сохраняем результат и запускаем все устройства.
Видим, что цель была достигнута.
Итоги
С появлением версии под linux и веб-фронтенда, работа с IOU не представляет особой сложности, все реализовано достаточно логично.
Во многих случаях этот эмулятор оставляет далеко позади GNS/Dynamips, особенно когда идет речь об канальном уровне и коммутаторах.
IOU по прежнему остается лучшим инструментом как для подготовки к CCNP/CCIE, так и для траблшутинга.
В процессе написания в основном использовались материалы сайта Route Reflector.
Пользователь netvolart меня опередил, выпустив статью с частично пересекающимся материалом.
Как всегда все статьи цикла можно найти на сайте linkmeup.ru.
Там же расположены все выпуски первого подкаста для связистов linkmeup.
ссылка на оригинал статьи http://habrahabr.ru/post/199138/
Добавить комментарий