Консоль управления сетевыми коммутаторами Cisco

А.М.Терентьев

Сетевые коммутаторы производства Cisco Catalyst обеспечивают множество функций управления пользовательскими и специальными сетевыми устройствами. Одним из наиболее часто используемых наборов функций является ряд функций управления списками подключения пользовательских сетевых устройств (рабочие станции, серверы, роутеры, сетевые принтеры и пр.). В практической работе наиболее часто востребованы такие функции этого ряда, как:

– подключение нового пользователя к нужному интерфейсу (порту) сетевого коммутатора;

– отключение имеющегося пользователя от питающего его порта;

– вывод текущего списка сетевых устройств, подключенных к интересуемому порту коммутатора;

– сохранение текущей конфигурации коммутатора в его энергонезависимой памяти в целях обеспечения рестарта при автоматическом или ручном перезапуске коммутатора;

– снятие справки о состоянии интересуемого порта коммутатора;

– снятие полной справки о текущей конфигурации коммутатора.

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

В целях обеспечения функций управления, сетевые коммутаторы предоставляют веер управляющих средств, от тривиального протокола Telnet до громоздких комплексных пакетов типа Cisco Works. Однако, все эти средства требуют весьма высокой квалификации лица, осуществляющего функции управления; используют либо длинные цепочки труднозапоминаемых символьных команд (Telnet), либо весьма громоздкие (с задействованием Java VM и пр.) графические средства управления со сложным интерфейсом. Во всех случаях требуется хорошее знание предметной области, умение справляться с возможными нестандартными ситуациями (занят интерфейс / пользователь не на том порту, на котором предполагалось / исчерпан лимит списков и мн. др.), достаточно мощный управляющий компьютер с целым рядом установленных пакетов поддержки, повышенная требовательность к ошибкам набора и ввода команд. По имеющимся наблюдениям, даже системные администраторы с многолетним опытом работы, используя Telnet, не в состоянии сразу без ошибок набрать все требуемые команды управления, предпочитая набирать их по частям с использованием встроенного Help через ввод “?”.

В самом деле, включение, к примеру, некоего MAC-адреса 1234.5678.9abc в порт 16 коммутатора требует следующих действий (вводимое оператором выделено жирно, курсив обозначает сложное действие или принятие решения) – см. рис. 1 на след. стр:

{Вызов протокола Telnet на нужный сетевой адрес коммутатора}

User Access Verification

Username: NNNN

Password: TTTTT

lan_switch#show port-security interface fastethernet 0/16 address

Secure Mac Address Table

Vlan Mac Address Type Ports RemainingAge

(mins)

---- ----------- ---- ----- ------------

194 0005.5d49.bf22 SecureConfigured Fa0/6 -

194 0013.d44a.aa7e SecureConfigured Fa0/6 -

194 0013.d4b8.2847 SecureConfigured Fa0/6 -

194 0040.0541.319b SecureConfigured Fa0/6 -

194 00c0.262c.1799 SecureConfigured Fa0/6 -

194 00c0.26a6.6406 SecureConfigured Fa0/6 -

----------------------------------------------------------------

Total Addresses: 6

{Удостовериться, что нужного адреса нет в списке}

lan_switch#show port-security interface fastethernet 0/16

Port Security : Enabled

Port Status : Secure-up

Violation Mode : Restrict

Aging Time : 0 mins

Aging Type : Absolute

SecureStatic Address Aging : Disabled

Maximum MAC Addresses : 6

Total MAC Addresses : 6

Configured MAC Addresses : 6

Sticky MAC Addresses : 0

Last Source Address : 0017.4215.e584

Security Violation Count : 108

{Удостовериться, что порт в рабочем состоянии, режим Secure включен, и текущее число Secure-устройств в списке не превышает допустимого максимума}

lan_switch#config term

Enter configuration commands, one per line. End with CNTL/Z.

lan_switch(config)#interface fastethernet 0/16

lan_switch(config-if)#shutdown

lan_switch(config-if)#switchport port-security maximum 7

lan_switch(config-if)#switchport port-sec mac-address 1234.5678.9abc

{Удостовериться, что адрес принят - нет сообщений об ошибках}

lan_switch(config-if)#no shutdown

lan_switch(config-if)#exit

lan_switch(config)#exit

lan_switch#exit

Рис. 1. Управление коммутатором при добавлении МАС-адреса вручную

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

Следует также иметь в виду, что управление коммутатором исполняется в реальном режиме времени, так что с подачей команды shutdown порт будет в нерабочем состоянии, и все пользователи, прикреплённые к этому порту, в это время будут находиться без связи с Интернетом. Анализ ситуации и необходимые действия займут заметное время (~10 мин), так что открытые к моменту начала операций соединения у пользователей порта заведомо будут разорваны.

