Snmp отправка кадра своими руками. Что это — SNMP? Простой протокол сетевого управления

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

SNMP (simple network management protocol, простой протокол сетевого управления) – это стандартный протокол для управления устройствами в IP-сетях. С его помощью серверы могут обмениваться информацией о своем текущем состоянии, а администратор может изменять предварительно определенные значения. Сам протокол очень простой, однако структура основанных на нём программ может оказаться сложной.

Данная статья ознакомит вас с основами протокола SNMP: базовыми понятиями, методами работы, случаями его применения, различными версиями протокола и т.д.

Базовые понятия

Протокол SNMP реализуется на прикладном уровне сетевого стека. Протокол был разработан для согласованного сбора информации из самых разных систем. SNMP использует стандартизированные методы запроса информации и пути.

Существует много различных версий протокола SNMP. Кроме того, протокол частично реализуется некоторыми сетевыми аппаратными устройствами. Наиболее распространённой является версия SNMPv1, но она имеет много уязвимостей; на самом деле, основными причинами её популярности являются её вездесущность и долгое время существования. Вместо неё рекомендуется использовать более безопасную версию SNMPv3.

Сеть на основе SNMP в основном состоит из SNMP-агентов. Агент – это программа, которая собирает информацию об аппаратном устройстве, систематизирует её в предварительно определенные записи, а также отвечает на запросы с помощью протокола SNMP.

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

Менеджеры SNMP

Менеджер SNMP – это машина, которая запрашивает информацию, собранную агентами SNMP. Такая машина гораздо проще устроена, чем клиенты, поскольку она просто запрашивает данные.

Менеджером может быть любая машина, которая может отправлять запросы агентам SNMP, предоставляя валидные учётные данные (например, сервер мониторинга); иногда задачи менеджера выполняет сам администратор с помощью простых утилит для быстрого запроса данных.

Почти все команды SNMP предназначены для менеджера. Например:

GetRequest
GetNextRequest
GetBulkRequest
SetRequest
InformRequest
Response

Кроме того, менеджер может отвечать на Trap и Response.

Агенты SNMP

Агенты SNMP выполняют основную работу. Они отвечают за сбор данных о локальной системе, их хранение в удобном для запросов формате, обновление БД management information base (или просто MIB).

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

Агент определяет, какие менеджеры могут получить доступ к данным. Также агент может выступать в качестве посредника и передавать информацию на устройства, не настроенные для SNMP-трафика.

Агенты SNMP отвечают на большинство команд протокола, среди которых:

GetRequest
GetNextRequest
GetBulkRequest
SetRequest
InformRequest

Также он может отправлять сообщения Trap.

Кратко о MIB

Management Information Base, или MIB – пожалуй, самый сложный компонент системы SNMP. Это иерархическая глобально стандартизированная база данных, которая следует стандартам агентов и менеджеров системы.

Проще всего структуру MIB можно представить в виде перевёрнутого дерева. Каждая ветвь получает порядковый номер (начиная с 1) и уникальную для этого уровня иерархии строку.

Чтобы сослаться на определённый узел, нужно отследить к нему путь в базе. Идентификаторы узла (номера и строки) можно использовать как адрес. Каждый узел в иерархии обозначается точкой. Таким образом, адрес содержит ряд идентификационных строк или чисел, разделенных точками. Такой адрес называется идентификатором объекта (или OID).

MIB предоставляет стандартные ветки, которые может использовать любое устройство. Однако при внедрении SNMP в свое устройство вы можете создавать пользовательские ветки.

Все стандартные ветки принадлежат одной родительской структуре. Эта ветка определяет информацию для спецификации MIB-2 (это пересмотренный стандарт для совместимых устройств).

Базовый путь к этой ветке:

iso.org.dod.internet.mgmt.mib-2

  • Часть 1.3.6.1 или iso.org.dod.internet – это OID, который определяет интернет-ресурсы.
  • 2 или mgmt определяют подкатегории управления.
  • 1 или mib-2 определяют спецификацию MIB-2.

Запрашивая информацию устройств, вы заметите, что большинство адресов начинается с 1.3.6.1.2.1.

Команды протокола SNMP

Отчасти протокол SNMP популярен благодаря простым командам. Он выполняет всего несколько операций, но они достаточно гибки.

