System administration
Network technologies
26 December 2012

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

Tutorial


Мы немножко нарушим хронологию цикла Сети для самых маленьких.
Компания ЛифтМиАП разрастается, покупая новые филиалы по всей стране. Поэтому следующая наша статья будет посвящена технологиям VPN и подключению удалённых офисов к центральному. Будут обсуждаться такие темы, как GRE, IPSec и DMVN. Тут Packet Tracer уже едва ли может нам чем-то помочь.
Пришло время для больших игр и перехода на профессиональное ПО для симулирования сети. Да и темы, положа руку на сердце, уже не для самых маленьких.

На выбор в сегодняшнем меню:

  • GNS3 — Graphical Network Simulator
  • IOU — IOS on UNIX


Под катом аргументы за и против и частичный перенос топологию из РТ в GNS, а сначала традиционное видео, на этот раз умеренной длины.





GNS или IOU? IOU или GNS? Начнём с IOU, потому что его мы использовать не будем.

IOS On UNIX



Как видно из названия — ставится поверх UNIX. Раньше это был только Solaris, теперь же поддерживается и Linux.
Самые существенные его плюсы:
1) Практически полноценная поддержка как L3, так и L2. Этот эмулятор используется при сдаче лабораторных экзаменов CCIE.
2) Низкие требования к ресурсам ПК. Точнее к CPU. Памяти тоже надо немало.
3) Нет ограничений по платам и интерфейсам. В настройках вы просто указываете сколько и чего вы хотите.

Минусы:
1) Самое главное — это проприетарный софт, который официально не распространяется вообще никак. В торрентах существуют образы L2IOU, L3IOU, но это незаконно.
Вообще ходит легенда, что на сайте cisco одно время было написано:

Cisco IOS on Unix is a tool intended for internal use only. Distribution of IOU images to customers or external persons, or discussion of IOU with customers or external persons, is prohibited. Don’t do it or we’ll have to come and kill you.

Это основная причина, по которой мы отказались от идеи использования IOU в нашем цикле.

2) Установка и настройка IOU не отличается простотой. Нужно обладать недюжим спокойствием и кое-каким опытом работы в никсах, чтобы разобраться с топологиями, файлами настройки и сохранением конфигурации устройств.
Тоже немаловажная причина — нам бы с меньшими жертвами осуществить переход и не отпугнуть “самых маленьких”.

3) Нет графического интерфейса.

В общем это годная утилита для беспринципных тру ИТшников. Если вам нужна лаба из 20+ устройств или надо поработать с QinQ, Rapid PVST (и прочие L2-технологии) или хочется всерьёз заняться Tshoot, то это для вас.

Graphical Network Simulator



Наш выбор. Имеет два серьёзных недостатка:

— Сильно требователен к CPU и памяти. 10 маршрутизаторов уже всерьёз нагрузят ПК. Использование процессора можно снизить с помощью механизма Idle PC. Без этого и 3-4 с трудом бы, пожалуй, пошли.
— Очень слабо поддерживает функции L2. Есть только подобие коммутаторов, на которых можно максимум настроить Access/Trunk порты и свичовые платы для маршрутизаторов, L2-функционал которых также очень ограничен.

Необходимо ещё где-то раздобыть образы IOS. GNS — это практически виртуальный маршрутизатор и для запуска ему также необходимо ПО, которым и является IOS.
Взять его можно с сайта cisco, если у вас там есть аккаунт с необходимыми правами, скачать с имеющегося у вас оборудования или другой всем известный способ.

Зато при этом GNS имеет графический интерфейс (технически это и есть GUI для Dynamips), что сильно облегчает создание виртуальных лабораторий.

Компьютер можно подключить в реальную сеть в качестве виртуального маршрутизатора.

Установка и подготовка к работе


Скачать можно тут. Для Ubuntu, Debian GNS доступен из репозитария.

apt-get install gns3

После установки выполняем начальную настройку.

Полагаем, что образы у вас уже есть. Добавим их:





Автоматически определяется модель маршрутизатора.

Обратите внимание на поле IDLE PC. Пока не трогаем.
Save.