В то же время, представляется, все перечисленные выше в начале статьи стандартные операции представляют собой по сути совокупность достаточно простых действий, опционально использующие один или два параметра: номер интерфейса (порта) коммутатора и, возможно, MAC-адрес сетевого устройства. Учитывая частоту приведённых операций в повседневной практике управления коммутаторами, логично было бы ожидать появления прикладных пакетов, использующих средства автоматизации программирования как метода оптимизации управлением коммутатора. Однако, на актуальном рынке программного обеспечения подобные средства, обеспечивающие лёгкий интерфейс с гибким построением реализующих процедур, отсутствуют.

В 2006 г автором данной работы был разработан язык описания синтаксических процедур как надстройка над языком управления, используемом в командных строках управления сетевыми коммутаторами через Telnet [1]. Реализованный транслятор и блоки связи по Telnet были встроены в центральную программу съёма данных сетевого мониторинга [2] в целях автоматического управления сетевым коммутатором для отсечения сетевых объектов, испускающих некорректные пакеты. Такая центральная программа (названная в рамках построения системы круглосуточного сетевого мониторинга «Мониторной программой» [3]) постоянно загружена на постоянно включённом ПК, что обеспечивает её круглосуточную готовность к необходимым действиям.

Однако, практика показала, что описанная методика имеет практическую ценность независимо от системы сетевого мониторинга, как автономное средство управления сетевыми коммутаторами, доступное в использовании для низкоквалифицированного персонала. В силу этого, была выполнена отдельная разработка «TAM Cisco Console», использующая описанный язык создания процедур и реализованный транслятор, однако представляющая собой самостоятельную консоль управления сетевым коммутатором.

Пользователь, включив флажок ручного управления (Начало), выбирает по списку нужную процедуру и, если она требует, вводит необходимый MAC-адрес и/или номер порта, после чего нажимает кнопку Start и ждёт завершения. Результат чётко виден в специальной строке на русском языке и может быть удачным или неудачным.

Язык управления обладает достаточно богатыми возможностями, чтобы описать с его помощью практически все возможные ситуации, которые можно предусмотреть, от корректного исполнения каждой поданной на коммутатор команды до съёма и проверки нужных параметров, как текстовых, так и числовых. Разумеется, само создание процедур на предложенном языке является задачей высококвалифицированного специалиста. Однако, после отладки такой процедуры она может быть включена в библиотеку и в дальнейшем использоваться операторами, совершенно не знакомыми с предметной областью, Telnet’ом, командами управления коммутатором или синтаксисом языка разработки процедур.

Рис. 2. Общий вид окна программы TAM Cisco Console

Так, например, при добавлении некоторого сетевого объекта на порт коммутатора в режиме SECURE может создаться одна из неприемлемых ситуаций. Указанный объект может уже быть присоединённым к нужному или другому порту, требуемый порт может не находиться в режиме SECURE или вообще быть отключенным, может быть достигнуто предельное число возможных подключений к данному порту. Наконец, может произойти сбой при управления коммутатором или разрыв связи. Все эти ситуации возможно предусмотреть с помощью проверок специальными командами управления коммутатором и анализом их результатов с помощью псевдокоманд языка (разрыв связи автоматически детектируется исполняющими блоками программы).

Реальная процедура, написанная на предложенном языке в целях добавления нового объекта на некоторый порт, содержит 82 оператора языка, из которых только 21 является командами управления коммутатором через Telnet. В остальные входят: 1 строка заголовка, 11 меток, 14 строк невыводимых при работе процедуры комментариев программиста и 35 псевдооператоров управления (включая 8 выводимых комментариев ситуаций). Полученная процедура предусматривает практически все ситуации, которые могут случиться во время исполнения рабочего цикла. Текст актуальной на момент написания данной работы версии процедуры приведён на рис. 3 (слева на рисунке специально вставлены номера строк; далее с их помощью будет пояснен смысл некоторых операторов). Для удобства восприятия, реальные команды коммутатору выделены жирным, псевдооператоры-метки начала новых блоков подчеркнуты.

001 [Add-Secure]MI

002 ' Процедура добавления Secure-MAC, версия 09.04.2010

003 #"&M"Y<51

004 ' Выдача всех MAC-адресов на нужном порту

005 show port-security interface fastethernet 0/&I address

006 ' Если Y имеет реальное значение, goto NoDef – это нормально

007 ?Y%NoDef

008 ! Mac-Address &M уже есть на порту &Y

009 ^-

010 :NoDef

011 #"Maximum"X<30

012 #"Total"Z<30

013 $"Port Sec"W<30,3