Следующие блоки данных протокола описывают точные типы сообщений, которые поддерживает протокол:

  • Get: это сообщение менеджер отправляет агенту, чтобы запросить значение определённого OID. В ответ этот запрос получает сообщение Response, содержащее все необходимые данные.
  • GetNext: это сообщение позволяет менеджеру запрашивать следующий последовательный объект в MIB. Так можно пересечь структуру MIB, не используя в запросах OID.
  • Set: это сообщение менеджер отправляет агенту для того, чтобы изменить значение переменной. С помощью Set можно управлять информацией о конфигурации или иным образом изменять состояние удаленных хостов. Это единственная операция записи, которую поддерживает протокол.
  • GetBulk: этот запрос работает как несколько запросов GetNext. Менеджер получит ответ максимальный объём данных (учитывая ограничения запроса).
  • Response: агент отправляет это сообщение менеджеру, чтобы передать ему запрашиваемые данные. Если запрашиваемые данные нельзя передать, response будет содержать ошибку с дополнительной информацией. Сообщение response отправляется на любой из вышеперечисленных запросов, а также на сообщение Inform.
  • Trap: это сообщение обычно отправляется агентом менеджеру, чтобы предоставить информацию о событиях, которые происходят на управляемых устройствах.
  • Inform: такое сообщение менеджер отправляет агенту в ответ на trap. Если агент не получит такого сообщения, он будет повторно отправлять сообщения trap.

Версии протокола

С момента выхода протокол SNMP прошел через множество изменений. Первая реализация SNMP, сейчас известная как SNMPv1, появилась в 1988 году и состояла из RFC 1065, RFC 1066 и RFC 1067. Эта версия до сих пор широко поддерживается, однако она имеет множество проблем с безопасностью (например, аутентификация в виде обычного текста), поэтому её использование крайне нежелательно, особенно это касается незащищенных сетей.

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

Поэтому появились дополнительные релизы версии 2, каждый из которых сохранил основную часть усовершенствований версии 2, но изменил модель безопасности. Версия SNMPv2c возобновила модель безопасности на основе сообществ (которая была использована в v1); это была самая популярная версия протокола v2. Другая реализация, SNMPv2u, основана на пользовательской модели безопасности, также не стала популярной.

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

  • NoAuthNoPriv: пользователи, подключающиеся на этом уровне, не имеют учётных данных для аутентификации; отправленные и полученные ими сообщения находятся в общем доступе.
  • AuthNoPriv: на этом уровне для подключения нужно пройти аутентификацию, но сообщения не будут зашифрованы.
  • AuthPriv: обязательная аутентификация, сообщения шифруются.

Кроме новых моделей аутентификации был реализован механизм контроля доступа, который управляет доступом пользователей к веткам. Версия 3 также может использовать протоколы безопасности SSH или TLS.

Tags: ,

SNMP - это протокол прикладного уровня, разработанный для стека TCP/IP, хотя имеются его реализации и для других стеков, например IPX/SPX. Протокол SNMP используется для получения от сетевых устройств информации об их статусе, производительности и других характеристиках, которые хранятся в базе данных управляющей информации MIB (Management Information Base). Простота SNMP во многом определяется простотой MIB SNMP, особенно их первых версий MIB I и MIB II. Кроме того, сам протокол SNMP также весьма несложен.

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

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

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

    Команда Get-request используется менеджером для получения от агента значения какого-либо объекта по его имени.

    Команда GetNext-request используется менеджером для извлечения значения следующего объекта (без указания его имени) при последовательном просмотре таблицы объектов.

    С помощью команды Get-response агент SNMP передает менеджеру ответ на команды Get-request или GetNext-request.

    Команда Set используется менеджером для изменения значения какого-либо объекта. С помощью команды Set происходит собственно управление устройством. Агент должен понимать смысл значений объекта, который используется для управления устройством, и на основании этих значений выполнять реальное управляющее воздействие - отключить порт, приписать порт определенной VLAN и т. п. Команда Set пригодна также для установки условия, при выполнении которого агент SNMP должен послать менеджеру соответствующее сообщение. Может быть определена реакция на такие события, как инициализация агента, рестарт агента, обрыв связи, восстановление связи, неверная аутентификация и потеря ближайшего маршрутизатора. Если происходит любое из этих событий, то агент инициализирует прерывание.

    Команда Trap используется агентом для сообщения менеджеру о возникновении особой ситуации.

    Версия SNMP v.2 добавляет к этому набору команду GetBulk, которая позволяет менеджеру получить несколько значений переменных за один запрос.

SNMP работает на прикладном уровне TCP/IP (седьмой уровень модели OSI). Агент SNMP получает запросы по UDP-порту 161. Менеджер может посылать запросы с любого доступного порта источника на порт агента. Ответ агента будет отправлен назад на порт источника на менеджере. Менеджер получает уведомления (Traps и InformRequests) по порту 162. Агент может генерировать уведомления с любого доступного порта. При использовании TLS или DTLS запросы получаются по порту 10161, а ловушки отправляются на порт 10162.

В SNMPv1 указано пять основных протокольных единиц обмена (protocol data units - PDU). Еще две PDU, GetBulkRequest и InformRequest, были введены в SNMPv2 и перенесены в SNMPv3.

Все PDU протокола SNMP построены следующим образом:

Ниже перечислены семь протокольных единиц обмена SNMP:

GetRequest

Запрос от менеджера к объекту для получения значения переменной или списка переменных. Требуемые переменные указываются в поле variable bindings (раздел поля values при этом не используется). Получение значений указанной переменной должно быть выполнено агентом как Атомарная операция . Менеджеру будет возвращён Response (ответ) с текущими значениями.

SetRequest

Запрос от менеджера к объекту для изменения переменной или списка переменных. Связанные переменные указываются в теле запроса. Изменения всех указанных переменных должны быть выполнены агентом как атомарная операция. Менеджеру будет возвращён Response с (текущими) новыми значениями переменных.

GetNextRequest

Запрос от менеджера к объекту для обнаружения доступных переменных и их значений. Менеджеру будет возвращён Response со связанными переменными для переменной, которая является следующей в базе MIB в лексиграфическом порядке. Обход всей базы MIB агента может быть произведён итерационным использованием GetNextRequest, начиная с OID 0. Строки таблицы могут быть прочтены, если указать в запросе OID-ы колонок в связанных переменных.

GetBulkRequest

Улучшенная версия GetNextRequest. Запрос от менеджера к объекту для многочисленных итераций GetNextRequest. Менеджеру будет возвращён Response с несколькими связанными переменными, обойдёнными начиная со связанной переменной (переменных) в запросе. Специфичные для PDU поля non-repeaters и max-repetitions используются для контроля за поведением ответа. GetBulkRequest был введён в SNMPv2.

Response

Возвращает связанные переменные и значения от агента менеджеру для GetRequest, SetRequest, GetNextRequest, GetBulkRequest и InformRequest. Уведомления об ошибках обеспечиваются полями статуса ошибки и индекса ошибки.

Эта единица используется как ответ и на Get-, и на Set-запросы, в SNMPv1 называется GetResponse .

Trap

Асинхронное уведомление от агента - менеджеру. Включает в себя текущее значение sysUpTime, OID, определяющий тип trap (ловушки), и необязательные связанные переменные. Адресация получателя для ловушек определяется с помощью переменных trap-конфигурации в базе MIB. Формат trap-сообщения был изменён в SNMPv2 и PDU переименовали в SNMPv2-Trap.

InformRequest

Асинхронное уведомление от менеджера менеджеру или от агента менеджеру. Уведомления от менеджера менеджеру были возможны уже в SNMPv1 (с помощью Trap), но SNMP обычно работает на протоколе UDP, в котором доставка сообщений не гарантирована, и не сообщается о потерянных пакетах. InformRequest исправляет это обратным отправлением подтверждения о получении. Получатель отвечает Response-ом, повторяющим всю информацию из InformRequest. Этот PDU был введён в SNMPv2.

Разработка и использование

Версия 1

SNMP, версия 1 (SNMPv1) - изначальная реализация протокола SNMP. SNMPv1 работает с такими протоколами, как UDP, IP, CLNS, DDP и IPX. SNMPv1 широко используется и де-факто является протоколом сетевого управления в Интернет-сообществе.

