Недавно я столкнулся с проблемой выбора среды для изучения некоторых фич маршрутизаторов Cisco. Раньше я пользовался GNS3, а сейчас решил посмотреть, что изменилось в мире. Как выяснилось, прогресс шагнул далеко вперёд. Погружаясь в пучину статей и форумов, я обнаружил что огромное количество информации из них уже устарело. Чтобы не запутаться в многообразии ПО, я сделал себе небольшую шпаргалку (актуальность — март 2020 г.). Теперь я хочу выложить её на суд общественности. Во-первых, чтобы не пропадала (мне кажется, кому-то это может пригодиться, так как в одном месте я упоминания всех средств разом так и не нашёл). Во-вторых, возможно, в комментариях мне укажут на ошибки в описаниях и это позволит улучшить обзор.
Итак, если у вас нет под рукой «железного» коммутатора/маршрутизатор(а/ов) для подготовки к экзаменам/отработки фич перед внедрением/повышения квалификации, то скорее всего вас выручат:
1. Симуляторы
1.1. Cisco Packet Tracer
1.2. Boson NetSim
2. Эмуляторы
2.1. Dynamips + Dynagen
2.2. IOU/IOL + WebIOL
2.3. Виртуальные машины для QEMU/VMWare/…
3. Лабораторные среды
3.1. VIRL
3.2. GNS3
3.3. iou-web → UNetLab → EVE-NG
4. Удалённая лаборатория производителя
1. Симуляторы
Этот класс программного обеспечения имитирует работу оригинального ПО, но им не является. ПО симулятора содержит существенные упрощения и предназначено только для воспроизведения внешнего поведения исследуемого объекта. Симуляторы обладают собственным набором багов, производительностью и реализуют не весь функционал. Поэтому, в основном их применяют на низких ступенях обучения. Искушённым специалистам они не подойдут. Но начинающим – самое то.
1.1. Cisco Packet Tracer (CPT)
Самый известный симулятор для Cisco. В Интернет (и на Хабре в частности) есть очень много материалов, посвящённых работе с ним. Этот инструмент хорошо знаком тем, кто изучает Cisco на официальных курсах производителя. Позволяет составлять достаточно сложные сети из коммутаторов Catalyst 2960, ISR (Integrated Service Router), симуляторов ПК и нескольких других, менее значительных элементов. Текущая версия 7.3. Надо отметить, что CPT развивается существенно медленнее технологий своего производителя. Так, например, там вы не найдете никакой современной линейки типа Catalyst 9200, но при этом там присутствуют такие динозавры как Catalyst 2950, который добросовестно имитирует подключение без Auto-MDI, 3560 и даже неуправляемый концентратор (не путайте с коммутатором).
Все сетевые инструменты (анализатор, терминальный клиент и т.д.) уже включены в интерфейс CPT в собственной реализации (что и не мудрено, так как на самом деле внутри симулятора сетевых пакетов в привычном виде просто нет). Поэтому воспользоваться любимыми Wireshark и PuTTY никак не удастся. Зато в нём есть отладчик, который позволяет пошагово визуализировать прохождение пакета в сети – такой фичей другие инструменты похвастаться не могут.
CPT – это проприетарный продукт и его нет в легальном свободном доступе. Но получить его бесплатно достаточно просто. Для этого надо пройти на сайт сетевой академии Cisco (Cisco Network Academy) – https://netacad.com, найти там курс «Cisco Packet Tracer», зарегистрироваться на сайте и записаться на его прохождение. После этого в ресурсах курса вы сможете скачать CPT (доступен для разных ОС). При запуске CPT будет просить у вас учётную запись сетевой академии. Именно поэтому не тратьте время на версии с торрентов с общими ключами, которые периодически банят.
Кстати, в Cisco ASA есть команда packet-tracer, которая позволяет проверить настройки межсетевого экрана. Так вот, она никакого отношения к Packet Tracer не имеет.
1.2. Boson NetSim
Ещё один, симулятор, ориентированный на подготовку к экзаменам треков CCNA и CCNP официальной сертификации Cisco. Доступен по адресу https://www.boson.com/netsim-cisco-network-simulator. Симулятор платный: цена колеблется от 179$ до 349$ за разные версии экзаменов. Доступен только под Windows.
Представляет собой некий сборник лабораторных работ, сгруппированный по темам экзамена. Как можно наблюдать по скриншотам, интерфейс состоит из нескольких секций: описание задачи, карта сети, в левой части находится список всех лаб. Закончив работу, можно проверить результат и узнать все ли было сделано. Есть возможность создания собственных топологий, с некоторыми ограничениями. [1]
Пожалуй, на этом с симуляторами всё.
2. Эмуляторы
Эмуляторы – это программы, предназначенные для запуска оригинального или слегка изменённого программного обеспечения на x86 или x64 платформе (в данном случае). Работа эмуляторов гораздо ближе к работе реального оборудования, нежели работа симуляторов. Хотя и тут могут быть небольшие отличия. Рассмотрим наиболее распространённые эмуляторы сетевых устройств Cisco.
2.1. Dynamips + Dynagen
Эмулятор маршрутизаторов Cisco, который может работать в Windows, Linix и Mac OS X. Распространяется по лицензии GNU GPLv2 (чего нельзя сказать об образах, которые он использует). Позволяет запускать виртуальную машину с оригинальным образом ОС от старых маршрутизаторов семейств 1700, 3725, 7200 и некоторых других. Позволяет имитировать интерфейсы Ethernet и вымирающие ATM и Serial. При этом Dynamips не может работать с прошивками коммутаторов, так как их ОС ориентированы на использование ASIC, которые во множестве встречаются в коммутаторах и очень сложно имитируются на x86 системах.
Впервые Dynamips был опубликован в 2005 году. Его разрабатывал Christophe Fillot. Однако, уже в 2007 году, на версии 0.2.8 он бросил этот проект. Википедия пишет, что существует версия 0.2.15 от 2015 г., но страница с пруфом недоступна. Для Dynamips существовал консольный фронтенд Dynagen.
Операционная система Cisco IOS очень консервативна, поэтому некоторые фичи вы сможете без проблем изучать даже на таком старом ПО. Однако, есть проблема с образами ОС: официально приобрести IOS для 7200 и других уже давно нельзя, ибо пребывают они в состоянии не только End of Sale (29.09.2012), но и Last Date of Support (30.09.2017) [2]. Поэтому легально использовать Dynamips нельзя. Хотя вряд ли можно считать ущерб для компании Cisco от такого использования хоть сколько-нибудь значимым для инициации преследования, но всё может быть.
2.2. IOU/IOL + WebIOL
Следующий эмулятор это Cisco IOS on UNIX – IOU и его вариация Cisco IOS on Linux – IOL. Представляет собой двоичный исполняемый файл, содержащий операционную систему L3 коммутатора Catalyst (L2IOU, да L2 – это не опечатка) или многофункционального маршрутизатора — ISR (L3IOU), скомпилированную производителем для запуска в UNIX/Linux. IOU характеризуется очень низким потреблением ресурсов (относительно других эмуляторов). И в отличии от Dynamips он может запускать ПО для коммутаторов. Для IOL существует официальный графический фронтенд WebIOL (не путать с неофициальным iou-web [3]), который позволяет формировать из устройств сложные сетевые топологии.
Проблема в том, что IOU разработан Cisco Systems для внутреннего использования, поэтому он доступен только сотрудникам и партнёрам. Несмотря на это, в Интернет есть инструкции по его скачиванию и установке. Однако следует помнить, что это нелегально.
К сожалению, мне не удалось найти информацию о том, развивается ли сейчас IOL или его вытеснили образы для QEMU и VMWare, о которых речь пойдёт далее. Если кто-то знает о судьбе IOU, прошу поделиться пруфами для улучшения этого абзаца.
2.3. Виртуальные машины для QEMU/VMWare/…
В соответствии с общим трендом на виртуализацию (и виртуализацию сетевых функций в частности – NFV, Network Functions Virtualization) сама Cisco Systems всё больше и больше продуктов выпускает в виде т.н. Virtual Appliance или, проще говоря, обычных виртуальных машин, предназначенных для запуска в распространённых гипервизорах: QEMU, VMWare, Hyper-V и др.
Так, например, в виде виртуальных машин доступны следующие продукты.
- ASAv (Cisco Adaptive Security Virtual Appliance) – хорошо всем знакомый, но немножко устаревший, МСЭ Cisco ASA. Теперь и в виртуалке.
- NGFWv и NGIPSv (Cisco Firepower – Next Generation Firewall и Intrusion Prevention System) – новое поколение устройств безопасности.
- IOS XRv – версия IOS-XR для маршрутизаторов операторского класса. Такая штука может заменить Quagga или что-нибудь по мощнее.
- CSR1000v (Cloud Service Router) – маршрутизатор с ОС IOS-XE. Специализируется на VPN, MPLS, VXLAN, контроле трафика и т.д. Предназначена для размещения в облаке.
- NX-OSv – ещё один коммутатор/маршрутизатор, на этот раз под ОС IOS-NX, которая используется в «железках» Cisco Nexus. Также ориентирована на решение задач в ЦОД.
- Nexus 1000v – специальная версия виртуального Nexus, предназначенная для обслуживания кластера виртуальных машин Hyper-V или VMWare. Причём это специфическая виртуальная машина, поддерживающая подключение распределённых и, опять же, виртуальных модулей. [4] Поставляется вместе со средствами виртуализации.
- Cisco Nexus Titanum – устаревшая виртуальная машина с NX-OS, предназначенная для внутреннего использования в Cisco.
- Так же другие популярные продукты ISE, WLC, MSE/CMX и др. уже доступны в виде виртуальных машин.
Эти программные продукты можно приобрести у производителя (хоть некоторые из них и очень недёшево). Раньше образы были доступны для ознакомления на сайте https://cisco.com. Теперь для их загрузки требуется действующий сервисный контракт на продукт, либо секретная ссылка от менеджера Cisco или их партнёра. Тем не менее большинство образов есть на торрентах и в течении 60-90 дней они обеспечивают полную функциональность. Но использование таких образов не совсем легально.
Есть ещё два очень интересных образа виртуальных машин.
- IOSvL2 – виртуальный образ маршрутизирующего коммутатора.
- IOSv – виртуальный образ маршрутизатора Cisco.
Эти образы не распространяются отдельно, но их можно извлечь из лабораторной среды VIRL, речь о которой пойдёт далее. К сожалению, лицензионное соглашение по VIRL не описывает отдельного использования IOSv, поэтому здесь могут возникнуть юридические казусы даже при приобретённом VIRL.
Ещё не следует путать (а их даже google и Яндекс иногда путают в выдаче) уже рассмотренный L2IOU и IOSvL2. Это разные программные продукты. [5]
3. Виртуальные лаборатории
Одна виртуальная машина – это хорошо, но компьютерная сеть – это всё-таки совокупность независимых узлов. Поэтому, зачастую, возникает потребность запустить несколько эмулированных устройств и заставить их взаимодействовать как единое целое. Сделать это вручную возможно, но такой подход затруднителен. Поэтому существуют программные продукты, которые позволяют автоматизировать создание виртуальных сетевых окружений и снабдить его графическим интерфейсом. Отдельного устоявшегося термина для них нет, поэтому здесь будем называть их виртуальными лабораториями.
3.1. Cisco VIRL
В первую очередь необходимо упомянуть официальную виртуальную лабораторию от Cisco. Это Cisco VIRL (Virtual Internet Routing Lab). Актуальная версия 1.6. Официальный сайт — http://virl.cisco.com (забавно, что в 2020 году сайт, созданный одним из крупнейших производителей решений в области сетевой безопасности, не имеет TLS версии).
Продукт распространяется в виде виртуальной машины или пакета для установки на «голое железо». Стоимость составляет негуманные 199$ за 365 дней и не более чем 20 виртуальных сетевых узлов (срочная подписка на локальное ПО – всё очень модно и современно). На Packet.net есть облачная версия VIRL.
VIRL уже включает в себя учебные версии образов IOSv, IOSvL2, IOS XRv, NX-OSv, CSR1000v, ASAv. Так же в него могут быть добавлены сторонние виртуальные машины других сетевых производителей.
Для работы с VIRL используется собственный GUI клиент VM Maestro.
3.2. GNS3
Следующая виртуальная лаборатория это GNS (Graphical Network Simulator). Первая версия GNS появилась в 2007 году и представляла собой графический интерфейс для Dynamips, написанный на Qt. В 2014 году проект был сильно переработан (по утверждениям разработчиков он сохранил в себе только 5% кода) и появился GNS3. Причём «3» это не совсем версия, а скорее название. Актуальная версия GNS3: 2.2. Теперь GNS3 позволяет запускать не только образы Dynamips, но и QEMU, а также взаимодействовать с IOU и другими виртуальными машинами. Приложение является «толстым», т.е. запускается непосредственно на машине, на которой находится. Для эмуляции устройств оно может использовать виртуальные машины, расположенные на этом же хосте или удалённо. Поддерживается работа в Linux, Windows и Mac OS X. Большим плюсом GNS3 является возможность использования тех же инструментов, что и для работы с реальным «железом»: PuTTY, SecureCRT, Wireshark и др.
GNS3 распространяется бесплатно по лицензии GNU GPL. Для того, чтобы его скачать необходимо зарегистрироваться на официальном сайте проекта: https://gns3.com, а затем отправить запрос(!) на получение дистрибутива, который рассматривается до 2(!) «business days». Редкий образчик сетевой бюрократии (интересно, что там проверяют в течении этого времени?). А вот об образах виртуальных машин придётся позаботится самостоятельно. Меньше всего вопросов вызывает использование образов, изъятых из VIRL. Но это юридические проблемы. Технически вместе с GNS3 можно запустить все эмуляторы, описанные выше. Здесь обязательно надо отметить, что GNS3 не ограничивается запуском эмуляторов Cisco. Он поддерживает целый ряд оборудования различных производителей: Juniper, MikroTik, Aruba (HPE), Fortinet и др. [6], соответственно позволяет строить гетерогенные сети. Помимо этого, GNS3 содержит несколько собственных сетевых примитивов: конечные узлы (Virtual PC Simulator – VPCS), коммутаторы и др. Часто можно встретить упрёк в адрес GNS3 о невозможности запуска эмуляторов коммутаторов. Но это не совсем так. Конечно, образ оригинального 2960 там и не запустить, но IOSvL2 поддерживается или можно подключить L2IOU.
Несмотря на то, что сам продукт бесплатный, на его сайте есть магазин, где приторговывают софтом (образами), учебными материалами и просто сувенирами.
3.3. iou-web → UNetLab → EVE-NG
Ну и наконец, на сладкое, у меня в обзоре осталась виртуальная лаборатория EVE-NG (The Emulated Virtual Environment – Next Generation). Её история началась с того, что в 2012 г. Andrea Dainese опубликовал неофициальный веб-интерфейс для IOL: iou-web. Затем он научил свою лабораторию работать с другими эмуляторами и таким образом в 2014 г. появилась UNetLab. А в 2017 Alain Degreffe создал форк проекта UNetLab, который назвал EVE-NG. У автора исходного UNetLab тоже были большие планы на развитие проекта и выпуск второй версии [3], однако постепенно он забросил эту идею: «Don’t ask for UNetLab2 and go with GNS3, VIRL or EVE-NG» — написал он по итогу. Таким образом, EVE-NG является единственной актуальной веткой продукта. Текущая версия: 2.0
EVE-NG по своему функционалу очень похожа на GNS3: почти такой же набор эмуляторов и поддержка аналогичных образов устройств (и точно так же поддерживается много производителей помимо Cisco). Однако, отличается форма распространения и интерфейс: EVE-NG представляет собой виртуальную машину, которую можно запустить у себя на рабочем месте или на выделенном сервере. Управление лабораторией осуществляется из браузера (в виртуальной машине, помимо прочего, встроен веб-сервер). Точно так же, как и GNS3, EVE-NG поставляется без образов и их необходимо раздобыть (в смысле «купить», конечно же) и загрузить в лабораторию самостоятельно. Использование веб-интерфейса делает лабораторию кроссплатформенной. Так же виртуальная машина по определению проста в развёртывании и избавлена от сложных программных зависимостей (распространяется в формате OVF – Open Virtualization Format и прекрасно воспроизводится в бесплатном (для частного использования) VMWare Player. Несмотря на изоляцию среды в виртуальной машине, для работы с ней тоже можно использовать PuTTY, SecureCRT, Wireshark и др.
EVE-NG поддерживает многопользовательскую работу с лабораторией. В том числе в разных ролях. Например, студент, собирающий лабу, и присматривающий за ним преподаватель.
EVE-NG распространяется под собственной лицензией в бесплатной однопользовательской и платной профессиональной или обучающей версиях [7]. Платная версия отличается ролевой моделью (в бесплатной есть только одна роль администратора), ограничением по числу узлов на лабораторию – 1024 (в бесплатной – 63) и др.
4. Бонус: удалённая лаборатория производителя
Помимо симуляторов и эмуляторов можно ещё воспользоваться удалённым доступом к железу. Cisco официально представляет очень интересные сервисы: https://Developer.cisco.com/ и https://dCloud.cisco.com. В этих сервисах есть набор песочниц (Sandbox), как виртуальных, так и аппаратных(!), позволяющих пощупать новое оборудование. Доступ к сервисам предоставляется по учётной записи Cisco. Вполне подойдёт учётная запись NetAcad.com (если вы уже регистрировались для доступа к CPT или курсам). Однако, количество доступных лаб будет зависеть от вашего статуса. Учётная запись партнёра или заказчика даёт больше возможностей, чем простого ученика.
Developer ориентирован на программистов, решающих задачи сетевой автоматизации, поэтому представленные топологии достаточно просты. Их задача – дать возможность «пощупать» API железа. Но несмотря на простоту топологий, в некоторых случаях такой инструмент может дать то, чего не даст виртуальная лаборатория. Например, мне вчера удалось познакомиться с командной строкой железного Cisco 9000 и веб-интерфейсом Cisco WLC 9800. А dCloud знакомит с новыми продуктами.
Подключение к лаборатории в большинстве случаев осуществляется через фирменный VPN-клиент от Cisco — AnyConnect. Т.е. ваша машина оказывается в сети песочницы. А это значит, что удалённую лабораторию вы можете объеденить… с локальным GNS3[8] или EVE-NG!
Заключение
В заключении хочу обобщить сказанное небольшой схемой (а то маленькая шпаргалка разрослась в большую портянку и это при том, что я очень поверхностно описал только самые главные особенности инструментов):
Изменения: добавил информацию о dCloud
Автор: Максим