При создании нового проекта вам предлагается ввести название и параметры.



Самое главное тут не забудьте поставить галку «Save nvram and other disk files», иначе после перезапуска приложения у вас не сохранится конфигурация.

Перетаскиваем маршрутизатор на рабочую площадку. Естественно, берём ту модель, для которой есть образ. Ошибок быть не должно.
Жмакаем сверху на кнопку . Обратите внимание на то, как возросла нагрузка на CPU: . Теперь волнение нужно успокоить. Для этого выбираем в контекстном меню Idle PC.


Именно этот механизм позволяет оптимизировать использование ресурсов процессора.

ПК вычисляет несколько значений и предлагает вам целый их список. Рекомендуется выбирать значения со знаком *. Как только они применяются, загрузка CPU падает



Если вдруг не получилось, итерируем до тех пор, пока не достигнем желаемого.
Теперь самое удачное значение перепишите на листочек, откройте окно управления образами Edit->IOS Image and hyervisors и заполняете то самое поле IDLE PC. Теперь при следующем запуске после загрузки IOS GNS не должен отожрать всё процессорное время.

Всё готово для подключения.
У GNS есть стандартные средства для этого:



По умолчанию он использует приложение xTerm, которое, наверняка, есть почти в любом дистрибутиве.
Признаться, у меня почему-то он не работает — нельзя набирать символы. В настройках терминальных программ можно выбрать другое приложение, например, Konsole — оно у меня заработало.



Для оболочки Gnome (Unity) при настройке терминала можно выбрать родной терминал, несмотря на то, что его нет в списке по-умолчанию. Достаточно вставить следующую строчку в поле Preconfigurated terminal commands:

gnome-terminal -t %d -e 'telnet %h %p' >/dev/null 2>&1 &

Но на самом деле вы можете пользоваться любым другим терминальным приложением, к которому привыкли. Более того, вы можете подключаться даже с другого компьютера в сети, потому что выполняется это командой:
telnet a.b.c.d 2000

Что такое telnet — понятно, a.b.c.d — адрес компьютера (если вы подключаетесь с этого же ПК, то адрес 127.0.0.1), 2000 — номер TCP порта, выделенного для этого устройства (как правило начинается с 2000 для таких программ). У каждого маршрутизатора будет свой.
Номер порта можно посмотреть так:



или так



Всё готово:



Перенос конфигурации из РТ в GNS


Тут кроется дьявол. В GNS у нас максимум 3 интерфейса: FE0/0, Fe0/1 и можно добавить ещё плату с FE1/0, а в лабе на РТ мы иногда используем FE1/1. Поэтому нельзя просто скопировать и вставить — местами придётся переработать конфигурацию.

Схема, которую мы будем воспроизводить:



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

Добавляем маршрутизаторы. Будем работать, например, с 2691-ми.



Названия устройств ограничены в используемых символах, поэтому мы добавим им описания:



Также добавляем коммутаторы: один для «Балаган Телеком», второй для «Филькин сертификат».



Прежде чем, запускать, добавим в МСК плату.



В списке только одна плата с FE портами. Мы вполне могли бы добавить платы с последовательными портами, но зачем?

Настроим так называемые коммутаторы. Для этого доступен только GUI.

Удаляем все порты.
Добавляем несколько новых, но в качестве номера влана указываете 0, а тип порта dot1q. Это означает транковый порт, который пропускает все вланы.



То же и со вторым.

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

Выбрать нужно Manual, тогда можно указывать конкретные порты.



А можно вообще в настройках указать, чтобы всегда выбиралось только Manual.







Если до этого не подбирали значение Idle PС для этого образа, лучше запустить одно устройство и сделать это.
Запускаем остальные. Можно можно по очереди, можно все разом, если поставили паузу между запусками в настройках.



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

Конфигурацию для маршрутизатора в Москве можно просто скопировать — с интерфейсами всё в порядке.

Два замечания:
  • Будьте аккуратнее при копировании команды
  • После вставки конфигурации интерфейсы остаются в состоянии shutdown.

Включаем все интерфейсы:
msk-arbat-gw1(config)#interface fastEthernet 0/0
msk-arbat-gw1(config-if)#no shutdown

И сохраняем конфигурацию:
msk-arbat-gw1#write memory
Building configuration…
[OK]

При настройке Красноярской циски нам нужно иметь ввиду разницу в интерфейсах и поменять их номера. (c FE1/0 на FE0/0 и c FE1/1 на FE0/1).
После включения интерфейсов, сразу же устанавливаются отношения соседства OSPF:
krs-stolbi-gw1(config)#int fa0/0
krs-stolbi-gw1(config-if)#no sh
%LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up1
%OSPF-5-ADJCHG: Process 1, Nbr 172.16.255.1 on FastEthernet0/0.8 from LOADING to FULL, Loading Done
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

После того, как настроили все маршрутизаторы проверим работу OSPF:
msk-arbat-gw1#sh ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface
172.16.255.112 1 FULL/DR 00:00:36 172.16.2.197 FastEthernet1/0.911
172.16.255.80 1 FULL/BDR 00:00:34 172.16.2.130 FastEthernet0/1.8

msk-arbat-gw1#sh ip route
Codes: C — connected, S — static, R — RIP, M — mobile, B — BGP
D — EIGRP, EX — EIGRP external, O — OSPF, IA — OSPF inter area
N1 — OSPF NSSA external type 1, N2 — OSPF NSSA external type 2
E1 — OSPF external type 1, E2 — OSPF external type 2
i — IS-IS, su — IS-IS summary, L1 — IS-IS level-1, L2 — IS-IS level-2
ia — IS-IS inter area, * — candidate default, U — per-user static route
o — ODR, P — periodic downloaded static route

Gateway of last resort is 198.51.100.1 to network 0.0.0.0

172.16.0.0/16 is variably subnetted, 17 subnets, 3 masks
O 172.16.255.80/32
[110/11] via 172.16.2.130, 01:32:53, FastEthernet0/1.8
O 172.16.2.160/30 [110/20] via 172.16.2.130, 01:32:53, FastEthernet0/1.8
O 172.16.255.96/32
[110/12] via 172.16.2.197, 01:32:53, FastEthernet1/0.911
O 172.16.255.112/32
[110/2] via 172.16.2.197, 01:32:53, FastEthernet1/0.911
C 172.16.2.128/30 is directly connected, FastEthernet0/1.8
C 172.16.255.1/32 is directly connected, Loopback0
C 172.16.2.196/30 is directly connected, FastEthernet1/0.911
O 172.16.2.192/30
[110/11] via 172.16.2.197, 01:32:53, FastEthernet1/0.911
C 172.16.2.32/30 is directly connected, FastEthernet0/1.7
C 172.16.2.16/30 is directly connected, FastEthernet0/1.5
C 172.16.4.0/24 is directly connected, FastEthernet0/0.102
C 172.16.5.0/24 is directly connected, FastEthernet0/0.103
C 172.16.6.0/24 is directly connected, FastEthernet0/0.104
C 172.16.0.0/24 is directly connected, FastEthernet0/0.3
C 172.16.1.0/24 is directly connected, FastEthernet0/0.2
C 172.16.2.0/30 is directly connected, FastEthernet0/1.4
C 172.16.3.0/24 is directly connected, FastEthernet0/0.101
198.51.100.0/28 is subnetted, 1 subnets
C 198.51.100.0 is directly connected, FastEthernet0/1.6
S* 0.0.0.0/0 [1/0] via 198.51.100.1

Путь в Хабаровск лежит через Владивосток:
msk-arbat-gw1#tracer 172.16.255.96

Type escape sequence to abort.
Tracing the route to 172.16.255.96

1 172.16.2.197 860 msec 64 msec 4 msec
2 172.16.2.193 412 msec 56 msec *

Порвём этот линк:
msk-arbat-gw1(config)#int fa1/0.911
msk-arbat-gw1(config-subif)#sh

*Mar 1 00:57:43.995: %OSPF-5-ADJCHG: Process 1, Nbr 172.16.255.112 on FastEthernet1/0.911 from FULL to DOWN, Neighbor Down: Interface down or detached
msk-arbat-gw1#

И проверим сервис:
msk-arbat-gw1#tracer 172.16.255.96

Type escape sequence to abort.
Tracing the route to 172.16.255.96

1 172.16.2.130 4 msec 12 msec 12 msec
2 172.16.2.162 28 msec 20 msec *

Всё работает через Красноярск.
msk-arbat-gw1(config)#int fa1/0.911
msk-arbat-gw1(config-subif)#no sh
msk-arbat-gw1(config-subif)#
*Mar 1 00:59:21.179: %OSPF-5-ADJCHG: Process 1, Nbr 172.16.255.112 on FastEthernet1/0.911 from LOADING to FULL, Loadingping 172.16.255.96

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.255.96, timeout is 2 seconds:
!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/28/60 ms
msk-arbat-gw1#tracer 172.16.255.96

Type escape sequence to abort.
Tracing the route to 172.16.255.96

1 172.16.2.197 8 msec 16 msec 12 msec
2 172.16.2.193 12 msec 8 msec *

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

С помощью GNS можно легко снимать дампы трафика. Для этого достаточно Wireshark. Но под линуксом у меня почему-то не получилось запустить.

Для этого нужно сделать всего лишь следующее:
1) кликнуть правой кнопкой на линк между двумя устройствами
2) Выбрать capture в контекстном меню. Если после этого запустился вайршарк, его можно закрыть — в реальном времени он не собирает данные. Чтобы он не запускался в будущем, можно убрать галочку в настройках:



3) Выполнить запланированные действия.
4) Из контекстного меню линка выберите Start Wireshark.

В открывшемся окне будут все пакеты, которые вы хотели отловить.

ХД


Существуют и другие сетевые симуляторы, которые не охвачены данной статьёй.

Например, Bosson, который просит вменяемых денег за свой продукт для подготовки к сдаче CCNA/CCNP. К сожалению, не тестировал его, не могу сказать ничего о его качестве.

В русскоязычном сегменте совершенно незаслуженно обделён вниманием OpenSource проект NS3. Очень мощная утилита без привязки к конкретным вендорам.
Совершенная иная парадигма создания топологий и настройки, напоминающая скорее язык программирования.
Продукт хорошо документирован, но, видимо, в силу своей сложности всё же не сыскал большой известности в сети.
NS3 используется преимущественно в зарубежных ВУЗах, но даже у нас на его основе проворачивали интересные проекты.

Кроме того, наверняка, у каждого вендора есть какой-то внутренний симулятор их оборудования.

Точно могу сказать за Huawei, что у них имеется два мощных приложения:
WVRP — внутренний продукт, требует лицензий и работает только в корпоративной сети. Аналог GNS3, но с большими возможностями и меньшим потреблением ресурсов.
eNSP — публичный симулятор оборудования Huawei. Имеет урезанный функционал по сравнению с WVRP. Скорее похож на Packet Tracer по простоте работы, но с гораздо большими возможностями.
Есть видеоинструкция.
Бесплатен, свободен для загрузки (достаточно завести аккаунт на сайте). Скорее всего, на нём мы и будем в будущем отрабатывать Multicast — в eNSP это можно сделать довольно наглядно.

Я находил в сети симулятор Juniper, но не знаю, насколько он функционален и является ли официальным.

Полезные ссылки по теме


Сайт симулятора GNS: www.gns3.net
Как разнести GNS и Dynamyps на разные компьютеры: habrahabr.ru/post/135884
Инструкции по установке IOU: admindoc.ru/990/emulyatsiya-cisco-ios-s-pomoshhyu-cisco-iou
То же на английском: evilrouters.net/2011/01/18/cisco-iou-faq
Сравнение двух симуляторов: rendoaw.blogspot.ru/2011/05/cisco-iou-vs-dynamips.html

Данную статью вы также можете читать на нашем сайте: linkmeup.ru/blog/36.html.
Возможно, вам будет удобнее воспользоваться ЖЖ

==========================

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

+37
106k 774
Support the author
Comments 36