Установка службы SNMP в ОС Windows. SNMP протокол (основы)

Приветствую тебя, гость и постоянный читатель. Пришлось в последнее время внедряться в сетевой мониторинг. Очень актуальная тема для мониторинга - SNMP (Simple Network Management Protocol) . Часто приходилось использовать SNMP , но руки не доходили до его описания. Сегодня хочу изложить свое понимание данной технологии.

Введение в протокол SNMP

SNMP есть Simple Network Management Protocol , он же Простой Протокол Сетевого Управления . Протокол создан в 1988 г. с целью управления большим количеством сетевых устройств. С того момента протокол набрал соответствующую популярность и стал стандартом. С момента разработки протокол SNMP был 3 раза переработан с версии SNMPv1 , SNMPv2 и SNMPv3 . На самом деле, версий было больше, например v2 была пересмотрена 2 раза (или даже более). Так же стоит отметить, что кроме SNMP были и другие попытки создать коммерческие и не коммерческие протоколы управления (CORBA, TMN ...) не увенчавшиеся успехом.

Кроме управления устройствами, очень часто всегда SNMP используют для мониторинга . SNMP может получать различную информацию от любых сетевых устройств, будь то роутер, свич или просто компьютер (в которых имеется поддержка данного протокола (читай - запущен агент SNMP). Содержимое получаемой информации может быть очень разнообразно, например: время аптайма, различные счетчики производительности CPU, сети и др., сетевые параметры устройств...

Архитектура протокола SNMP

Сеть, использующая SNMP для управления содержит три основных компонента :

  1. SNMP менеджер - ПО, устанавливаемое на ПК администратора (системы мониторинга)
  2. SNMP агент - ПО, запущенное на сетевом узле, за которым осуществляется мониторинг.
  3. SNMP MIB - MIB это Management information base . Этот компонент системы обеспечивает структурированость данных, которыми обмениваются агенты и менеджеры. По сути - это некая база данных в виде текстовых фалов.

Давайте попытаемся рассмотреть обозначенные компоненты.

SNMP менеджер и SNMP агент

Для понимания назначения компонентов, можно сказать, что SNMP менеджер является прослойкой (интерфейсом) между оператором\администратором и сетевым узлом с запущенным SNMP агентом . Так же, можно сказать, что SNMP агент - это интерфейс между SNMP менеджером и железным оборудованием на сетевом узле. Если провести аналогию протокола SNMP с клиент-серверной архитектурой (например, веб-сервера) то веб-сервер работает как служба на некотором порту, а пользователь силами браузера обращается к веб-серверу как клиент. Это четко обозначенная архитектура с выраженным клиентом и сервером. В случае SNMP роли клиента и сервера несколько размыты. Например, SNMP агент является своего рода службой, работающей на устройстве (за которым производится мониторинг) и обрабатывает запросы на определенном порту udp/161 , то есть фактически является сервером. А SNMP менеджер является своего рода клиентом, который обращается к серверу SNMP агенту . В SNMP существует т.н. Trap . Это запрос от агента к менеджеру. Точнее даже не запрос, а уведомление. При отправке данного уведомления, агент и менеджер "меняются ролями". То есть, менеджер в таком случае должен являться сервером, работающем на порту udp/162, а агент является клиентом. В последних версиях SNMP trap может именоваться как извещение (notification ).

Структура PDU

Рассмотрение структуры PDU не обязательно, но это поможет более глубоко понять логику работы SNMP . Все PDU (кроме Trap) состоят из определенного набора полей, в которые записывается необходимая информация:

Что данные поля обозначают:

При этом, содержимое Trap PDU содержит некоторые дополнительные поля (вместо заголовка запроса):

  • Фирма – характеризующее производителя хоста
  • Тип trap уведомления, может быть следующим:
    • 0 (Coldstart) и 1 (Warmstart) – объект возвращен в начальное состояние (между ними имеется некая разница, но какая?..),
    • 2 (Linkdown) – интерфейс опущен, при этом, поле переменной содержит интерфейс о котором идет речь,
    • 3 (Linkup) – интерфейс поднялся, при этом, поле переменной содержит интерфейс о котором идет речь,
    • 4 (Authenticationfailure) – менеджер прислал мессадж с неверной строкой community,
    • 5 (EGPneighborloss) – затрудняюсь что либо сказать),
    • 6 (Entrprisespecific) данный тип Trap сообщает о том, что в следующем поле содержится специализированный для данного вендора тип трапа.
  • Специализированный тип Trap – описан выше
  • Метка времени – содержит метку времени с момента события (непонятно, относительно чего эта метка…).

В новых версиях SNMP содержимое Trap PDU может незначительно меняться, но в целом, смысл тот же...

Логика работы протокола SNMP

Рассмотрев основные единицы обмена SNMP , можно обсудить логику работы SNMP при выполнении данных запросов\ответов. Некоторые общие особенности работы протокола SNMP , которые стоит учитывать:

Логика работы SNMP при обмене PDU-единицами

