Виртуальная лаборатория для подготовки к сертификации Cisco на базе Linux

Введение


Cisco Logo
Многие при подготовке к сдаче экзаменов Cisco или просто изучения сетей для практических занятий предпочитают собрать и использовать лабораторию из реального железа. В таком случае одним из выходов является покупка подержанного цисковского железа на Ebay, но это вам обойдется не в одну сотню долларов.
Другие довольствуются использованием симулятора сети — Cisco Packet Tracer. Для подготовки к CCNA я использовал именно его. Он прост в использовании, удобен, не требует сильного железа и идеально подходит для начинающих. Но из-за ограниченности в функциях для более серьезного изучения он непригоден.
Если же вы не хотите тратить свои кровные $$ и получить устройства с реальными IOS-ами, то нужно смотреть в сторону использования эмулятора сети GNS3 на базе Dynamips. Введение в его использование уже есть на Хабре.

Я же расскажу как его можно соединить с хостовой ОС Linux (на котором он запущен) и серверами в VirtualBox-е. Это значительно расширяет наши возможности по созданию сложных топологий с использованием роутеров Cisco, серверов с различными сервисами в VirtualBox и выходом в Интернет через хостовую ОС Linux.



Описание топологии



Топология в GNS3
В данном примере я использовал сеть из трех соединенных между собой роутеров R1, R2 и R3, модели роутеров — Cisco 2651XM. R1 через облако C1 подсоединен к родному хосту Gentoo Linux (на котором запущен GNS3). Пусть его имя будет gbox. Через этот хост проводится синхронизация времени по ntp, закачка на роутеры дополнительных файлов по tftp и доступ в Интернет. Через облако С2 сеть подключена к виртуальной машине в VirtualBox. В данном случае это Debian с установленным FreeRADIUS для аутентификации и авторизации на роутерах и Syslog сервером для логов. Еще очень хорошо можно тестировать ACL-ы и настройки фаерволлов сканируя nmap-ом Debian из хостового Linux и наоборот. К слову, пакеты Debian-a прекрасно устанавливаются из репозитариев в Интернете через всю эту цепочку.

Настройка Linux-а с GNS3


Для того, чтобы это все это сельское хозяйство заработало, нам необходимо произвести следующие действия. Я использую Gentoo Linux, в котором командой для установки пакетов является emerge. У пользователей других дистрибутивов названия пакетов должны быть такие же.

Устанавливаем утилиту tunctl для создания и управления TUN/TAP виртуальными сетевыми интерфейсами:
gbox$ sudo emerge usermode-utilities

Устанавливаем утилиту brctl для создания и настройки сетевых мостов:
gbox$ sudo emerge bridge-utils

Создаем и конфигурируем виртуальные сетевые интерфейсы:
gbox$ sudo tunctl -t tap0 -u username
gbox$ sudo tunctl -t tap1 -u username
gbox$ sudo ifconfig tap0 192.168.1.3 netmask 255.255.255.0 up

tap0 — для связи с Linux-ом, на котором и запущен GNS3.
tap1 — для связи через мост с гостевыми машинами VirtualBox-а.
Привязываем их к облаку:
Добавление tap1 на облако C2

Связь с VirtualBox-ом осуществляется через мост br0, который состоит из виртуального Host-only интерфейса vboxnet0 и уже созданного tap1.
gbox$ sudo ifconfig tap1 0.0.0.0
gbox$ sudo ifconfig vboxnet0 0.0.0.0
gbox$ sudo brctl addbr br0
gbox$ sudo brctl addif br0 tap1
gbox$ sudo brctl addif br0 vboxnet0
gbox$ sudo ifconfig br0 192.168.3.4 netmask 255.255.255.0 up

Для связи всего этого хозяйства c хостовым Linux-ом на нем необходимо прописать маршрутизацию в используемые подсети:
gbox$ sudo route add -net 10.1.1.0/24 gw 192.168.1.1
gbox$ sudo route add -net 10.2.2.0/24 gw 192.168.1.1
gbox$ sudo route add -net 192.168.3.0/24 gw 192.168.1.1


Настройка роутеров