Первые RFC для SNMP, сейчас известные как SNMPv1, появились в 1988г:

  • RFC 1065
  • RFC 1066
  • RFC 1067

Эти протоколы были пересмотрены в следующих RFC:

  • RFC 1155 - Структура и идентификация управляющей информации в сетях на основе стека протоколов TCP/IP
  • RFC 1156 - База управляющей информации для сетевого управления в сетях на основе стека протоколов TCP/IP
  • RFC 1157 - Простой протокол сетевого управления
  • Настройка SNMP на Cisco as53xx

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

Список № 1: Разрешить доступ из сети 10.26.95.224/27 или 255.255.255.224

as5350(config)#access-list 1 permit 10.26.95.224 0.0.0.31

Список № 2: Разрешить доступ с IP 10.26.95.254 и 10.26.95.251

as5350(config)#access-list 2 permit host 10.26.95.254

as5350(config)#access-list 2 permit host 10.26.95.251

Настройка snmp-server для чтения и записи со строкой сообщества xxas5300xx. SNMP-доступ разрешён только для access-list 2 (для 2-х IP, для остальных IP неявно запрещён)

as5350(config)#snmp-server community xxas5300xx rw 2

Разрешаем reload циски по SNMP.

as5350(config)#snmp-server system-shutdown

Уже немало написано о том, что в названии 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 - простой протокол управления сетью) - это протокол управления сетями связи на основе архитектуры TCP/IP, седьмого уровня (уровень приложений) семиуровневой модели OSI . SNMP дает возможность станциям управления сетью читать и изменять настройки шлюзов, маршрутизаторов, коммутаторов и других сетевых устройств. Используйте SNMP для настройки системных характеристик для правильной работы,контроля характеристик и обнаружения потенциальных проблем в коммутаторе, группе коммутаторов или сети.

Используемые порты: 161/UDP,162/UDP

SNMP-trap (ловушки SNMP) Traps - это аварийные сообщения, сообщающие о событиях, происходящих в коммутаторе. События могут быть такими серьезными, как перезапуск (кто-нибудь случайно выключил коммутатор) или менее, как например, изменение статуса порта. Коммутатор создает сообщения «traps» и отправляет их к «trap» получателю (или сетевому менеджеру). Обычные «traps» содержат сообщение об ошибке аутентификации Authentication Failure , изменении топологии сети Topology Change и широковещательном шторме Broadcast\Multicast Storm.

SNMP безопасность

К сожалению , наиболее часто используемая версия 1 протокола SNMP имеет довольно слабую схему аутентификации, основанную на использовании “строки сообщества”. Это связано с тем, что фиксированный пароль передается по сети в открытом виде. По возможности старайтесь использовать 2-ю версию протокола SNMP , которая поддерживает схему проверки подлинности выборки на основе алгоритма MD5 и позволяет ограничить доступ к различной управляющей информации.

Протокол SNMP версии 1 не подходит для использования в общедоступной сети Интернет по следующим причинам:

    Он использует незашифрованные строки проверки подлинности.

    В большинстве реализаций SNMP такие строки отправляются неоднократно как часть периодических опросов.

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

Структура MIB. SMI. OID

    MIB (Management Information Base) - база данных информации управления, используемая в процессе управления сетью в качестве модели управляемого объекта в архитектуре агент-менеджер. В частности используется протоколом SNMP .

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

В агенте может быть реализовано много MIB, но во всех агентах реализована конкретная MIB, которая называется MIB-II (RFC 1213). Этот стандарт определяет переменные для таких параметров, как статистика интерфейса (скорость интерфейса, MTU, количество отправленных октетов1, количество принятых октетов и т.д.), а также различных параметров, относящихся к самой системе (местоположение системы, контактные сведения и т.д.) Основная цель MIB-II – предоставить общую управляющую информацию TCP/IP.

    SMI (The Structure of Management Information). Струк­ту­ра ин­фор­ма­ции для управ­ле­ния точ­но оп­ре­де­ля­ет, как управ­ляе­мым объ­ек­там при­сваи­ва­ют­ся име­на, и ука­зы­ва­ет свя­зан­ные с ни­ми ти­пы дан­ных.

    OID (Object Identifier) уникальный иден­ти­фи­ка­тор объ­ек­та.