(взято частично отсюда http://logic-bratsk.ru/brlug/snmp_my/):

При получении PDU GetRequest, SNMP агент действует по следующему алгоритму:

  1. Если имя переменной не совпадает в точности с именем одной из переменной , доступных для операции get в нашей MIB, передаем отправителю запроса аналогичное PDU GetResponse , указывая в поле кода ошибки значение noSuchName (2-нет такого имени), а в поле error-index - индекс имени вышеупомянутого объекта в полученном сообщении (=1, в SNMPv1 - ограничение данной реализации SNMP).
  2. Если размер PDU GetResponse , превышает локальное ограничение (Реализация SNMP не обязана принимать сообщения, размер которых превышает определенное значение. Однако по возможности желательна поддержка дейтаграмм больших размеров (RFC1157 SNMP).) , передаем отправителю аналогичное PDU GetResponse , указав в поле errorstatus значение T ooBig , а в поле error-index - 0 . Это обычно происходит, если запрошено больше 1 переменной или длина PDU или общая длина пакета больше стандартных пределов.
  3. Если для любой переменной, содержащейся в поле связанные, значение переменной не может быть найдено по причинам, которые отличаются от перечисленных выше, SNMP агент передает отправителю аналогичное PDU GetResponse, указав в поле error-status значение GenErr, а в поле error-index - индекс имени вышеупомянутого объекта в полученном сообщении.
  4. Если все нормально, передаем SNMP менеджеру, отправившему полученное сообщение, ответ - GetResponse, в котором для каждой переменной в поле связанные переменные подставлены запрошенные значения переменных. В поле error-status помещается значение NoError, а в поле error-index - 0. Значение поля request-id в ответном PDU совпадает с идентификатором в принятом сообщении.

При получении PDU GetNextRequest, SNMP агент действует по следующему алгоритму:

  1. Если после переменной, указанной в запросе, нет следующей переменной, то передаем отправителю запроса менеджеру PDU GetResponse (с содержимым аналогичным исходному запросу), указывая в поле кода ошибки значение noSuchName (нет такого имени), а в поле error-index - индекс имени вышеупомянутого объекта в полученном сообщении (=1 для SNMPv1), значение переменной = NULL (кажется).
  2. Если размер PDU ответа (GetResponse), созданного в соответствии с приведенным ниже описанием, GetResponse , указав в поле errorstatus значение tooBig , а в поле error-index - 0.
  3. Если для любой переменной в поле связанные переменные, значение переменной не может быть найдено по причинам, которые отличаются от перечисленных выше, принимающий объект передает менеджеру PDU
  4. Если все нормально, передаем SNMP менеджеру, отправившему PDU, такое сообщение GetResponse , в котором для каждой переменной в поле связанные переменные содержится имя и значение переменной, иерархически следующей за запрошенной переменной в базе MIB. В поле error-status помещается значение noError , а в поле error-index - 0 . Значение поля request-id в ответном PDU GetResponse совпадает с идентификатором в принятом сообщении.

При получении PDU SetRequest, SNMP агент действует по следующему алгоритму:

  1. Если для любой переменной, содержащейся в поле связанные переменные, запись (операция set) не поддерживается в имеющих отношение к делу представлениях MIB, SNMP агент объект передает отправителю запроса аналогичное PDU GetResponse , указывая в поле кода ошибки значение noSuchName (нет такого имени), а в поле error-index - индекс имени вышеупомянутого объекта в полученном сообщении.
  2. Если для любой переменной в запросе, запрашиваемые к изменению значения переменных не соответствуют стандартам (SMI, ASN.1 – об этом ниже), то SNMP агент передает SNMP менеджеру аналогичное PDU GetResponse, указывая в поле кода ошибки значение badValue (нет такого имени), а в поле error-index - индекс имени вышеупомянутого объекта в полученном сообщении.
  3. Если размер PDU ответа (GetResponse), созданного в соответствии с приведенным ниже описанием, превышает локальное ограничение , принимающий объект передает отправителю аналогичное PDU GetResponse , указав в поле errorstatus значение tooBig , а в поле error-index - 0.
  4. Если для любой переменной в поле связанные переменные, значение переменной не может быть установлено по причинам, которые отличаются от перечисленных выше, SNMP агент передает менеджеру PDU с исходным содержимым GetResponse, указав в поле error-status значение genErr, а в поле error-index - индекс имени вышеупомянутого объекта в полученном сообщении. (аналогично вышесказанному)
  5. Если все нормально, агент передает SNMP менеджеру, отправившему PDU, такое сообщение GetResponse , в котором для каждой переменной в поле связанные переменные подставлены установленные значения переменных. В поле error-status помещается значение NoError, а в поле error-index - 0. Значение поля request-id в ответном PDU совпадает с идентификатором в принятом сообщении.

Логика работы SNMP в картинках

взято отсюда (http://www.manageengine.com/network-monitoring/what-is-snmp.html)

Обмен PDU GET⁄ GET NEXT⁄ GET BULK⁄ SET

Обмен PDU Trap или notification

SNMP MIB

Давайте попробуем понять MIB . Это совсем не люди в черном) Как я уже сказал, это Management information base , то есть база набор управляющей информации. Каждый сетевой узел, имеющий на своем борту SNMP агента (читай – поддерживающий протокол SNMP) предоставляет свой набор данных, тот, который в него «вложили» программисты\разработчики при проектировании железки\программы. То есть в каждом сетевом устройстве с поддержкой SNMP имеется своя база MIB со строго обозначенным набором переменных. Каждая база MIB имеет древовидную структуру, каждый объект в которой характеризуется уникальным идентификатором объекта (Object Identifier, OID) .

Каждая ветка MIB-иерархии оканчивается некоторой переменной (так же имеющей свой OID), содержащей в себе определенное значение, которое записывается в переменную SNMP агентом, работающем на хосте. Данное значение неким образом характеризует данный хост (например, содержит информацию об аптайме, загрузке сетевого интерфейса и мн.др. параметры).

Имеется некая единая общая структура дерева MIB , а так же, имеются единые стандарты и принципы дальнейшего формирования данного дерева, его переменных, др. параметров, за эти правила отвечает некий разработанный стандарт под названием Структура Информации Управления (SMI , S tructure of M anagement I nformation ). Так же, имеется некий стандарт, называемый абстрактный синтаксис нотаций - ASN.1. Который тоже участвует в описании протокола SNMP и базы MIB . А еще имеется базовые правила кодирования BER (B asic E ncoding R ules), определяющие кодирование сущностей, применяемых в SNMP.

Кроме того, существует всемирное дерево регистрации стандартов IS O , содержащее базовую структура дерева MIB (точнее этих структур существует несколько, они формировались вместе с совершенствованием версий SNMP). Составное числовое имя объекта SNMP MIB соответствует полному имени этого объекта в дереве регистрации объектов стандартизации ISO . За данную древовидную структуру отвечает и контролирует организация IANA (и некоторые другие).

Давайте рассмотрим типичное дерево MIB на рисунке:

Дерево объектов MIB подобно . Тут аналогично имеются символьные имена (аналогично NS имени) и называемые ASN.1 нотацией , и соответствующие им числовые значения (аналогично IP адресам), называемые dot нотацией . Каждый объект в MIB состоит из нескольких чисел, разделенных точками. Числам соответствуют текстовые наименования. При этом, в отличии от DNS - нет какого-то единого централизованного сервера, отвечающего за разолвинг имен. Все разрешения имен из символов в числа происходят силами SNMP менеджера (в зависимости от того, какие сопоставления MIB загружены в менеджер). Весь обмен между узлами SNMP происходит только в числовом виде. В символьном виде, наименования используются только для отображения на экране или в документации.

Часто OID характеризующий определенный объект в дереве MIB сравнивают со структурой телефонных номеров, т.к. они (номера) так же иерархичны и отдельные части номера назначаются различными организациями. Например, международные телефонные номера состоят из кода страны (назначаемого международной организацией) и телефонного номера в том виде, в котором он определен локально в стране. При этом, телефонный номер в стране делится на код области\края\региона, номер АТС и далее номер абонента, привязанного к АТС. Аналогично - в MIB OID верхнего уровня назначаются международной организацией (ISO IEC ???), ветки OID нижнего уровня назначаются организациями, отвечающими за эти ветки.

Итак, структура OID в дереве MIB :

В вершине дерева – корень (точка), от которого ответвляются ветви. Во многих схемах приведены некоторые ветви верхнего уровня (например itu-t, iso\itu-t и другие ниже), но информации о их назначении я не нашел… Посему, нас интересует вертка iso (0), которая хранит в себе следующие значения до internet (1) : iso.org.dod.internet , что соответствует числовому ID .1.3.6.1 .

Данный раздел (iso.org.dod.internet ) разветвляется на подразделы, которые в большинстве своем контролируются IANA и состоят (согласно RFC1155) из:

  • directory OID=1.3.6.1.1 (iso.org.dod.internet. directory ) – зарезервировано для использования в будущем
  • mgmt OID=1.3.6.1.2 (iso.org.dod.internet. mgmt )- в этой ветке находится стандартные ответвления объектов.
  • experimental OID=1.3.6.1.3 (iso.org.dod.internet. experimental )- это ветка для экспериментов разработчиков. (не отображено на схеме )
  • private OID=1.3.6.1.4 (iso.org.dod.internet. private )– раздел предназначен для использования производителями оборудования.

Далее, необходимо рассмотреть отдельным пунктом ветку 1.3.6.1.2 (iso.org.dod.internet. mgmt ), состоящую из подветки mib-2 (1) , а так же reserved(0) , pib(2) , http(9) и некоторых других. Стоит отметить, что в зависимости от версии протокола (SNMPv1 vs SNMPv2) на месте данной ветки могут быть «прилинкованы» разные поддеревья в целом имеющие примерно одинаковую структуру и одинаковые идентификаторы, но в более новой версии протокола – поддерево более расширено. (наверно, в этом и состоит несовместимость версий протокола…)

Итак iso.org.dod.internet.mgmt.mib-2 (1.3.6.1.2.1) : данная ветка является базовой для большинства сетевых устройств и содержится практически в любом устройстве. Ветка поделена на базовые группы (которых на текущий момент более 170), характерные для любого сетевого оборудования. Давайте рассмотрим наиболее применяемые:

  1. iso.org.dod.internet.mgmt.mib-2.system (1.3.6.1.2.1.1) - ветка содержит в себе несколько объектов, характеризующих хост (аптайм, версия ОС и др.), описана в RFC1213.
  2. iso.org.dod.internet.mgmt.mib-2.interface (1.3.6.1.2.1.2) - содержит объекты, описывающие сетевую подсистему хоста (количество интерфейсов, размер MTU, скорость передачи, физические адреса и т.п.), описана в RFC2863.
  3. iso.org.dod.internet.mgmt.mib-2.ip (1.3.6.1.2.1.4) – содержит набор объектов, описывающих данные о проходящих IP пакетах (количество запросов, ответов, отброшенных пакетов и мн.др). Описана в RFC1213.
  4. iso.org.dod.internet.mgmt.mib-2.tcp (1.3.6.1.2.1.6) и iso.org.dod.internet.mgmt.mib-2.udp (1.3.6.1.2.1.7) - содержат объекты, хранящие в себе информацию, касающуюся соответствующего транспортного протокола. Описана в RFC1213.
  5. ... И мн. др., которые в принципе имеют довольно наглядное наименование и которые далее «раскрываются» на большее множество объектов.

Отдельного абзаца так же достоин подраздел iso.org.dod.internet.private (1.3.6.1.4) , содержащий в себе поддерево enterprise (1) . Данная ветвь контролируется IANA и содержит в себе более 40000 поддеревьев (ознакомьтесь с актуальным списком http://www.iana.org/assignments/enterprise-numbers). В данной ветке регистрируют свои поддеревья – производители оборудования. Вот пример ответвления:

Ниже структура аналогичная всем остальным разделам – древовидна. В каждом поддереве соответствующий производитель оборудования в праве сам регистрировать свои ветвления и переменные.

Так же, важным моментом, является то, что любая ветвь базы MIB оканчивается переменной , в которую записывается некоторое значение. При этом, в MIB существует несколько типов переменных. Во-первых, они делятся на переменные «только для чтения » и доступные для изменения , которые не позволяют выполнять запрос SetRequest и позволяют выполнять, соответственно. Во-вторых, имеются строковые переменные, табличные и мн.др., значения которых так же идентифицируются по OID. В целом, если нет желания к программированию для SNMP, то этим пониманием и можно ограничиться.

Безопасность протокола SNMP (или версии протокола SNMP)

Безопасность протокола SNMP - это самый изменяемый раздел спецификации протокола со времени его создания. С каждой версией SNMP, производились попытки усилить безопасность. Первая версия протокола SNMPv1 была самой простой и небезопасной. Сообщения протокола могли быть подвержены возможности модификации, подмене или прослушиванию. Безопасность протокола базировалась на модели безопасности на основе сообществ (т.н. Community-based Security Model ), что подразумевало аутентификацию на основе единой текстовой строки - своеобразного пароля (т.н. community-sting ), которая передавалась в теле сообщения в открытом виде. Хотя, данная версия протокола самая незащищенная, она довольно часто применяется в современных сетях, т.к. является самой простой.

В одной из вторых версий SNMP (SNMPv2p) была попытка реализовать аутентификацию на основе сторон (т.н.Party-based Security Model ). Технология кроме аутентификации, так же поддерживала возможность шифрования трафика. Данная технология не прижилась, как "сложная и запутанная") и в данный момент не используется. После чего SNMP второй версии вернулась к Community-based Security и стала именоваться SNMPv2c и применяется по сей день. SNMPv2 была переписана чуть более чем полностью, в результате чего существенно повышено быстродействие протокола, безопасность.

Третья версия протокола (SNMPv3 ) была более удачно доработана и поддерживает как аутентификацию на основе имени пользователя (т.н. User-based Security Model ), так и шифрование трафика . Хотя их можно и не использовать.

Версии протокола между собой не совместимы . Несовместимость заключается в разнице пакетов PDU , в наличии дополнительных команд в более новых версиях протокола (возможно, в других…). В RFC 2576 имеется некоторая информация, позволяющая организовать возможность совместного использования SNMPv1 и v2 . Для этого есть 2 пути: 1. Использование прокси-агентов (агент преобразует PDU SNMPv2 в PDU SNMPv1 ), 2. Использование менеджера с поддержкой 2х версий (менеджер для каждого хоста должен помнить версию агента).

Давайте рассмотрим работу протокола SNMPv2c SNMPv1 ) с точки зрения безопасности. При рассмотрении структуры пакета PDU было видно, что каждая единица PDU содержит community строку. При этом, SNMP агент содержит список (часто данный список состоит из одного значения) разрешенных строк и описание того, что каждая из строк может делать (фактически – набор прав). В большинстве случаев – это права read/write. При активации функций SNMP на каком-либо хосте, стандартные строки community – это public и private для возможности чтения и для возможности чтения-записи соответственно. Это строки очень желательно менять на свои. Часто, при конфигурировании SNMP о, в котором для каждой переменной в поле связанные переменные подставлены установленные значения переменных. В поле error-status помещается значение NoError, а в поле error-index - 0. Значение поля request-id в ответном PDU совпадает с идентификатором в принятом сообщении.пределяют различные community строки для чтения переменных и для записи .