На всех роутерах тоже нужно прописать роутинг на подсети, ну или использовать протоколы динамической маршрутизации. Я использовал проприетарный цисковский протокол динамической маршрутизации EIGRP. Вот так выглядит настройка.
R1# conf t
R1(config)# router eigrp 1
R1(config-router)# passive-interface FastEthernet0/0
R1(config-router)# network 10.1.1.0 0.0.0.3
R1(config-router)# network 192.168.1.0
R1(config-router)# no auto-summary
R1(config-router)# exit
R1(config)# ip route 0.0.0.0 0.0.0.0 FastEthernet0/0

R2# conf t
R2(config)# router eigrp 1
R2(config-router)# network 10.1.1.0 0.0.0.3
R2(config-router)# network 10.2.2.0 0.0.0.3
R2(config-router)# no auto-summary
R2(config-router)# exit
R2(config)# ip route 0.0.0.0 0.0.0.0 Serial0/0

R3# conf t
R3(config)# router eigrp 1
R3(config-router)# passive-interface FastEthernet0/0
R3(config-router)# network 10.2.2.0 0.0.0.3
R3(config-router)# network 192.168.3.0
R3(config-router)# no auto-summary
R3(config-router)# exit
R3(config)# ip route 0.0.0.0 0.0.0.0 Serial0/0


Настройка Debian в VirtualBox


На Debian-е устанавливается сетевой адрес и шлюз по умолчанию:
debianbox$ ifconfig eth0 192.168.3.3 netmask 255.255.255.0 up
debianbox$ route add default gw 192.168.3.1


Финал


Вроде бы ничего не забыл. Теперь все должно прекрасно работать и связываться друг с другом. На базе данного примера можно строить сетевые топологии еще больше и сложнее. GNS3 позволяет эмулировать ASA, PIX, IPS, JunOS; простые Ethernet, ATM и Frame Relay комутаторы; позволяет перехватывать пакеты с помощью Wireshark. С помощью указанного ПО без лишних затрат можно подготовиться хоть к CCIE, можно изучать сетевые технологии в реальных условиях, обкатывать конфиги перед использованием в продакшн и много чего еще. Данную конфигурацию я использовал для самостоятельной подготовки к CCNA Security, который был успешно сдан. Требования к железу гуманные, к примеру, рассмотренная топология прекрасно работает на моем ноуте с Core2Duo и 2GB памяти.

Бонус


Для того, чтобы работал Интернет через хостовый Linux (wlan0 — внешний интерфейс).
echo 1 > /proc/sys/net/ipv4/ip_forward
gbox$ sudo /sbin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
gbox$ sudo /sbin/iptables -t nat -A POSTROUTING -o wlan0 -j LOG
gbox$ sudo /sbin/iptables -A FORWARD -i wlan0 -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT
gbox$ sudo /sbin/iptables -A FORWARD -i tap0 -o wlan0 -j ACCEPT