014 ' Приказ на выдачу параметров всех портов

015 show port-security interface fastethernet 0/&I

016 ' Если W не имеет значения, то порт не типа Secure

017 ?W%PortSecN

018 ' Если значение W не "Ena"[bled], то порт не типа Secure

019 ?W="Ena">PortSecY

020 :PortSecN

021 !* Порт &I не является Secure-портом

022 ^-

023 :PortSecY

024 config term

025 interface fastethernet 0/&I

026 shutdown

027 ' Переменная Z получила число из строки "Total Secured";

028 ' значение 0 значит, что не надо увеличивать MaxCount

029 ?Z=0>NoNeedIncr

030 ' Увеличение Х как счётчика MaxCount

031 =X+

032 switchport port-security max &X

033 %AnyBad

034 >ExecAdd

035 :NoNeedIncr

036 ! Порт был пуст, max увеличивать не надо

037 :ExecAdd

038 ' Сл. Строка фиксирует "MAC Found on the other port" ситуацию

039 $"Found"U<1,5

040 switchport port-security mac-address &M

041 %AnyBad2

042 ?U%NormAdd

043 >AnyBad2

044 :NormAdd

045 ! MAC-Addr &M успешно добавлен к порту &I

046 no shutdown

047 exit

048 exit

049 ' Это единственное место нормального завершения процедуры

050 ^+

051 :AnyBad

052 !* Проблемы при увеличении max. Изучайте.

053 no shutdown

054 exit

055 exit

056 ^-

057 :AnyBad2

058 ' Данный блок срабатывает при ошибке установки нового MAC;

059 ' будет попытка уменьшить на 1 MaxCount

060 ?Z=0>NoNeedDecr

061 =X-

062 !* Проблемы с добавлением MAC. Восстановим max = &X

063 switchport port-security max &X

064 %AnyMoreBad

065 :NoNeedDecr

066 no shutdown

067 exit

068 exit

069 ! Maxcount восстановлен. MAC не добавлен.

070 ' Теперь поинтересуемся, почему. Выведем список всех МАС

071 #"&M"Y<51

072 show port-security address

073 ?Y%EndNoInf

074 !* MAC &M обнаружен на порту &Y

075 :EndNoInf

076 ^-

077 :AnyMoreBad

078 !*= Проблемы! MAC не добавлен, max не восстановлен.

079 no shutdown

080 exit

081 exit

082 ^-

Рис. 3. Текст процедуры добавления МАС-адреса на языке TAM Cisco Console

Примечание. Команды ввода логина и пароля, также как и завершающая команда exit, подаются программой автоматически.

Прокомментируем «сердце» процедуры – блок строк 39-43.

Строка 39 является псевдокомандой языка управления. Смысл её в том, что она приказывает анализировать все последующие строки, выдаваемые коммутатором, на присутствие контента “Found”, и если он будет найден, то присвоить переменной U текстовое значение из той же строки, в которой найден контент “Found”, начиная с позиции 1, числом 5 символов. В момент исполнения команды в строке 39, текущее значение переменной U устанавливается неопределенным.

Строка 40 является командой добавления МАС-адреса на заранее указанный порт. Перед выдачей команды коммутатору для исполнения процессор формирования команд заменит макроконструкцию “&M” на введённый оператором МАС-адрес.

Строка 41 содержит условную передачу управления на метку AnyBad2 в случае, если после исполнения предыдущей команды коммутатор выдал любую строку, начинающуюся с символа «процент» (“%”) – именно такой вид имеют все типовые сообщения коммутатора об ошибках.

Строка 42 является псевдокомандой языка управления. Это условная передача управления на метку NormAdd в случае если переменная U не получила значения. Иными словами, если после подачи коммутатору команды строки 40 в ответ не был выдан текст, содержащий слово “Found” точно в таком виде. Тем самым проверяется ситуация, когда коммутатор сообщил, что добавляемый МАС-адрес уже присутствует на каком-либо ином порту. В дополнение, эта же команда отменяет все заданные анализы будущего контента на содержание “Found” и принудительно сбрасывает значение переменной U.

Описанные две проверки полностью охватывают все аварийные ситуации, которые могут возникнуть при наборе основной команды добавления МАС-адреса строки 40. Все остальные проверки построены по аналогичным принципам анализа контента на образец и «захвата» некоторой части строки как числового или текстового значения. Разумеется, одновременно могут быть заданы несколько приказов на анализ контента по отношению к различным внутренним переменным языка (напр., строки 11-13). Учитывая особенности формата выводимых коммутатором строк, числовые значения в которых всегда начинаются с определённых позиций и продолжаются до пробела, в приказах на приём числовых значений (например, в строке 11) указывается только стартовая позиция числа.

