Как стать автором
Обновить

Сети для Самых Маленьких. Микровыпуск №4. Погружение в IOU

Время на прочтение10 мин
Количество просмотров39K
Продолжая, а точнее завершая обзор разнообразных эмуляторов оборудования Сisco Systems, я подробно остановлюсь на Cisco IOU (Cisco IOS on UNIX).
Именно этот эмулятор содержит максимальное количество фич и минимальное количество ограничений по функционалу (напомню, что он не распространяется и допускается только использование сотрудниками 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.
Теги:
Хабы:
Всего голосов 17: ↑15 и ↓2+13
Комментарии19

Публикации

Истории

Работа

Ближайшие события