Принципы настройки протокола SNMP

Для того, чтобы SNMP менеджер мог работать с символьными именами OID (ASN.1 нотация), необходимо подсунуть ему соответствующие файлы SMI и MIB, хранящие соответствия символьной записи и цифровой. Для того чтобы SNMP менеджер мог взаимодействовать с каком-либо агентом, необходимо менеджеру указать на этого агента, для чего задать соответствующие настройки, например:

  • Порт отправки
  • Принимать ли trap
  • community для чтения
  • community для записи
  • период опроса
  • OID’ы

В большинстве реализаций менеджеров SNMP (в данном контексте, наверно, лучше сказать – систем управления сетью Network Management System ) предоставлены некие возможности механизма автоматического обнаружения SNMP агентов. В большинстве случаев это сводится к выполнению по расписанию некоторого скрипта, запускаемого в определенный промежуток времени и опрашивающего заданный диапазон IP адресов.

SNMP в Linux

  • RFC 1155 (STD 16) - Структура и идентификация управляющей информации в сетях на основе стека протоколов TCP/IP
  • RFC 1156 (Historic) - База управляющей информации для сетевого управления в сетях на основе стека протоколов TCP/IP
  • RFC 1157 (Historic) - Простой протокол сетевого управления (SNMP)
  • RFC 1213 (STD 17) - База управляющей информации для сетевого управления в сетях на основе стека протоколов TCP/IP: MIB-II
  • RFC 1452 (Informational) - "Сосуществование версий 1 и 2 Интернет-стандарта Network Management Framework (пересмотрен в RFC 1908)
  • RFC 1901 (Experimental) - Введение в SNMPv2 на основе сообществ
  • RFC 1902 (Draft Standard) - Структура управляющей информации для SNMPv2 (пересмотрен в RFC 2578)
  • RFC 1908 (Standards Track) - Сосуществование версий 1 и 2 Интернет-стандарта Network Management Framework
  • RFC 2570 (Informational) - Введение в версию 3 Интернет-стандарта Network Management Framework (пересмотрен в RFC 3410)
  • RFC 2578 (STD 58) - Структура управляющей информации, версия 2 (SMIv2)
  • RFC 3410 (Informational) - Вопросы введения и применения Интернет-стандарта Network Management Framework"
  • STD 62
    • RFC 3411 - Архитектура для описания SNMP Management Framework
    • RFC 3412 - Обработка и отправление сообщений для SNMP
    • RFC 3413 - Приложения SNMP
    • RFC 3414 - Модель безопасности на основе пользователей (USM) для SNMPv3
    • RFC 3415 - View-based Access Control Model (VACM) для SNMP
    • RFC 3416 - Версия 2 протокольных операций для SNMP
    • RFC 3417 - Привязки к транспорту для SNMP
    • RFC 3418 - База управляющей информации (MIB) для SNMP
  • RFC 3430 (Experimental) - SNMP над привязками к транспорту в TCP
  • RFC 3584 (BCP 74) - Сосуществование версий 1, 2 и 3 Интернет-стандарта Network Management Framework
  • RFC 3826 (Proposed) - Алгоритм шифрования AES (Advanced Encryption Standard) в модели безопасности на основе пользователей в SNMP
  • RFC 5343 (Proposed) - Контекстное EngineID-обнаружение в SNMP
  • RFC 5590 (Draft) - Транспортная подсистема для SNMP
  • RFC 5591 (Draft) - Транспортная модель безопасности для SNMP
  • RFC 5592 (Proposed) - Транспортная модель Secure Shell для SNMP
  • RFC 5608 (Proposed) - Использование службы аутентификации удаленных пользователей по коммутируемым каналам связи (RADIUS) в транспортных моделей в SNMP
  • RFC 6353 (Draft) - Транспортная модель TLS для SNMP