Описанная процедура при своём исполнении выдаст однозначный признак успешности завершения на русском языке, а также, в случае неуспеха, комментарий, также на русском языке, с кратким описанием причины неуспеха (напр., текст «Maxcount восстановлен. MAC не добавлен.»).

Приведённый пример показывает возможности и простоту синтаксиса языка. Ниже на рис. 4 дан полный экран исполнения процедуры добавления МАС-адреса (обрезанные верх и низ экрана содержат стандартные строки, точно совпадающие с аналогичными на рис. 2).

Программный модуль при исполнении выводит единственное окно, сокращённый вид которого показан на рис. 2. В окне присутствуют элементы управления и встроенное окно показа исполняемых Telnet-команд, куда также выводится дополнительная информация о ходе исполнения программы и комментарии. При необходимости, окно может быть расширено вниз для просмотра текущего фрагмента протокола работы. По исполнении программы, полный протокол работы формируется в специальном файле. Отдельными файлами сохраняются все исполненные процедуры в виде Telnet-протокола.

Разумеется, блок ввода автоматически контролирует набираемые оператором символы, блокируя недопустимые (например, при наборе MAC-адреса допускаются ровно 12 цифр или букв латинского алфавита в интервале A - F). Также контролируется полнота задания параметров в зависимости от заголовка процедуры.

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

Примечание. Команды ввода логина и пароля, также как и завершающая команда exit, подаются программой автоматически.



Рис. 4. Полный экран исполнения процедуры добавления МАС-адреса

Исполняемые команды коммутатора, выдаваемый коммутатором ответный текст, сопровождающая информация интерпретатора макроязыка и комментарии выполняются разными цветами.

Таким образом, создано средство автоматизации управления сетевым коммутатором, доступное для использования персоналом низкой квалификации, сохраняющее все достоинства интеллектуальной реакции на конкретную ситуацию. Описанное средство не требует длительного обучения персонала, просто и надёжно в эксплуатации, не требует инсталляции на исполняющий компьютер. Настройка TAM Cisco Console на сетевые адреса и входную информацию (логины и пароли) нужных коммутаторов исполняется один раз при установке средства любым текстовым редактором.

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

Разработка выполнена на языке высокого уровня PowerBASIC for Windows 9.04 (serial 513311953), содержит 1962 строки. Для контроля вводимых символов на допустимость и обеспечения смыслового выделения текста разными цветами в одном и том же окне используются subclass-процедуры с включением Windows API. Объём программного модуля составляет 233Кб, занимаемая память при исполнении – 4Мб.

Рис. 5. Расширенный вид окна TAM Cisco Console с показом протокола работы

Известных автору аналогов среди мировых публикаций не обнаружено.

Практическая эксплуатация TAM Cisco Console на двух рабочих местах в ЦЭМИ РАН в течение ряда лет показала, что даже указанная процедура добавления SECURE-адреса (самая длинная из всех) исполняется менее чем за 15с. За это время большинство установленных TCP/IP соединений, проходящих через конфигурируемый порт, остаются нерассоединёнными. Таким образом, помимо возможности задействования низкоквалифицированного персонала для управления технически сложными коммутаторами, налицо ещё и выигрыш для пользователей от применённой автоматизации.

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

Блоки процедур могут быть легко изменены, пополнены или адаптированы под другую версию интерфейса Cisco также с помощью любого текстового редактора. Разумеется, подобная работа требует специалиста высокой квалификации.

Литература

1. Терентьев А.М. Опыт синтеза языка управления работой сетевых коммутаторов Cisco. / Развитие и использование средств сетевого мониторинга и аудита. Вып. 3. Сб. статей под ред. А.М.Терентьева – М.: ЦЭМИ РАН, 2006, с.6-15. ISBN 5-8211-0409-2 (978-5-8211-0409-0).

2. А.М.Терентьев. Методы и средства наблюдения загрузки локальных вычислительных сетей на примере ЦЭМИ РАН. / Препринт #WP/2001/110 –  М.: ЦЭМИ РАН, 2001. – 74с. ISBN 5-8211-0141-72.

3. Терентьев А.М., Ляпичева Н.Г., Кочетова Н.А. Мониторинг корпоративной сети ЦЭМИ РАН в условиях использования коммутатора Cisco Catalyst. / Развитие и использование средств сетевого мониторинга и аудита. Вып. 1. Сб. статей под ред. А.М.Терентьева. – М.: ЦЭМИ РАН, 2004, с75-88. ISBN 5-8211-0317-7.

Статья опубликована в 2010 г.
Программа TAM Cisco Switch Console v 1.25 зарегистрирована в Роспатенте за N2012618011 06 сентября 2012г