4 January 2011

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

Cisco

Введение


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 не сохраняется. Это известная проблема, так что будьте осторожны.
Tags:ciscolinuxgns3dynamipsvirtualboxэмуляцияgentoodebianсертификацияccnaccnpccie
Hubs: Cisco
+28
24.2k 172
Comments 33