Управ­ляе­мые объ­ек­ты (OID) ор­га­ни­зо­ва­ны в дре­во­вид­ную ие­рар­хию. Со­сре­до­то­чим­ся на суб­де­ре­ве so(1).org(3).dod(6).in­ternet(1), ко­то­рое в фор­ме OID пред­став­ля­ет­ся как 1.3.6.1 или iso.org.dod.internet. У ка­ж­до­го управ­ляе­мо­го объ­ек­та есть циф­ро­вой иден­ти­фи­ка­тор OID и со­от­вет­ст­вую­щее тек­сто­вое имя. Обо­зна­че­ние в ви­де раз­де­лен­ных точ­ка­ми чи­сел ис­поль­зу­ет­ся для пред­став­ле­ния управ­ляе­мо­го объ­ек­та внут­ри аген­та; тек­сто­вое имя, как до­мен­ное имя, со­от­вет­ст­вую­щее IP- ад­ре­су, из­бав­ля­ет лю­дей от не­об­хо­ди­мо­сти за­по­ми­нать длин­ные, слож­ные стро­ки чи­сел.

    Ветвь directory в на­стоя­щее вре­мя не ис­поль­зу­ет­ся.

    Ветвь management (или mgmt) , оп­ре­де­ля­ет стан­дарт­ный на­бор управ­ляе­мых объ­ек­тов Ин­тер­не­та.

    Ветвь experimental за­ре­зер­ви­ро­ва­на для це­лей тес­ти­ро­ва­ния и ис­сле­до­ва­ния.

    Объ­ек­ты вет­ви private оп­ре­де­ля­ют­ся в од­но­сто­рон­нем по­ряд­ке, то есть за оп­ре­де­ле­ние объ­ек­тов этой вет­ви лю­ди и ор­га­ни­за­ции от­ве­ча­ют са­ми.

В на­стоя­щее вре­мя в суб­де­ре­ве private(4) есть од­на ветвь enterprises(1). Она ис­поль­зу­ет­ся для то­го, что­бы пре­дос­та­вить про­из­во­ди­те­лям ап­па­рат­но­го и про­грамм­ но­го обес­пе­че­ния воз­мож­ность оп­ре­де­лить свои соб­ст­вен­ные ча­стные объ­ек­ты для лю­бо­го ти­па ап­па­рат­ных или про­грамм­ных средств, ко­то­ры­ми они хо­тят управ­лять при по­мо­щи SNMP. SMI Network Management Private Enterprise Codes : D-Link (171), Cisco(9), Microsoft (311).

MIB-II

Основная цель MIB-II – предоставить общую управляющую информацию TCP/IP. MIB-II – очень важ­ная груп­па управ­ле­ния, по­то­му что ка­ж­дое уст­рой­ст­во, под­дер­жи­ваю­щее SNMP, долж­но так­же под­дер­жи­вать MIB-II .

MIB-II оп­ре­де­ле­на как iso.org.dod.internet.mgmt.1, или 1.3.6.1.2.1.

Опи­са­ние групп MIB-II
Имя суб­де­ре­ва OID Опи­са­ние
1 system 1.3.6.1.2.1.1 Оп­ре­де­ля­ет спи­сок объ­ек­тов, от­но­ся­щих­ся к ра­бо­те сис­те­мы, та­ких как вре­мя ра­бо­ты сис­те­мы, кон­такт­ная ин­фор­ма­ция и имя сис­те­мы
2 interfaces 1.3.6.1.2.1.2 От­сле­жи­ва­ет со­стоя­ние ка­ж­до­го ин­тер­фей­са на управ­ляе­мой сис­те­ме. Груп­па interfaces от­ сле­жи­ва­ет, ка­кие ин­тер­фей­сы ра­бо­та­ют и не ра­бо­та­ют, и та­кие па­ра­мет­ры, как ко­ли­че­ст­во от­прав­лен­ных и по­лу­чен­ных ок­те­тов, оши­бок и по­терь па­ке­тов и т. д.
3 at 1.3.6.1.2.1.3 Груп­па транс­ля­ции ад­ре­сов (at) ис­клю­че­на и пре­дос­тав­ля­ет­cя толь­ко для об­рат­ной со­вмес­ти­мо­сти
4 ip 1.3.6.1.2.1.4 От­сле­жи­ва­ет мно­гие ас­пек­ты IP, в том чис­ле IP-мар­шру­ти­за­цию
5 icmp 1.3.6.1.2.1.5 От­сле­жи­ва­ет ошиб­ки, по­те­ри па­ке­тов ICMP и т. д.
6 tcp 1.3.6.1.2.1.6 По­ми­мо про­че­го от­сле­жи­ва­ет со­стоя­ние TCP- со­еди­не­ния (на­при­мер, closed (за­кры­то), listen(порт про­слу­ши­ва­ет­ся), synSent (от­прав­лен па­кет syn) и т. д.)
7 udp 1.3.6.1.2.1.7 От­сле­жи­ва­ет ста­ти­сти­ку UDP, вхо­дя­щие и ис­хо­дя­щие да­та­грам­мы и т. д.
8 egp 1.3.6.1.2.1.8 От­сле­жи­ва­ет раз­лич­ную ста­ти­сти­ку про­то­ко­ла EGP (Exterior Gateway Protocol) и хра­нит таб­ли­цу со­се­дей EGP
9 cmot
10 transmission 1.3.6.1.2.1.10 В на­стоя­щее вре­мя в этой груп­пе не оп­ре­де­ле­но объ­ек­тов, но дру­гие MIB для кон­крет­ных ка­на­лов пе­ре­да­чи оп­ре­де­ля­ют­ся при по­мо­щи это­го суб­де­ре­ва
11 snmp 1.3.6.1.2.1.11 Из­ме­ря­ет про­из­во­ди­тель­ность ба­зо­вой реа­ли­за­ции SNMP на управ­ляе­мой сис­те­ме и от­сле­жи­ва­ет та­кие па­ра­мет­ры, как ко­ли­че­ст­во от­прав­лен­ных и по­лу­чен­ных SNMP-па­ке­тов

На самом деле интересны только две ветви: 1.3.6.1.2.1 = Стандартные MIBы 1.3.6.1.4.1 = MIBы специфичные для производителей

Пакет Net-SNMP

Инсталляция Net-SNMP Ubuntu

aptitude install snmp snmp-mibs-downloader

Для загрузки и подключения стандартных MIB к SNMP клиенту выполним две команды

/ usr/ bin/ download-mibs sed -i "s/^mibs/#mibs/g" / etc/ snmp/ snmp.conf

Инсталляция Net-SNMP CentOS

yum install net-snmp-utils net-snmp snmpwalk -v 2c -c public localhost

Ути­ли­та Net-SNMP snmpusm при­ме­ня­ет­ся для управ­ле­ния поль­зо­ва­те­ля­ми SNMPv3.Три ба­зо­вых опе­ра­ции SNMP – это snmpget , snmpset и snmpwalk . Их на­зна­че­ние по­нят­но из на­зва­ния: snmpget счи­ты­ва­ет зна­че­ние па­ра­мет­ра с управ­ляе­мо­го уст­рой­ст­ва, snmpset ус­та­нав­ли­ва­ет зна­че­ние па­ра­мет­ра на уст­рой­ст­ве, а snmpwalk счи­ты­ва­ет с уст­рой­ст­ва часть де­ре­ва MIB.

PHP and SNMP

Чтобы при помощи языка PHP (SNMP Функции) взаимодействовать с протоколом SNMP, должны быть установлены дополнительный пакеты:

aptitude install php5-snmp php5-cli snmp1.php "IF-MIB::ifName - The textual name of the interface.\n " ; print_r (snmp2_real_walk ($opt [ "h" ] , "public" , "IF-MIB::ifName" ) ) ; ?> $ php snmp1.php -h 192.168.10.11 IF-MIB::ifName - The textual name of the interface. Array ( [ IF-MIB::ifName.1] => STRING: lo [ IF-MIB::ifName.2] => STRING: eth0 [ IF-MIB::ifName.3] => STRING: eth1 [ IF-MIB::ifName.4] => STRING: br0 [ IF-MIB::ifName.5] => STRING: wifi0 [ IF-MIB::ifName.6] => STRING: ath0 [ IF-MIB::ifName.7] => STRING: ath1 )

Публикации по теме