И еще, в процессе экспериментов было выяснено, что startup-config в маршрутизаторах Cisco 3745 не сохраняется. Это известная проблема, так что будьте осторожны.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 33

    +2
    Добро пожаловать на хабр и успехов в подготовке и сдаче экзаменов.

    По моему опыту, реально для сдачи экзаменов (кроме практического опыта) нужны прокачанная память и дампы. Ну и понимание того, что делаешь.
    Сдавать же без дампов никому не порекомендую. Т.е. теоретически это вполне реально, но, как правило, вопросы экзаменов сильно выходят за пределы области, с которой обычно сталкиваешься. И даже оригинальные цисковские курсы не сильно помогают — ответы там практически все есть, но так «запрятанные» в материале, что потом на экзамене мало шансов вспомнить.

    Потому — экзамколлешин и вперед. При нормальном опыте и хороших мозгах — спокойно можно сдавать по экзамену в день. Проверял в течении недели :)
      +1
      Главное чтобы мозги в трубочку не свернулись )
      По CCNA помню, что невменяемый вопросы были, но довольно мало. Плюс из них большинство решалось методом исключения. Экзамен сдавался без напрягов, при нормальном владении материалом.
      В CCNP жестче?
        +1
        Повторю — дело не столько в жесткости, сколько в том, что экзамены затрагивают диапазон тем, со значительной часть которых в обычной деятельности не пересекаешься. Т.е. практического опыта заведомо недостаточно и нужно специально готовиться. И если у тебя нет пары недель чисто на подготовку к каждому экзамену и лабы под рукой (а на динамипсе ты ни асы, ни каталисты не поднимешь), то единственным реальным вариантом становятся дампы.

        Но, повторюсь, они могут нормально «лечь» только на хорошее изначальное владение материалом — тупо зазубрить где и три сотни вопросов нереально — нужно понять вопросы и правильные ответы.
        А в сейловых экзаменах так действительно нужно вначале разобраться в цикле жизни оборудования, а потом уже начинать готовиться.
          +2
          Насчет ASA — поправлю, прикручивается к GNS3 с помощью Qemu.
          А насчет дампов — так они полезны только на финальном этапе подготовки к экзамену, за пару дней до сдачи. Они очень помогают понять пробелы в знаниях и их подтянуть. Потому что если готовиться ориентируясь только на дампы — мало что потом останется в голове.
            +1
            Может быть, мне хватает отсутствия эмуляторов свичей, чтобы не заморачиваться с gns3. Опять-же есть под рукой достаточно реального железа.
            Скорее думалось на тему создать сервис предоставления удаленного доступа к реальной лабе с реальным железом для подготовки. Для тех, кто к CCIE готовится, наличие лабы под рукой — требование обязательное.

            А по поводу роли дампов — согласен абсолютно.
              +2
              Подобные сервисы есть, за денюжку арендуют тебе оборудование через Интернет, и можешь делать любые лабы удаленно. Некоторые товарищи готовятся так к CCIE. Также существуют бесплатные варианты — Packet Life Community Lab, но попроще и нужно заранее резервировать себе место.
          0
          в сснп лучше. в старом. в новом пока полный бардак.
          0
          И кому нужные такие «специалисты»?
            +2
            Партнерам для получения специализаций и статусов.

            Как мера измерения компетентности специалиста экзамены реально стоят малого (даже CCIE, ибо наблюдал «прокачку» человека для экзамена лично). Разве что позволяют немного оценить его «неленивость». И то сильно условно.
              0
              если человек шибко умный и без сертификатов — тоже странно. Если такой умный, чего не сдаешь?
            0
            не согласен. всячески призывал и призываю своих студентов сдавать без дампов, т.к. и сам ими не пользуюсь. Если есть понимание и некоторый опыт — дампы не нужны.
              0
              Преподаватель и «боевой» сетевик — это несколько разные специфики работы. Если преподавателю по работе положенно постоянно изучать новых и разных нюансов работы разных семейств, то боевой сетевик, как правило, работает с узкой спецификой необходимого функционала и ограниченными семействами железа и протоколов. Ибо больше ему по работе не нужно, а время на изучение невостребованных функций ему особо никто выделять и оплачивать не настроен.

              Примерно: если я по работе объективно с IS-IS не сталкиваюсь и столкнуться не могу, то чтобы ответить на вопросы по этой теме мне нужно или потратить 20 минут на запоминание ответов в дампах, или, минимум, несколько дней на детальное изучение темы. С точки зрения здравого смысла — какой путь выгоднее мне и моему работодателю?
                0
                тут скорее вопрос совести. когда я беру на работу ccnp, я хочу чтобы он знал все, что требует от него сертификация. а то статус мы имеем, а это мы не знаем, это выучили по дампам, а вот рип мы настроим на ура, мучили его 2 года. Нафиг мне такой специалист?
                  0
                  Сертификат может быть необходимым условием для взятия на работу, но он в принципе не может быть достаточным.
                    0
                    а я где-то это оспаривал? Я гоорю о том, что сертификация — удобрный способ объявить о требуемых и наличествующих знаниях. знаете, как в вакансиях пишут:
                    CCxP or equivalent knowledge.
                    так вот если дампить — это ни разу не эквивалентные знания получатся. Стыдно человеку разбирающемуся в сетях хотя бы в общих чертах (тот же IS-IS больше и не надо) не понять настолько, чтобы сдать.
                      0
                      «Знания» и «умение решать задачи» — очень сильно не одно и то же.
                      Хороший специалист хорошо знает ту область, в которой работает сейчас и в общих чертах — обо всём остальном. При этом он в состоянии при необходимости быстро найти в Сети необходимую информацию, чтобы решить задачу из области, которую в данный момент не знает. И решить поставленную задачу.
                      Этот специалист — хороший и таких ценю.

                      «Специалист» же, который занимается чисто изучением всего диапазона тем и тупым зазубриванием кучи информации (потому как в реальной работе используется в среднем не более 50% информации, спрашиваемой на экзамене) — это не тот, который ценится именно как специалист. Опять же — кто будет оплачивать ему как курсы с литературой, так и время на всё это?

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

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

                      P.S. Это никак не должно подразумевать, что нормальное обучение можно считать «излишеством». Это нужно и важно для развития и систематизации знаний (у меня, емнип, было 6 недельных курсов по циске в разное время), но со сдачей экзаменов это пересекается крайне слабо…
                        0
                        тут вопрос в том, что человек, не имеющий общего понимания ширкоого количества технологий, и решение задач будет искать среди того багажа, которым владеет. В лучшем случае, будет спрашивать на форуме, мол хочу то и то, как реализовать.

                        и опять же, я это не отделяю от практики. Когда хорошая теоретическая база мешала практике? наоборот помогала.

                        Вот про отсутствие желания — да. Мы сами себя ограничиваем. Как в институте: «зачем мне физика, если я программист». Но это не значит, что хорошо и правильно выучивать наиболее используемую часть сертификационного курса, надеясь, что остальное никогда не пригодится, чем потратить день-другой на понимание (а зазубривание забудется. нужно понимание основ) тех несчастных мелочей (вроде IS-IS, который кстати убрали из нового NP), чтобы когда возникнет реальная задача, вспомнить (что-то вроде «напрочь не помню как конфигурить и подводные камни, но помню что такое там сделать можно») и сделать, конечно теперь уже погуглив.

                        В общем, мы в глубоком оффтопе, предлагаю закончить на этом :) Я отчасти даже рад дампам: пока будут дампящие — у меня, как у инструктора и инженера, будет работа.
          • НЛО прилетело и опубликовало эту надпись здесь
              –1
              К сожалению, тезис про 95% относится и к админам.
              Самое смешное, что многие даже не понимают, почему дампы — это плохо.
                +1
                Сдать CCNA тупо по дампам без понимания практически нереально. Кроме вопросов есть еще и лабки.
                  +1
                  лабы там примитвные, тоже есть в дампах…
                  0
                  Самое обидное что у нас в стране админом считает себя тот, кто умеет поменять картридж в принтере и поставить ОС и офис.
                    +1
                    Когда-то мне для моего отдела понадобилось «проранжировать» специалистов разного уровня (крупная ИТ компания), получилось что-то типа:
                    «технический специалист»(поменять катридж)->
                    «системный администратор»(пользовательские ОС и ПО)->
                    «системный инженер»(серверные ОС и системы)->
                    «системный архитектор»(ИТ инфраструктура в целом)

                    Так что в данной градуировке это таки да — админ :). Но не более.
                  0
                  А уже разрешили сдавать CCNA на русском? Интересно когда ожидать переизбытка неквалифицированных сетевиков.
                    +1
                    простите, а с каких пор CCNA показатель «квалифицированного сетевика»? Ж)
                      0
                      Это фигня — я пересекался с CCIE, прокачанным специально для статуса с самого нуля без практического опыта. Вот это реально грустно было.

                      Когда при начале кризиса встал вопрос о сокращении, то оставили CCNA с опытом и хоть каким-то соображением.
                      0
                      Уже запретили сдавать на русском.
                        +2
                        Так как в основном все материалы идут на английском — то и сдавать обычно легче на английском.
                          0
                          на русском сдавать можно, но это тупиковая ветвь, так как на русском доступен только 640-802 (CCNA) Все остальные экзамены не локализованы. На русский вопросы переводились Промт-ом с небольшой правкой, так что лучше на английском сдавать :)
                        0
                        Жалко, что проект Dynamips/Dynagen помер еще 2 года назад, а так все хорошо начиналось :)
                        Не удалось ли кому WLC сэмулировать? или какой-то из модулей типа CIDS, CUE (голосовая почта) и пр.? я разглядывал CIDS-модуль, по сути комп в формфакторе NM-модуля, интеловский чипсет, стандартная память, даже USB распаян, с CUE и модулем WLC та же ситуация, теоретически запустить это все на QEmu можно, но как…
                          0
                          я вроде видел на QEMU… пруф не нашел сходу
                          0
                          Большое спасибо за статью, как раз надо было прикрутить loopback линукса к GNS. Целый день вчера убил на это, ваша статья поправила мою ошибку.

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

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