С Уважением, Mc.Sim!

Уже немало написано о том, что в названии Simple Network Management Protocol слово Simple можно смело писать в кавычках. Протокол SNMP является достаточно простым с точки зрения создания SNMP-агентов, однако на стороне управляющего ПО (SNMP manager) грамотная обработка сложных по структуре данных обычно является нетривиальной задачей.

Мы попытались упростить процесс настройки сбора данных и событий SNMP и позволить пользователям во время этого процесса:

  • Никогда не заглядывать внутрь MIB-файлов
  • Не знать, что такое OID-ы и никогда не оперировать с ними
  • Не пользоваться отдельной SNMP-утилитой для предварительного просмотра данных во время настройки

Шаг 1: добавляем MIB-файлы

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

Модуль SNMP нашей системы AggreGate Network Manager при старте загружает все MIB-файлы, находящиеся в специальной папке сервера, после чего позволяет добавлять новые при помощи простого диалога:

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

Редактор MIB-ов



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

Таблица MIB-ов


Шаг 2: подключаем SNMP-устройство

В случае построения классической системы мониторинга этот шаг обычно не требуется, так как все устройства добавляются в систему автоматически во время периодического обнаружения устройств (network discovery). Тем не менее, во время добавления обнаруженных сканированием сети устройств выполняются примерно те же шаги:

Шаг 3: изучаем снимок устройства

После завершения этапа подключения устройства системе требуется от нескольких секунд до нескольких минут на завершение опроса устройства в рамках выбранных MIB-ов. Когда пиктограмма устройства становится зеленой, можно открывать и изучать так называемый «снимок устройства»:

В этом снимке сосредоточена практически вся суть нашего подхода к работе с данными SNMP. Прежде всего, он всегда содержит «под рукой» все реальные данные устройства. При этом все данные считываются только один раз, последующий опрос идет только по важным метрикам. Полное перечитывание снимка устройства производится раз в сутки, для снижения нагрузки на сеть его можно вообще отключить. Снимок устройства опционально сохраняется в БД при перезапуске системы мониторинга.

Обычно не требуется прибегать к помощи каких-либо внешних утилит когда требуется найти подходящие данные для мониторинга по их описаниям в MIB-файле или значениям. Все данные уже сгруппированы по MIB-файлам, однако можно сгруппировать их и по иерархии OID-ов:

Чтобы посмотреть подробное описание любой метрики или таблицы, содержащееся в MIB-файле, достаточно навести мышкой на описание или значение метрики. Во всплывающей подсказке также виден тип данных SNMP и полный OID:

Если метрика может принимать одно из нескольких числовых значений, описанных в MIB-файле текстовыми константами, в снимке устройства сразу показывается соответствующая текущему значению константа. Полный список констант и их числовых значений доступен через контекстное меню:

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

Но наибольшую пользу наш метод работы с данными SNMP приносит при обработке таблиц. Каждая SNMP-таблица показывается в снимке устройств как отдельная метрика табличного типа:

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

При наведении на заголовок столбца во всплывающей подсказке видно описание поля, полученное из MIB-файла, а также его тип и OID:

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

На уровне MIB файла эта таблица представляет из себя два столбца (hrSWRunPerfCPU и hrSWRunPerfMem ), расширяющие таблицу hrSWRunTable . В снимке устройства эти таблицы уже объединены, что облегчает анализ данных, построение отчетности и диаграмм, настройку хранения и т.д.

Поскольку единая модель данных платформы AggreGate ориентирована на работу с таблицами, таблицы данных SNMP являются идеальным кандидатом на обработку встроенными средствами. При помощи них реализуется построение топологии L2/L3, анализ данных MPLS TE и MPLS VPN, мониторинг и создание тестов IP SLA, а также сотни более простых задач.

Шаг 4: настраиваем периоды опроса и сроки хранения

AggreGate Network Manager является , поэтому в большинстве случаев после автоматического или ручного добавления устройства периоды опроса и сроки хранения метрик уже преднастроены для всех метрик и таблиц, которые система «понимает», т.е. показывает на инструментальных панелях и анализирует на предмет необходимости генерации тревожных сообщений.

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

Настройки опроса и хранения


В диалоге настроек хранения показывается только срок хранения «сырых» данных в обычной базе данных (реляционной или NoSQL, в зависимости от настроек сервера). В большинстве случаев данные SNMP хранятся в кольцевой базе данных (Round-Robin Database, RRD), которая встроена в платформу AggreGate. На тему создания каналов статистики , которые перекладывают метрики и части таблиц в кольцевую БД, будет отдельная статья.

Шаг 5: переходим к обработке и визуализации данных

Когда данные собираются и сохраняются в БД сервера, можно приступать к их использованию для дела, то есть для мониторинга и управления ИТ инфраструктурой. Контекстное меню любой метрики в снимке устройства предоставляет доступ к визардам, позволяющим начать настройку тревог, отчетов, графиков, запросов, инструментальных панелей, и других средств анализа и визуализации.

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

В результате

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

При настройке мониторинга не требуется ручное указание названий MIB-ов, ввод OID-ов и других низкоуровневых идентификаторов. Это делает настройку SNMP-мониторинга достаточно быстрой и легкой.

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

А поподробнее?

Эта статья вообще не касается получения, обработки и отправки ловушек SNMP, работы по SNMP v3, и многих других аспектов.

Для более подробного рассказа мы приглашаем всех хабражителей на вебинар Мониторинг и управление по SNMP , который состоится 26 мая 2015 года в 11:00 по московскому времени. На этом вебинаре мы «вживую» продемонстрируем весь вышеописанный процесс, а также многие другие способы мониторинга сетевого, серверного и нестандартного оборудования при помощи SNMP.

Расшифровать аббревиатуру SNMP можно как Simple Network Management Protocol, то есть «простой протокол сетевого управления». Этот стандарт является одним из самых часто встречающихся при управлении устройствами в сети. В большинстве случаев этот протокол может быть использован в случаях, когда требуется контролировать исполнение на устройствах подключенных к сети заданных администратором требований. Данные, которые входят в обмен в рамках SNMP представляются в виде переменных . Благодаря им появляется возможность описания настройки управляемого объекта. Благодаря управляющим приложениям могут подаваться запросы, а в некоторых случаях и указываться переменные.

Возможности протокола

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

Основные составляющие SNMP

Самые распространенные составляющие:

  • подчиненный объект – объект, на который отправляются разнообразные команды;
  • MIB database;
  • управляющая программа;
  • подчиненная программа (агент);
  • система, которая обеспечивает взаимодействия в сети.

Информация из объекта будет отправляться на управляющую программу, которая будет интерпретировать ее по заданным алгоритмам. На подчиненном устройстве существует программа агент, предназначенная для организации сбора информации по определенному устройству. Если нужно – программа (ПО) может транслировать эту информацию в формате, адаптированном к особенностям SNMP.

Сама система обеспечения взаимодействия между объектами в сети позволяет администратору работать сразу со многими управляющими программами. Это дает возможность полностью контролировать функционирование инфраструктуры. В сетях могут быть установлены сразу несколько типов такого ПО.

Самым важным элементом считается база управляющих сведений “MIB”. Этот элемент нужен для того, чтобы описать структуру базы данных (БД), что необходимо при обмене информацией в ходе администрирования девайсов. Такая БД дает возможность сохранить данные о компонентах, которые активируются на устройстве для управления им.

Главной составляющей базы являются идентификаторы типа OID, которые позволяют задавать переменные, определяемые и считываемые благодаря SMNP.

Возможности управляющих программ

Такой тип программ дает право на управление группами различных девайсов, расположенных в одном сетевом пространстве. Управляющая программа может работать только в том случае, если ее приложение-агент установлен на всех подчиненных устройствах. Приложение отправляет на сервер администратора нужные данные с помощью SNMP. На главном ПК в это же время функционирует программа-менеджер, которая отвечает за обработку поступающих с приложений-агентов сведений.

Примеры программного обеспечения

Существуют подобные программы, которые адаптированы к использованию на ОС Windows и Solaris. Рассмотрим некоторые из них.

Пакет SNMP от Castle Rock Computing

Это безопасная система сетевого управления, обеспечивающая постоянное наблюдение для всей сети.

Основные характеристики продукта :

  • мониторинг устройств, WAN-соединений, серверов и приложений;
  • поддержка интернет-протокола версии 6 (IPv6);
  • поддержка SNMP v1, v2c и защищенной версии v3;
  • масштабируемая и распределяемая архитектура;
  • поддержка интеграции с сетевыми отчетами SNMPc OnLine;
  • основные/резервные серверы с автоматической отказоустойчивостью;
  • регистрация событий в Syslog;
  • удаленная консоль Windows;
  • автоматическое обнаружение сети;
  • среда для программирования и написания скриптов.

Интерфейс программы:

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

Характеристики:


Утилита для исследования и мониторинга предназначенная для агентских систем. Она предоставлена в стиле проводника в MIB, который открыт на агенте. Имеет самый простой интерфейс из всех представленных, но также и самая сложная в использовании.

Программа позволяет:


Особенности работы базы данных MIB

Главный процесс во время работы MIB – адресация переменных. Происходит она с учетом строения определенного элемента протокола. MIB имеет структуру в виде дерева, состоящую из совокупности элементов за каждым из которых закреплен уникальный ID.

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

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

Что такое OID

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

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

Что такое ловушка SNMP

SNMP-ловушка — знак, который подает девайс, поддерживающий протокол SNMP. Ее основное назначение – сообщать администратору о чрезвычайных происшествиях в сети.

Пример : отдельные типы источников бесперебойного питания посылают такие сигналы во время смены устройством типа питания на питание от аккумуляторов, а не от сети. В большинстве случаев это требует скорейших действий и потому сообщение отправляется устройством по протоколу SNMP самостоятельно. Также к таким ловушкам стоит отнести отдельные марки датчиков вскрытия помещений. Эти датчики возможно подключить к сети, если нужно получать сигнал об открытии дверей.

