Новый GNS3 — шаг вперед или прыжок на месте?



    GNS3 1.2


    В начале 2000х ситуация с эмуляторами сетевого оборудования выглядела достаточно плачевно.
    Но затем появился Dynamips и Dynagen (консольный фронтэнд к Dynamips), которые предоставляли возможность эмулировать некоторые маршрутизаторы Cisco IOS.
    Впервые Dynamips был представлен общественности в далеком 2005м году.
    Это была по сути разработка одного человека.
    Проект понемногу развивался, но был заброшен в 2007м, последняя версия от первоначального автора была с номером 0.2.8-RC2.
    Управление при этом было далеко от удобного: в текстовых конфигурационных файлах приходилось описывать всю топологию вручную.
    А затем, в 2007м году, Джереми Гроссман (Jeremy Grossman) начал разработку GNS3, в качестве своего дипломного проекта во время учебы в университете.
    Со временем GNS3 стал самым узнаваемым и популярным решением для эмуляции сетевого оборудования, в первую очередь для тех кто готовился к сдаче сертификационных экзаменов.
    И вот сейчас, в 2014м году, выходит эволюционная (с точки зрения разработчиков) версия GNS3 1.0.

    Но перед тем как приступить к тщательному изучению новой версии, ненадолго вернемся в прошлый год, в тот момент когда стартовала новая веха разработки GNS3.

    Как всё начиналось


    После того как суммарная цифра скачивания GNS3 достигла отметки в 10 миллионов, основатели GNS3 решили запустить кампанию по сбору средств на дальнейшее развитие проекта.



    Более 13 000 человек приняли участие в финансировании GNS3 и в итоге было собрано 550 000$.
    Первоначальная цель (в 35 000$) была достигнута всего за 3.5 часа!
    Это, безусловно, показывает огромнейший интерес к проекту среди пользователей, инженеров и всех заинтересованных в эмуляции сетевого оборудования.
    После успешного финансирования сразу же началась разработка новой версии.
    И затем первая альфа версия была представлена уже в апреле 2014го года.
    После череды альфа версий, в середине июля состоялся выпуск первой бета версии GNS3.
    Первоначально выпуск релиза (версии 1.0) был запланирован на декабрь 2014го, но он состоялся раньше — в конце октября.
    Затем оперативно были выпущены версии 1.1 и 1.2 (последняя вышла совсем недавно, в ноябре).
    И если версия 1.1 представляла из себя работу над ошибками и в основном вносила исправления, то версия 1.2 содержала внутри много нового.
    В этой версии изменилась (в лучшую сторону) поддержка VirtualBox, конвертер из отдельной утилиты вошел в состав GNS3 (что позволяет теперь открывать проекты GNS3 предыдущих версий).
    И самое бросающееся в глаза изменение — полностью перерисованный графический интерфейс.

    К чему пришли




    По словам основателя проекта, старая версия GNS3 была нагромождением различных патчей, модулей и остатков кода от разных разработчиков, поэтому было принято решение начать проект практически с чистого листа.
    Разработчики утверждают, что в процессе создания GNS3 1.0 использовалось менее 5% кода старой версии!
    Новая версия разрабатывалась с прицелом на то, что это будет фреймворк, в который можно будет легко добавлять поддержку решений от VMWare, HP, Juniper и других вендоров.
    При этом, планировалось сохранить дружественный интерфейс и увеличить отзывчивость работы, значительно повысить производительность программы.

    GNS3 по-прежнему остается платформой для экспериментов и тестов, для демонстраций и, естественно, для изучения сетевых технологий.
    Как и раньше, GNS3 является кроссплатформенным инструментом и работает под Windows, Linux и Mac OS X.

    Для того чтобы скачать последнюю версию GNS3, необходимо пройти регистрацию на официальном сайте (www.gns3.com) и создать аккаунт на портале GNS3 jungle.
    Регистрация в данный момент бесплатна.

    Ну а теперь переходим к самому интересному — к рассмотрению всех изменений в свежей версии GNS3.

    Все нововведения GNS3 версии 1.2




    В первую очередь был перерисован интерфейс, при этом все основные элементы остались на своих местах и много времени на поиски виртуальных железок не уходит.
    Больше всего изменений произошло в опциях, они были перегруппированы и теперь выглядят более логично.

    Если рассматривать изменения по существу, то можно выделить несколько крупных изменений и ряд мелких.

    Самые большие изменения коснулись коммутаторов и коммутации.
    Было заявлено целых три варианта — можно использовать простой «нарисованный» свич, который только умеет работать с вланами на самом базовом уровне, использовать MLS в виде карты расширения роутера (что уже позволяет чуть больше, например есть поддержка VTP, работа с 802.1q и STP), либо же использовать IOU L2 (где функционал максимально широкий, хотя и не без исключений).
    Именно интеграция IOU была обозначена самым большим нововведением в GNS3.

    Что вышло в итоге и были ли выполнены обещания разработчиков, мы посмотрим немного позднее.
    А пока остановимся подробнее на «новом» L3-коммутаторе, который был назван EtherSwitch.



    Если заглянуть во вкладку коммутаторы, то там появился «EtherSwitch router» — который на самом деле обычный роутер 3725, просто уже с набранными платами расширения и с новой пиктограммой под MLS-свич.
    То есть уже не нужно вручную набирать платы, можно чуть быстрее добавить небольшой коммутатор, но при этом выходит что на самом деле кроме поддержки IOU-L2 в направлении коммутации ничего больше и не появилось.

    Продолжим движение по новым фичам GNS3 и теперь направим внимание на изменения, которые произошли с конечными хостами.
    В самой свежей версии существует четыре различных способа добавления хостов в топологию.

    Если нужен просто конечный хост, для того чтобы просто ходили пинги — то можно использовать Virtual PC Simulator или сокращенно VPCS.
    Использовать VPCS крайне легко, нужно просто перетянуть такой объект на основную топологию, подключить как обычно к любому устройству и запустить.



    По правому клику на объекте VPCS, как и в случае любого другого устройства, появится возможность выбора консольного подключения.



    Как и предлагается после ввода «?» можно будет получить подробную справку, по использованию и конфигурированию такого виртуального хоста.
    Всё настраивается довольно очевидно, например, задание IP-адреса и просмотра различных параметров можно увидеть на скриншоте ниже.



    Возвращаясь к различным способам добавления конечных хостов, вторым способом является использование систем виртуализации Qemu или VirtualBox.
    Оба варианта достаточно неплохо поддерживаются в GNS3.

    Третий способ — это просто добавление еще одного роутера, но с отключенной маршрутизацией (команда no ip routing в режиме глобальной конфигурации).

    И наконец четвертый способ — это использование своего собственного ПК и добавление его в виртуальную сеть GNS3.

    Двигаясь по внедренным фичам далее, стоит отметить еще два аспекта на которых делают ставку разработчики — это коммьюнити портал GNS3 Jungle и GNS3 Assist.

    GNS3 Jungle — это ресурс, чем-то напоминающий социальную сеть для тех, кто интересуется сетями и эмуляцией различного оборудования.



    Это большой форум, призванный собрать и объединить сообщество пользователей GNS3.
    Присутствует система рейтинга и начисления баллов за различные действия — например, за наличие той или иной сертификации Cisco или Juniper, за вклад в проект GNS3 (тестирование, баг репортинг, участие в кампании по сбору средств).
    В данный момент эти баллы и очки являются лишь неким показателем вовлеченности конкретного человека в проект. В будущем предполагается покупка чего-либо в специальном магазине за эти самые заработанные баллы.

    Если же рассмотреть GNS3 Assist, то это сервис, который предоставляет различную поддержку.



    Проект GNS3 решил пойти по пути опенсорс проекта и предоставлять платную поддержку всем, кто в ней заинтересован.
    Это могут быть энтерпрайзные клиенты, коммерческий сектор или же обычные пользователи GNS3.
    Разработчики утверждают, что заработанные таким образом средства будут использованы для укрепления сообщества GNS3 пользователей и способствовать дальнейшему совершенствованию проекта в целом.
    Вместе с поддержкой предоставляется и доступ на специальный раздел форума, содержащий различные готовые топологии и лабы, а так же к базе знаний по проекту GNS3 и по некоторым сертификационным экзаменам.

    На этом крупные изменения заканчиваются и теперь стоит рассмотреть, более мелкие, но всё равно заметные изменения.

    Незначительные изменения GNS3


    Все небольшие изменения в основном коснулись юзабилити и вошли в ряд удобных мелочей.

    Например, появилась возможность добавлять сразу несколько однотипных устройств сразу.
    Для этого в процессе «драг энд дропа» нужно оставлять зажатой клавишу shift.
    Сразу после отпускания появится окно, где из выпадающего списка можно будет выбрать количество одинаковых устройств, после этого они сразу разместятся в основном окне топологии.
    Это удобно в тех случаях, когда нужно сразу добавить, например, 5-6 маршрутизаторов. Теперь это можно сделать за один раз.

    Была добавлена поддержка текстовых инструкций для лаб, при этом происходит автоматическое открытие файлов с именем «instructions.*» из каталога выбранного проекта.
    Так же, открыть такой файл возможно в любой момент, используя меню «Help» — «Lab instructions».

    Появилась кнопка «console connect to all devices», которая позволяет одним нажатием вызвать сразу консольные подключение ко всем активным устройствам.
    Если при этом в качестве клиента используется не PuTTY, а скажем SecureCRT, то каждое подключение откроется в своей вкладке.

    В комплект с новым GNS3 теперь входит «SolarWinds Response Time Viewer».


    Это отдельная бесплатная утилита, которая принимает на вход сохраненные дампы трафика (в различных форматах) и проводит ряд действий.
    Парсится и анализируется время отклика приложений, время отклика сети и объемы переданных данных каждым приложением.
    И затем все результаты выводятся в наглядной таблице.
    Утилита так же покажет, какие приложения и ресурсы (веб-сайты и соцсети) были обнаружены в анализируемом дампе.

    Так же, стоит отметить и тот факт, что в новом GNS3 используется другой формат файла топологии (теперь это .gns3 вместо прежних .net файлов), который полностью несовместим с предыдущей версией GNS3, из-за чего все ранее собранные лабы уже не запустятся.
    К счастью, достаточно быстро появилось решение в виде отдельного конвертера (http://gns3-converter.readthedocs.org/en/latest/usage.html), а в текущей версии конвертер был интегрирован и теперь при попытке открыть проект старой версии будет предложено провести конвертацию.
    Стоит подчеркнуть, что не всегда конвертация происходит гладко: если использовались различные объекты типа «cloud», то возможно придется вносить много исправлений в ручную, уже после того как пройдет процесс конвертации.

    На этом все изменения заканчиваются, и теперь посмотрим, как построен процесс взаимодействия с IOU.

    Интеграция IOU в новый GNS3


    Несмотря на заявленную разработчиками полную интеграцию IOU, сразу после установки ничего подобного не наблюдается.
    Придется немного поработать напильником и всё собрать самим.
    Для достижения цели (появления IOU в GNS3) потребуется что-нибудь из систем виртуализации (нам рекомендуют использовать только VirtualBox, но как увидим, это не обязательно), подготовленная разработчиками виртуальная машина и, собственно, сами прошивки IOU.

    Перед тем как использовать IOU, стоит помнить о жестких лицензионных ограничениях.
    Прочитать более подробно про IOU можно например здесь.

    Приступим к подключению IOU, и первым шагом будет разворачивание виртуальной машины, образ которой находится по адресу http://sourceforge.net/projects/gns-3/files/IOU%20VMs/
    Несмотря на то, что нам настоятельно рекомендуется использование только VirtualBox'a, можно импортировать эту виртуальную машину и в VMWare Workstation, при этом результат будет такой же.



    Единственное, на что здесь нужно будет обратить внимание, это тип виртуального сетевого интерфейса. Оптимально использовать «host-only» вариант, для того чтобы GNS3 смог без проблем обращаться к этой виртуальной машине.
    После того как виртуальная машина тем или иным способом будет развернута, нужно, используя браузер, на основной системе перейти по ссылке вида http://<IP-адрес, который получила виртуальная машина>:8000/upload.



    Появится простая веб-форма, которая позволить загрузить прошивки IOU на виртуальную машину (сама виртуальная машина их не содержит).

    После добавления каждой прошивки, стоит куда-нибудь скопировать полный путь, который будет выглядеть как «/home/gns3/GNS3/images/название_l2 | l3_образа.bin».
    Эта информация пригодится в дальнейшем.

    На этом все подготовительные действия завершены, и можно уже переходить к настройкам в самом GNS3.
    Для этого нужно перейти в меню «Edit» и выбрать пункт «Preferences».



    В опциях нас будет интересовать пункт «GNS3 Server», а точнее вкладка «Remote Servers», именно здесь нужно добавить IP-адрес свежесозданной виртуальной машины.

    После этого, нужно спуститься в опциях чуть ниже до раздела «IOU Devices», где после нажатия кнопки «New» нужно будет заполнить все поля.





    В поле «Name» указать имя прошивки (оно будет затем отображаться в собранных проектах), поле «IOU image» (те самые полные пути к каждому образу, которые нужно было куда-нибудь сохранить) и не забыть выбрать тип прошивки — L2 или L3.
    Естественно, сделать это придется для каждого образа, загруженного ранее на виртуальную машину.

    И последнее: осталось перейти в раздел опций «IOS on UNIX», где необходимо указать путь к файлу лицензии IOU (этот файл должен хранится локально, на том же хосте, где установлен сам GNS3).



    На этом процесс подключения IOU заканчивается, и наряду с классическими устройствами GNS3, появляется возможность добавлять IOU L3 или L2 устройства из панелей «Routers» или «Switches» соответственно.

    Но и здесь не всё так хорошо, и удобно, как может показаться.

    Если попытаться соединить вместе любое IOU устройство и классический GNS3 роутер, то появится сообщение об ошибке
    «Server 127.0.0.1 cannot communicate with server 192.168.10.128, most likely because your local server host binding is set to a local address».

    Помним, что когда происходила интеграция IOU в GNS3, нужно было добавлять IP-адрес виртуальной машины, которая, собственно, и содержит в себе IOU.

    Если же, используя объект «Cloud», попытаться вывести IOU например в локальную сеть, то возникнет другая ошибка
    «This device can only be connected to a cloud on the same host».

    В итоге, несмотря на обещанную интеграцию IOU в GNS3, на деле предоставлена возможность только соединять различные IOU устройства между собой.

    Но был найден выход из подобной ситуации.
    В процессе добавления «облака» на рабочий проект появляется окно, где на выбор предлагается локальный сервер либо виртуальная машина с IOU на борту.



    Соответственно, если выбрать в качестве сервера виртуальную машину, то в уже в настройках этого «облака», появится возможность выбрать интерфейс eth0, что в свою очередь позволит подключить его к любому IOU устройству.



    После чего, уже посредством системы виртуализации, будь то VirtualBox или VMWare, появится возможность объединять различные сетевые устройства — GNS и IOU.

    Что в итоге


    Путь разработчиков к версии 1.2 занял почти 7 лет, за это время было выпущено более 40 релизов.
    Был ли достигнут результат и стала ли новая версия эволюционной, вероятно, покажет время, так как разработка на этом не закончена.
    В ближайшем времени в GNS3 ожидается полная поддержка VMWare, облачные фичи и поддержка решений от Arista (vEOS).

    Целостную картину, раскрывающую дальнейшее развитие проекта, можно посмотреть по этому адресу https://community.gns3.com/community/software/ideation/roadmap

    А ознакомиться с различной официальной документацией проекта GNS3 можно здесь https://community.gns3.com/community/support/documentation

    Естественно, новый GNS3 даже с интеграцией IOU не позволяет использовать все существующие сетевые технологии.
    Скорее всего, не удастся поработать с EtherСhannel, dynamic arp inspection, DHCP snooping, QinQ и другими вещами.

    В свою очередь, компания Cisco Systems уже давно выпустила такие эмуляторы как IOS-XE (работает в VMWare и KVM), NX-OS (работает в среде VMware ESX/ESXi) и виртуальный IOS-XR, который был назван XRv (его можно запускать даже в VirtualBox или Qemu).
    На эту тему уже была публикация.
    Но недавно вышло нечто по-настоящему новое.

    Про VIRL


    Внимательные читатели, наверняка, заметили логотип VIRL в самом начале статьи.
    Несмотря на то, что статья в первую очередь про эмулятор GNS3, обойти тему VIRL стороной было нельзя.



    История VIRL началась с того, что на конференции CiscoLive было заявлено о создании специальной платформы, которая позволит виртуализировать различное оборудование компании Cisco Systems и собирать всевозможные лаборатории.
    Затем последовали первые подробности.
    Оказалось, что планируется три различные редакции VIRL.
    Персональная версия — для различных исследований и обучения, ограниченная 15 узлами.
    Отдельная версия CML (Cisco Modeling Labs), которая в свою очередь будет фокусироваться на корпоративном сегменте, позволяя виртуализировать сотни, а в будущем и тысячи различных узлов.
    И наконец, бесплатная версия Devnet All-in-one, для тех кто хочет посмотреть на новые IOS роутеры, это самая лимитированная версия, состоит из всего трех роутеров.

    И вот, первого декабря 2014го года состоялся ожидаемый многими выход VIRL от Cisco.
    Речь идет про персональное решение, для тех кто изучает, тестирует и моделирует различные условия.
    Все подробности и цены можно посмотреть на официальном ресурсе http://virl.cisco.com/about-virl-2/

    Стоить отметить, что VIRL — это ни разу не IOU.
    VIRL является новой платформой для создания и моделирования различных лабораторий.
    IOU же в свою очередь является эмулятором, который позволяет запускать только определенные прошивки, которые были разработаны именно под него.
    VIRL на этом фоне выглядит многообещающим и по-настоящему прогрессивным.
    Но и здесь не обошлось без неприятных недостатков.
    Проблема в том, что в данный момент L2 коммутация не реализована и пока нет точных данных будет ли она вообще добавлена в VIRL.

    DevNet All-in-One


    И в завершение рассмотрим виртуальную машину DevNet All-in-One.
    Скорее всего, бесплатная виртуальная машина от Devnet — это и есть ограниченная версия VIRL с максимально порезанным функционалом.
    All-in-One представляет собой один OVA файл, который можно бесплатно скачать с https://developer.cisco.com/site/onepk/downloads/all-in-one-vm/index.gsp
    Затем эту виртуальную машину нужно будет импортировать в VMWare или VirtualBox
    После загрузки обнаружится Ubuntu Linux, для входа нужно использовать логин cisco и пароль cisco123.



    На рабочем столе расположены как несколько файлов с документацией, так и ярлык «Start 3 Node», который и запускает те самые три маршрутизатора.

    Сразу же после этого откроется три терминала, которые и предоставят доступ к командной строке маршрутизаторов.



    Разумеется, рассматривать виртуальную машину «All-in-One» можно исключительно как раннюю, возможно, даже демо версию VIRL, для ознакомления, например, с IOSv версии 15.4.



    Три роутера, которые при этом запускаются, уже слегка сконфигурированы — есть адресация на нескольких интерфейсах и настроен telnet.



    Ну и наконец, то, что подтверждает, что перед нами все таки VIRL.



    Ну а здесь можно посмотреть на саму утилиту, которая используется для запуска виртуальных роутеров.



    Окончательные выводы




    Мы посмотрели и на историю развития эмулятора GNS3 и на новейшие разработки от Cisco.
    Безусловно, не всё появляется сразу, но главное — это то, что процесс развития и эволюционирования различных платформ для эмуляции не стоит на месте, и вполне возможно, что в будущем мы получим единую среду, где будет возможно запускать и строить стенды, содержащие оборудование самых разнообразных вендоров.
    Метки:
    Pentestit 898,23
    Информационная безопасность
    Поделиться публикацией
    Комментарии 13
    • +6
      Долгих лет проекту, что еще сказать…
      • 0
        спасибо за хороший обзор, а появилось ли что-нибудь что может эмулировать CoS очереди на интерфейсах? сейчас вроде все вендоры в виртуальные среды переезжают… должно уже что-то родиться)
        • +2
          VIRL — 15 нодов, без L2, 200$/год. Очень дорого, как по мне.
          Новый GNS3 использую постоянно. Работает, как часы.
          P.S. IOU устройства с IOS роутерами можно соединять с помощью Ethernet Switch. Только непонятно, зачем это вообще делать. Топология полностью на IOU работает на порядок быстрее.
          • +1
            В первую очередь было необходимо связывать IOU с различными виртуальными машинами.
            Проверил через Ethernet Switch, тоже вылетает сообщение об ошибке.
            Возможно, в следующих версиях как-то поправят такую ситуацию.
          • 0
            VIRL по первым впечатлениям смотрится очень интересно. Пока только смущает отсутствие L2. Но судя по комментариям в западной блогосфере это исправят в ближайшее время.

            На фоне выхода VIRL притягательность к GNS3 на моя взгляд все таки упадет. Пока я вижу фишку GNS3 только в мультивендорности, но пока там выбор не велик.
            • 0
              Также VIRL уже подерживает IOS-XR ( ASR9k/CRS), IOS-XE( ASR1k), NX-OS ( nexus), а дальше и другие виртуальные продукты Cisco ( vASA например)
          • 0
            Очень странно, что на таком ресурсе не вспомнили про вот это
            • 0
              Ничего удивительного. Мало того, что в сети про них почти ничего нет. Так и на самом сайте нужно ещё догадаться, как узнать, что вообще это за хреновина.
              • 0
                Это проект того самого девелопера, который в своё время создал веб фронтенд для IOU.
                Теперь разработка iou-web завершена, и разрабатывается только UNetLab.
                Просто пока это ранняя бета версия.
                • 0
                  А дизайн сайта вам разве не показался знакомым? А то я помню, где его видел. Например, routereflector.com — дом iou-web
                  • 0
                    Нас такие вещи не останавливают :)
                    Я уже сам эту штучку у себя развернул. Товарищ мой запустил все поддерживаемые «железки». Таки работает.
                    Скажем так, этому продукту я рад больше чем VIRL-у.
                    • 0
                      И асу удалось запустить? Я вот что-то воюю — с асой не получается. если вручную выполнить в консоли:
                      qemu-system-i386
                      /usr/bin/qemu-system-i386 -machine type=pc-1.0,accel=tcg -serial mon:stdio -nographic -nodefconfig -nodefaults -rtc base=utc -no-shutdown -boot order=c -hdachs 980,16,32 -smbios type=1,product=asa5520 -icount 1 -smp 1 -m 1024 -name ASA -device i82559er,netdev=net0,mac=52:00:00:03:00:00 -netdev tap,id=net0,ifname=vunl0_3_0,script=no -device i82559er,netdev=net1,mac=52:00:00:03:00:01 -netdev tap,id=net1,ifname=vunl0_3_1,script=no -device i82559er,netdev=net2,mac=52:00:00:03:00:02 -netdev tap,id=net2,ifname=vunl0_3_2,script=no -device i82559er,netdev=net3,mac=52:00:00:03:00:03 -netdev tap,id=net3,ifname=vunl0_3_3,script=no -hda /opt/unetlab/tmp/0/Test_Lab/3/hda.qcow2 -cdrom /opt/unetlab/tmp/0/Test_Lab/3/cdrom.iso

                      то в консоли есть вывод с асы, но по сети к ней не достучаться, если выполнить через враппер:
                      qemu_wrapper
                      /opt/unetlab/wrappers/qemu_wrapper -T 0 -D 3 -t ASA -d 0 -F /usr/bin/qemu-system-i386 — -machine type=pc-1.0,accel=tcg -serial mon:stdio -nographic -nodefconfig -nodefaults -rtc base=utc -no-shutdown -boot order=c -hdachs 980,16,32 -smbios type=1,product=asa5520 -icount 1 -smp 1 -m 1024 -name «ASA» -device i82559er,netdev=net0,mac=52:00:00:03:00:00 -netdev tap,id=net0,ifname=vunl0_3_0,script=no -device i82559er,netdev=net1,mac=52:00:00:03:00:01 -netdev tap,id=net1,ifname=vunl0_3_1,script=no -device i82559er,netdev=net2,mac=52:00:00:03:00:02 -netdev tap,id=net2,ifname=vunl0_3_2,script=no -device i82559er,netdev=net3,mac=52:00:00:03:00:03 -netdev tap,id=net3,ifname=vunl0_3_3,script=no -hda "/opt/unetlab/tmp/0/Test_Lab/3/hda.qcow2" -cdrom "/opt/unetlab/tmp/0/Test_Lab/3/cdrom.iso"

                      то сеть случается, но консоль туда не отображается.
                      В общем если кто смог побороть ASA в UNetLab — просьба поделиться рецептом.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое