стенд CISCO

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

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

У меня имеются в распоряжении несколько роутеров и свичей, конкретно для первой версии стенда были выбраны:

Два маршрутизатора CISCO 1841, один маршрутизатор CISCO 2691 и три коммутатора Cisco Catalyst 2960.

Топология похожа на ту, что преподают на курсах ICND2.

Все это оборудование подключено консолями в Cisco 2509 в котором имеются 8 Async портов, с его настройки и начнем.

Настройка терминального сервера на базе C2509

version 12.1
service timestamps debug datetime localtime
service timestamps log datetime localtime
service password-encryption
!
hostname ip_console
!
logging buffered 16000 debugging
enable secret 5 $1$RFgS$F0VtNMme1SJxJwDrkfBlt1
!
username admin privilege 15 password 7 021212E1B5940480713181F
username terminal password 7 1403171123123128
!
clock timezone FET 3
ip subnet-zero
no ip finger
ip host port9 2009 10.8.202.1
ip host port8 2008 10.8.202.1
ip host port7 2007 10.8.202.1
ip host port6 2006 10.8.202.1
ip host port5 2005 10.8.202.1
ip host port4 2004 10.8.202.1
ip host port3 2003 10.8.202.1
ip host port2 2002 10.8.202.1
ip host port1 2001 10.8.202.1
ip name-server 10.8.1.2
!
interface Loopback0
 ip address 10.8.202.1 255.255.255.255
!
interface Ethernet0
 ip address 10.8.21.100 255.255.255.0
 no cdp enable
!
interface Serial0
 no ip address
 shutdown
 no cdp enable
!
interface Async1
 no ip address
 shutdown
!
interface Async2
 no ip address
 shutdown
!
interface Async3
 no ip address
 shutdown
!
interface Async4
 no ip address
 shutdown
!
interface Async5
 no ip address
 shutdown
!
interface Async6
 no ip address
 shutdown
!
interface Async7
 no ip address
 shutdown
!
interface Async8
 no ip address
 shutdown
!
ip classless
ip route 0.0.0.0 0.0.0.0 10.8.21.1
no ip http server
!
logging trap debugging
logging facility local0
no cdp run
!
menu cserver title ^CC
To get back to the menu press "CTRL+SHIFT+6"
then "X". You must then clear the connection and
begin a new console session to re-connect to
that device.
--------------------------------------------------------
1 - Connect to console1 | c1 - clear console 1
2 - Connect to console2 | c2 - clear console 2
3 - Connect to console3 | c3 - clear console 3
4 - Connect to console4 | c4 - clear console 4
5 - Connect to console5 | c5 - clear console 5
6 - Connect to console6 | c6 - clear console 6
7 - Connect to console7 | c7 - clear console 7
8 - Connect to console8 | c8 - clear console 8
9 - Connect to console9 | c9 - clear console 9
| c0 - clear console 0
--------------------------------------------------------
show - show lines in use | prompt - exit menu
Exit - logout |
--------------------------------------------------------^C
menu cserver prompt ^CCPlease enter command or selection:^C
menu cserver command 1 telnet port1
menu cserver command 2 telnet port2
menu cserver command 3 telnet port3
menu cserver command 4 telnet port4
menu cserver command 5 telnet port5
menu cserver command 6 telnet port6
menu cserver command 7 telnet port7
menu cserver command 8 telnet port8
menu cserver command 9 telnet port9
menu cserver command menuexit menu-exit
menu cserver command exit exit
menu cserver command show show line
menu cserver options show pause
menu cserver command c1 clear line 1
menu cserver command c2 clear line 2
menu cserver command c3 clear line 3
menu cserver command c4 clear line 4
menu cserver command c5 clear line 5
menu cserver command c6 clear line 6
menu cserver command c7 clear line 7
menu cserver command c8 clear line 8
menu cserver command c9 clear line 9
menu cserver command c0 clear line 0
menu cserver command prompty menu-exit
menu cserver clear-screen
menu cserver single-space
!
line con 0
 session-timeout 30
 login local
 transport input none
line 1 8
 no exec
 exec-timeout 0 0
 transport preferred none
 transport input all
 transport output telnet
 telnet break-on-ip
 telnet sync-on-break
 telnet ip-on-break
 flowcontrol hardware
line aux 0
 no exec
 exec-timeout 0 0
 transport preferred none
 transport input all
 transport output telnet
 telnet break-on-ip
 telnet sync-on-break
 telnet ip-on-break
 flowcontrol hardware
line vty 0 4
 session-timeout 15
 login local
 autocommandmenu cserver
!
ntp clock-period 17180213
ntp source Ethernet0
ntp master
ntp server 10.8.200.1 prefer
end

Это классическая конфигурация для сервера терминалов, нужно создать непривилегированного пользователя terminal, которым можно будет заходить на наш сервер, линии vty 0 4 настроены так, что бы вызывалось меню cserver. В котором выполняются вызовы телнет, на наши линии. Подключаться нужно на ip адрес указанный на интерфейсе E0. Так же нужно создать Loopback0 и назначит ему какой-то адрес. Последним шагом надо прописать наши привязки вида: ip host port1 2001 10.8.202.1, теперь если мы подключимся телнетом на порт 2001, то соединимся с консолью через Async1, Порт 2002 это Async2 и т.д. Если зайдем на 23-й порт и залогинимся, то попадем в меню, где так же можем подключиться на наши линии.

Настраиваем mindterm

Подключаться телнетом на разные порты или выходить через меню 2509 хорошо, но хотелось бы более приятного интерфейса, хотя бы немного похожего как на авторизованных курсах CISCO. Поэтому нам понадобится java клиент, который сможет подключаться телнетом из браузера, качаем такую штуку отсюда:

http://www.cryptzone.com/products/mindterm

Нам нужна free версия.

Скачав mindterm_4.1.1-bin.zip распаковываем и получаем mindterm.jar

Теперь нам нужен JDK, надеюсь вы знаете, что это и где брать.

Создаем хранилище сертификата:

keytool -genkey -keystore .keystore -alias "Cert" -validity 99999

где Cert - название alias нашего сертификата;

99999 - срок в месяцах валидности сертификата;

.keystore - имя файла создаваемого хранилища.

В случае успешного запуска команды, система спросит нас пароль нашего хранилища, а также некоторую информацию о сертификате (ФИО, название компании, город, страну...)

В результате будем иметь файл .keystore. Это и есть наше хранилище, которым мы будем подписывать разные апплеты.

Подписываем jar следующей командой:

jarsigner -keystore .keystore mindterm.jar "Cert"

Пароль вводим тот, который вводили при создании сертификата.

Теперь кладем этот файл на HTTP-сервер. Так же создаем такие файлики и кладем туда же:

<HTML> <HEAD> <TITLE>Cisco</TITLE> </HEAD> <BODY> <APPLET CODE="com.mindbright.application.MindTermTelnet.class" ARCHIVE="mindterm.jar" WIDTH=600 HEIGHT=600> <PARAM NAME="sepframe" value="true"> <PARAM NAME="bg-color" value="black"> <PARAM NAME="fg-color" value="white"> <PARAM NAME="cursor-color" value="white"> <PARAM NAME="server" value="10.8.21.100:2001"> </APPLET> </BODY> </HTML>

Тут 10.8.21.100:2001 - это ip-адрес нашей 2509 и порт 2001 для Async1

Создадим index.html примерно такого содержания:

<HTML> <HEAD> <TITLE>Cisco</TITLE> </HEAD> <BODY> <a href="sw1.html" target=".blank">CoreSwitchA</a><br> <a href="sw2.html" target=".blank">SwitchH</a><br> <a href="sw3.html" target=".blank">SwitchA</a><br> <a href="r3.html" target=".blank">CoreRouter</a><br> <a href="r2.html" target=".blank">RouterH</a><br> <a href="r1.html" target=".blank">RouterA</a> </BODY> </HTML>

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

[sf@mserver learn]$ ls -1
index.html
mindterm.jar
r1.html
r2.html
r3.html
sw1.html
sw2.html
sw3.html

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

Правда есть во всем этом одно неудобство, несмотря на то, что в ссылках приписано targer=".blank", все ссылки открываются в новом, но единственном окне (вкладке) в результате не получается открыть более двух консолей одновременно, поэтому приходится ссылки открывать правой кнопкой и говорить, открыть в новой вкладке, тогда все корректно работает.

Вот так это все выглядит