
В сети объединены устройства всех видов — от компьютеров, серверов, коммутаторов или маршрутизаторов до принтеров и так далее. Чем больше число участников, тем больше усилий и трудностей приходится прилагать администратору для управления ими. По этой причине использование инструментов управления является жизненно важным, если необходимо гарантировать функциональность и безопасность всех систем в долгосрочной перспективе. Одним из протоколов, используемых многими из этих программных решений, является «Простой протокол управления сетью» — или просто SNMP, который является одним из наиболее важных стандартных протоколов, поддерживаемых сегодня почти всеми терминальными устройствами.
Что такое SNMP?
После двух лет разработки первая официальная версия SNMP была опубликована в RFC 1157 в мае 1990 года. Рабочая группа IETF (Internet Engineering Task Force) отвечает за этот сетевой протокол, который входит в семейство интернет-протоколов и в настоящее время также доступен в версиях SNMPv2 и SNMPv3.Основная функция протокола SNMP заключается в обеспечении централизованного мониторинга и управления всеми компонентами компьютерной сети. Для этого он описывает структуру необходимых коммуникационных пакетов и поток связи между центральной станцией и отдельными устройствами.
Для передачи пакетов используется протокол UDP без установления соединения. Передаваемые данные и информация хранятся в древовидной структуре в базе управляющей информации (MIB).
Объяснение SNMP: как работает SNMP
Управление сетью с помощью SNMP основано на модели агент-менеджер. Центральная станция управления — это система, с которой администратор осуществляет мониторинг и управление различными участниками сети. Для этого устанавливается управляющее программное обеспечение, которое позволяет получать данные SNMP и инициировать определенные действия. Агенты, которые также являются приложениями, представляют собой аналог на стороне отдельных сетевых компонентов. Вы вводите соответствующие данные на целевом узле и передаете их на станцию управления, но вы также можете самостоятельно выполнять настройки и инициировать определенные действия. Подобные агентские приложения уже используются по умолчанию в большинстве популярных систем Windows и Linux, например, в виде демона snmpd (только для Linux).
Протокол SNMP определяет семь возможных типов сообщений для связи между менеджером и агентом:
- GET-запрос: Запросы GET — это стандартные сообщения для получения определенной записи на предполагаемом сетевом устройстве.
- Запрос GETNEXT: Этот формат сообщения требуется, если необходимо запросить последующие записи данных, например, для таблиц.
- Запрос GETBULK: Если одним запросом необходимо получить определенное количество записей данных, управляющее приложение может отправить запрос GETBULK (из SNMPv2). Такой запрос можно сравнить с несколькими последовательными запросами GETNEXT.
- Запрос SET: Запросы SET позволяют менеджеру изменить одну или несколько записей данных предполагаемого сетевого устройства или вызвать определенные действия. Примером ситуации, в которой необходимо несколько изменений, является конфигурирование IP-адреса, которое одновременно требует указания сетевой маски.
- GET-ответ: Если менеджер запросил одну или несколько записей данных или инициировал изменения или действия, агент отвечает GET-ответами. Эти пакеты ответов содержат либо запрошенные данные, либо подтверждение корректировок, либо сообщение об ошибке, если на запросы не удалось ответить правильно.
- SNMP-ловушка: SNMP-ловушки — это сообщения агента, отправленные без подсказок со станции менеджера. Это может произойти, если происходит что-то неожиданное. Ловушки SNMP могут сообщать о событии двумя способами. Первый вариант заключается в добавлении уникального идентификационного номера, значение которого менеджер может искать в информационной базе данных (MIB). Если выбран вариант номер два, SNMP-ловушки не только информируют о событии, но и содержат соответствующие данные без отображения конкретного идентификационного номера.
- Запрос INFORM: Запросы INFORM в основном выполняют ту же функцию, что и ловушки SNMP. Однако, в отличие от них, пакеты INFORM характеризуются тем, что их получение подтверждается менеджером. В результате агент может повторно отправить сообщение, если оно не дошло до менеджера с первой попытки.
Как уже упоминалось, простой протокол управления сетью предписывает использование транспортного протокола UDP без соединений для передачи перечисленных пакетов сообщений. SNMP использует порт UDP 161 для различных GET-запросов к агентам (включая ответы), в то время как автоматически отправляемые SNMP-ловушки передаются через порт UDP 162.
Сравнение различных версий протокола SNMP
Изначально SNMP не предоставлял способа для менеджеров общаться друг с другом, а также для агентов отправлять сообщения, которые подтверждаются. Кроме того, поддержка многих приложений вначале работала лишь частично, несмотря на подход в качестве открытого стандарта. Поэтому пересмотр протокола в последующие годы был, в частности, направлен на интеграцию соответствующих механизмов в Simple Network Management Protocol. Еще одной важной целью ответственной рабочей группы IETF, которая нашла отражение, в частности, в третьей версии протокола, было сделать процедуру администрирования более безопасной. Эти и другие шаги по оптимизации протокола SNMP более подробно рассматриваются в следующих портретах отдельных версий SNMPv1, SNMPv2 и SNMPv3.
SNMPv1
SNMPv1 — это первая версия протокола сетевого управления, обеспечивающая базовую модель «менеджер-агент» и являющаяся основой для связи между станцией менеджера и отдельными агентами. Простой протокол управления сетью описывается как простой протокол, который работает на уровне приложений и может быть основан на UDP (User Datagram Protocol) и Internet Protocol (IP), а также на сопоставимых сетевых протоколах, таких как AppleTalk’s Datagram Delivery Protocol (DDP) или Internet Packet Exchange (IPX). Единственным встроенным механизмом безопасности является обмен так называемой строкой сообщества, которая отправляется вместе с соответствующими запросами.
SNMPv2
Основная проблема первой версии протокола SNMP заключается в том, что строка сообщества безопасности передается только в виде обычного текста. По этой причине разработчики быстро создали новый вариант под названием secure SNMP, в котором эта строка передается в зашифрованном виде. Однако этот вариант так и не был выпущен, поскольку был напрямую заменен SNMPv2. Дальнейшие усовершенствования по сравнению с оригинальным вариантом протокола включают оптимизированную обработку ошибок, возможность связи между менеджерами, а также более функциональные команды SET. Однако самым большим преимуществом по сравнению с SNMPv1 стали новые реализованные типы сообщений GETBULK (для запроса нескольких данных в одном запросе) и INFORM (для подтверждения ответов агентов).
SNMPv3
После первого, менее масштабного шага во второй версии протокола, IETF полностью сосредоточилась на безопасности в SNMPv3 и заменила строку сообщества на имя пользователя и пароль. Кроме того, третье исполнение протокола содержит функции шифрования передачи SNMP-пакетов, в отличие от предшественников. В целом, SNMPv3 предлагает три различных типа аутентификации и шифрования:
Аутентификация | Шифрование | Имя пользователя | Пароль | |
---|---|---|---|---|
noAuthNoPriv | нет | нет | да | нет |
authNoPriv | да | нет | да | да |
authPriv | да | да | да | да |
Если управляющая станция поддерживает третью версию протокола SNMP, ее всегда следует предпочесть более старым версиям протокола. Также имеет смысл использовать максимально возможный уровень безопасности SNMPv3 (authPriv), если устройство это позволяет.