В службах Windows также существует служба с названием “Служба ловушек SNMP”, выполняющая те же функции. На компьютерах, которые не подключены к локальной сети она не используется, но обычно включена. Для ее отключения необходимо зайти в “Пуск – Панель Управления – Администрирование – Службы” и в открывшемся списке найти указанную службу. Кликнуть по ней правой кнопкой мыши (ПКМ), далее “Свойства ”, затем сменить “Тип запуска” на “Отключена”.

Инсталляция и конфигурирование SNMP

Инсталляция службы

Необходимо сделать следующее:

  1. Перейти по пути «Пуск» – «Панель управления »;
  2. Далее «Установка и удаление программ»;
  3. Найти в левой части окна пункт: «Установка компонентов Windows » и выбрать его;
  4. Далее, пункт «Средства управления и наблюдения» , выбрать его и нажать “Состав”;
  5. Выбрать «Протокол SNMP»;
  6. Нажатиями по кнопкам «ОК» и «Далее» закончить инсталляцию.

Затем перейти к службам Windows и проделать следующее:

  • включить “Служба SNMP ”, это нужно для включения агента;
  • запустить “Служба ловушек SNMP ” для получения сообщений.

Конфигурация агента

Для настройки агента в Windows:

  • нажать «Пуск» – «Выполнить» – ввести «services.msc » и нажать кнопку «Enter» на клавиатуре. В результате откроется консоль управления службами;
  • в правой части выбрать «Служба SNMP» кликнуть по нему ПКМ, затем «Свойства»;
  • перейти к пункту «Агент SNMP». Ввести название и расположение сервера, а также выбрать события, о которых нужно сообщать серверу (если нужно);
  • перейти в «Ловушки» и ввести название группы и имена получателей сообщений-ловушек (если нужно);
  • в «Безопасность » выбрать нужный уровень безопасности для серверов;
  • нажать на кнопку «Применить» и далее «ОК»;
  • щелкнуть правой кнопкой мыши по службе и выбрать пункт «Перезапустить » для применения изменений.

Процесс настройки завершен.

Протокол Simple Network Management Protocol (SNMP) используется для мониторинга, оповещения о событиях и управления устройствами в сети. Протокол состоит из набора стандартов по управления сетью, в том числе протокол прикладного уровня (Application Layer protocol), схемы базы данных и набор объектов данных. SNMP может получать различную информацию (время аптайма, счетчики производительности, параметры устройств и т.д.) от любых сетевых устройств: коммутаторов, серверов, маршрутизаторов или простых компьютеров, на которых установлен агент SNMP.

В Windows 10 служба SNMP доступна в виде отдельного компонента Windows и по умолчанию не устанавливается. Рассмотрим, как установить и настроить SNMP в Windows 10.

Установка службы SNMP в WIndows 10

Вы можете проверить, установлена ли в вашей системе служба SNMP с помощью PowerShell командлета :

Get-Service -Name snmp*

Вы можете установить службу SNMP через панель управления. Перейдите в Панель управления\Все элементы панели управления\Программы и компоненты\ Включение или отключение компонентов Windows).

В списке компонентов выберите Simple Network Management Protocol (SNMP)/протокол, и WMI SNMP Provider / Поставщик WMI для SNMP (обеспечивает доступ к информации SNMP через интерфейсы Windows Management Instrumentation) и нажмите Ок.

Также вы можете установить службы SNMP из командной строки PowerShell:

Enable-WindowsOptionalFeature -online -FeatureName SNMP

Настройка службы SNMP в Windows 10

После установки службы SNMP должны запустится автоматически. Откройте консоль управления Services (services.msc). В списке службы должны появится две новые службы:

  • SNMP Service – это основная служба SNMP агента, которая отслеживают активность и отправляет информацию;
  • SNMP Trap — получает сообщения ловушки (trap messages) от локальных или удаленных агентов SNMP, и пересылает сообщения в управляющие программы SNMP, которые работают на этом компьютере.

Откройте свойства службы SNMP. Если она остановлена, запустите ее, нажав кнопку Start и измените тип запуска (Startup type) на автоматический.

Перейдите на вкладку Agent. Заполните поля contact и location (здесь вы можете указать контактное имя пользователя и местоположение компьютера), и выберите список сервисов, данные которых нужно собирать и отправить устройству мониторинга.

Доступны следующие типы сервисов:

  • Physical
  • Applications
  • Internet
  • End-to-end
  • Datalink and subnetwork

Перейдите на вкладку Security. Здесь вы можете настроить различные параметры безопасности для различных серверов SNMP.

В списке Accepted community names перечислены имена сообществ, чьи SNMP узлы проходят аутентификацию для отправки SNMP-запросов на этот компьютер.

Community — это имя, которое обладает такими же функциями, как логин и пароль.

Нажмите кнопку Добавить и укажите имя Community и один из пяти уровней доступа (None, Notify, READ ONLY, READ WRITE, READ CREATE). READ WRITE – это максимальный уровень доступа, при которых сервер управления SNMP может вносить изменения в систему. В системах мониторинга обычно достаточно выбрать READ ONLY, при этом сервер мониторинга может только опрашивать систему, но не вносить изменения.

Совет . Вы можете выбрать опцию ‘Принимать пакеты SNMP от любого узла’/Accept SNMP packages from these hosts, но это не безопасно.

Сохраните изменения и перезапустите службу SNMP.

На этом настройка службы SNMP в Windows 10 по сути завершена. Если вам нужно включить SNMP сразу на множестве компьютеров, вы можете удаленно установить и настроить службы с помощью PowerShell или GPO.

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

