Когда в начале 90-х годов протокол SNMP впервые появился на рынке, возникла своеобразная “золотая лихорадка”. Сотни компаний выпустили собственные пакеты управления по протоколу SNMP. Кроме того, многие поставщики аппаратных и про граммных средств стали включать в свои продукты SNMP-агенты. Большинство компо нентов сетевого аппаратного обеспечения, предназначенных для производства (а не для домашнего использования), в настоящее время содержат агенты SNMP.
Прежде чем погрузиться в дебри SNMP, заметим, что терминология, употребляемая в этой области, одна из самых бестолковых и невразумительных. Стандартные назва ния объектов и концепций SNMP будут активно уводить читателей от понимания их назначения, так что запаситесь терпением. У людей, ответственных за такое положение вещей, следует отобрать клавиатуру.
Структура протокола SNMP
В SNMP данные организованы иерархически, причем структура иерархии жестко определена. Это делает пространство имен универсальным и расширяемым, по крайней мере теоретически. Большие его области оставлены для перспективного использования; дополнения, создаваемые поставщиками операционных систем, локализуются в опреде ленных диапазонах во избежание конфликтов. Для формирования пространства имен используются так называемые базы управляющей информации (Management Information Base, MIB). Это структурированные текстовые файлы, которые содержат описания дан ных, доступных по протоколу SNMP. Ссылки на конкретные переменные, описываемые в базе данных, называются идентификаторами объектов (Object Identifier, OID).
В переводе на человеческий язык это означает всего лишь, что протокол SNMP определяет иерархическое пространство имен переменных, хранящих “интересные” па раметры системы.
Иерархия SNMP напоминает иерархию имен файловой системы. Только в качестве символа-разделителя используется точка, а каждому узлу иерархии присваивается не имя, а номер. Для облегчения ссылок узлам присваиваются также текстовые имена, но схема именования выходит за рамки самой иерархии и определяется на высоком уровне. (Это похоже на связь между именами компьютеров и их IР-адресами.)
Глава 21. Управление сетями 929
К примеру, идентификатор OID, соответствующий показателю общего времени ра боты системы, выглядит так: 1.3.6.1.2.1.1.3. В текстовом виде его можно записать сле дующим образом.
iso.org.dod.intemet.mgmt.mib-2.system.sysUpTime
Верхние уровни иерархии SNMP носят искусственный характер и обычно не содер жат полезных данных. По сути, интересная информация начинает появляться только на уровне iso.org.dod.internet.mgmt (вчисловом виде — 1.3.6.1.2).
Основная административная база данных SNMP для протоколов TCP/IP (MIB-I) обеспечивает доступ к наиболее важным управляющим данным: информации о системе, ее интерфейсах, преобразовании адресов и протоколах (IP, ICMP, TCP, UDP и др.). В до кументе RFC1213 описана новая, более полная версия этой базы: MIB-II. Большинство SNMP-серверов поддерживает базу MIB-II. В табл. 21.1 приведена выборка узлов иерар хии из пространства имен MIB-II.
Таблица 21.1. Некоторые идентификаторы из базы MIB-II
OIDa Тип Содержание
system.sysDescr строка Информация о системе: производитель, модель, тип ОС и т.д.
udp.udpTable таблица Таблица с информацией о UDP-сокетах, через которые серверы ожидают прием запросов
а Относительно узла iso.org.dod.internet.mgmt.mib-2.
Помимо основной административной базы данных, существуют базы для различных типов аппаратных интерфейсов и протоколов. Имеются также базы данных по отдель ным поставщикам и конкретным изделиям.
База MIB — это лишь соглашение об именовании управляющих данных. Для того чтобы эта схема заработала, ее необходимо подкрепить программой-агентом, которая будет обеспечивать соответствие содержимого SNMP-переменных текущему состоянию устройства. Код для основной базы MIB (в настоящее время MIB-II) поставляется с большинством SNMP-агентов Linux. Некоторые агенты разрешают подключать допол нительные базы данных.
Агенты SNMP — сложные существа, имеющие общие проблемы с безопасностью. Не следует полагаться на агентов, которых поставщики предоставляют в готовом виде. Ра зумнее скомпилировать и инсталлировать текущую версию агента NET-SNMP (см. далее).
930 Часть II. Работа в сети
Операции протокола SNMP
В пространстве имен SNMP определено всего четыре базовые операции: get (про читать), get-next (прочитать следующий), set (записать) и trap (прерывание).
Операции get и set — это базовые операции чтения и записи данных на узле иерар хии, который определяется конкретным значением OID. Операция get-next использу ется для последовательного прохода по базе MIB, а также для чтения таблиц.
Прерывание (операция trap) — это неожиданное уведомление клиента о том, что на сервере произошло нестандартное событие. Определен ряд стандартных прерываний, в том числе уведомления вида “я только что включился”, сообщения об отказах и восста новлении сетевых каналов, а также сообщения, связанные с различными проблемами маршрутизации и аутентификации. Широко применяются и нестандартные прерывания, например для отслеживания значений требуемых SNMP-переменных. Если эти значе ния выходят за границы установленного диапазона, выдается соответствующее сообще ние. Способ определения получателей таких сообщений зависит от реализации агента.
Поскольку сообщения SNMP потенциально могут изменять информацию о конфи гурации компьютера, необходим какой-то механизм защиты. Простейшая защита осно вана на концепции группового имени (community name). Для тех, кто не страдает кос ноязычием, поясним: на языке разработчиков протокола это синоним слова “пароль”. Доступу только для чтения соответствует один пароль, простите, групповое имя, а до ступу для записи — другой.
Несмотря на то что многие организации продолжают использовать общепринятую строковую аутентификацию имени и пароля, версия 3 протокола SNMP включает ме тоды управления доступом с высокой степенью безопасности. Их настройка требует до полнительной работы, но снижение риска стоит этого. Если по каким-то причинам вы не можете использовать версию 3 протокола SNMP, по крайней мере выберите строку имени и пароля, которую сложно угадать.