Шаг 1. (Обязательно) Настройте строку сообщества и уровень доступа («только чтение» или «чтение и запись») с помощью команды snmp-server community string ro | rw .

Шаг 2. (Дополнительно) Документально зафиксируйте местоположение устройства с помощью команды snmp-server location text .

Шаг 3. (Дополнительно) Документально зафиксируйте системный контакт с помощью команды snmp-server contact text .

Шаг 4. (Дополнительно) Ограничьте доступ по SNMP, разрешив его только узлам NMS (диспетчерам SNMP), которые разрешены списком контроля доступа: определите список контроля доступа, затем укажите ссылку на этот список контроля доступа с помощью команды snmp-server community string access-list-number-or-name . Эту команду можно использовать как для определения строки сообщества, так и для ограничения доступа SNMP с помощью списков контроля доступа. При желании шаги 1 и 4 можно объединить в один; сетевое устройство Cisco объединяет две команды в одну, если они вводятся по отдельности.

Шаг 5. (Дополнительно) Укажите получателя операций ловушки SNMP с помощью команды snmp-server host host-id [ version { 1 | 2c | 3 [ auth | noauth | priv ]}] community-string . По умолчанию диспетчеры ловушек не определены.

Шаг 6. (Дополнительно) Включите ловушки на агенте SNMP с помощью команды snmp-server enable traps notification-types . Если в этой команде не определены типы уведомлений-ловушек, отправляются все типы ловушек. Если требуется применить конкретные типы ловушек, необходимо повторное использование этой команды.

Примечание . По умолчанию в SNMP не установлены ловушки. Без этой команды диспетчеры SNMP должны будут проводить опрос для получения всей существенной информации.

Проверка настройки SNMP

Существует несколько программных решений для просмотра выходных данных SNMP. В рамках нашего курса сервер Syslog Kiwi отображает сообщения SNMP, связанные с ловушками SNMP.

ПК 1 и R1 настроены для отображения выходных данных, связанных с ловушками SNMP, в диспетчере SNMP.

Как показано на рисунке 1, компьютеру ПК 1 назначен IP-адрес 192.168.1.3/24. Сервер Syslog Kiwi установлен на ПК 1.

После настройки маршрутизатора R1 при возникновении события, подходящего под определение ловушки, на диспетчер SNMP отправляются ловушки SNMP. Например, если состояние интерфейса меняется на активное, на сервер отправляется ловушка. Изменения настройки на маршрутизаторе также вызывают отправку ловушек SNMP диспетчеру SNMP. Список из более чем 60 типов уведомлений-ловушек можно увидеть с помощью команды snmp-server enable traps?. В настройке R1 в команде snmp-server enable traps notification-types не указаны типы уведомлений-ловушек, поэтому отправляются все ловушки.

На рисунке 2 в меню Setup (Настройка) установлен флажок. Это означает, что администратору сети нужно, чтобы программное обеспечение диспетчера SNMP принимало ловушки SNMP через порт UDP 162.

На рисунке 3 верхняя строка выходных данных ловушки SNMP означает, что состояние интерфейса GigabitEthernet0/0 изменилось на активное. Кроме того, при каждом входе в режим глобальной конфигурации из привилегированного режима диспетчер SNMP принимает ловушку, как показано в выделенной строке.

Для проверки настройки SNMP используйте любые варианты командыshow snmp в привилегированном режиме. Самой полезной является просто команда show snmp , так как она отображает информацию, которая обычно представляет интерес при проверке настройки SNMP. Если речь идёт о настройке SNMPv3, при использовании большинства других параметров команды отображаются только отдельные части выходных данных команды show snmp . На рисунке 4 представлен пример выходных данных show snmp .

В выходных данных команды show snmp не отображаются сведения, касающиеся строки сообщества SNMP или связанного списка контроля доступа, если таковой существует. На рисунке 5 представлена строка сообщества SNMP и данные списка контроля доступа, выведенные с помощью команды show snmp community .

Хотя протокол SNMP полезен для мониторинга и отладки (как показано на рисунке), он может привести к возникновению уязвимостей с точки зрения безопасности. По этой причине перед внедрением SNMP изучите лучшие практические рекомендации по обеспечению безопасности.

В SNMPv1 и SNMPv2c используются строки сообщества SNMP в незашифрованном виде для аутентификации доступа к объектам MIB. Строки сообщества, как и любой другой пароль, следует тщательно выбирать, чтобы их было непросто взломать. Кроме того, строки доступа необходимо регулярно менять в соответствии с политиками безопасности сети. Например, строки изменяются, если сетевой администратор меняет роли или уходит из компании. Если протокол SNMP используется только для наблюдения за устройствами, используйте сообщества только для чтения.

Убедитесь, что сообщения SNMP не распространяются за пределы консолей управления. Для предотвращения попадания сообщений SNMP за пределы необходимых устройств используйте списки контроля доступа. Для предоставления доступа только системам управления на контролируемых устройствах также должен использоваться список контроля доступа.

Рекомендуется использовать протокол SNMPv3, обеспечивающий аутентификацию и шифрование. Существует ряд других команд режима глобальной конфигурации, которые сетевой администратор может применять, чтобы воспользоваться преимуществами поддержки аутентификации и шифрования, предоставляемой протоколом SNMPv3:

  • Команда snmp-server group groupname { v1 | v2c | v3 { auth | noauth | priv }} создаёт новую группу SNMP на устройстве.
  • Команда snmp-server user username groupname v3 [ encrypted ] [ auth { md5 | sha } auth-password ] [ priv { des | 3des | aes { 128 | 192 | 256 }} priv-password ] используется для добавления нового пользователя в группу SNMP, определённую в команде snmp-server group groupname .

Примечание . Настройка SNMPv3 выходит за рамки учебных программ CCNA.