Протокол управления SNMP
SNMP — протокол управления прикладного уровня. С его помощью сетевые устройства обмениваются данными. По сути, SNMP-протокол — это свод соглашений, который входит в состав модели TCP/IP.
Архитектура
Станция с менеджером следит за удаленными устройствами, собирает данные от агентов, контролирует производительность и рисует графики для наглядного представления состояния.
Агенты делятся на мастеров и субагентов. Мастер следит за запросами сетевого менеджера и пересылает их субагентам. После этого он собирает ответы субагентов и отправляет их сетевому менеджеру. Если данные недоступны или произошла ошибка, присылает соответствующее уведомление менеджеру.
Субагенты — программы, которые вендор поставляет вместе с устройством. Ими оснащены все управляемые компоненты.
Управляемый компонент — устройство или программное обеспечение с субагентом, подсоединенное к сети. Коммутаторы, маршрутизаторы, серверы, антивирусы — все они могут быть управляемыми компонентами.
Сведения обо всех устройствах собраны в базе — SNMP MIB . У каждого из них своя таблица, из которой сетевой менеджер узнает, какую информацию можно запросить: например, состояние картриджей от принтера или объем трафика от маршрутизатора.
Все объекты внутри MIB оснащены SNMP OID — уникальным идентификационным номером. Он есть у каждой таблицы, столбца, значения. Часть данных в OID рассказывает о производителе устройства.
Принцип работы
SNMP предназначался для управления сетью. Но гибкая структура сделала его удобным инструментом для мониторинга устройств и настройки сети через единую консоль.
Работа протокола строится на взаимодействии менеджеров с агентами. Они связываются по протоколу UDP, также может быть использован TCP или протокол MAC-уровня.
Юнит информации (PDU) включает несколько полей. Среди них:
- Версия протокола.
- Community — последовательность, по которой определяется групповая принадлежность.
- Статус-код — описывает состояние. Если ошибок нет, приходит ноль, а если есть — цифра, которая относится к соответствующей ошибке.
- Индекс переменной, в работе которой зафиксирована ошибка.
Дефолтно специальный SNMP PORT — 161 и 162.
Запросы приходят на 161 порт. Отсюда менеджеру уходят ответы. Для идентификации указывается ID. Это помогает быстро связать ответы менеджера и запросы агента.
Порт 162 принимает ловушки ( SNMP Trap ) — это такой способ общения. Агент применяет ловушки, чтобы проинформировать менеджера о событии.
Благодаря этому с менеджера снимается дополнительная нагрузка. Он и так следит за несколькими устройствами и управляет несколькими компонентами одновременно. Из-за этого менеджер не всегда ловит ошибки. Механизм ловушек устраняет этот недостаток. После получения ловушки менеджер решает, что нужно сделать.
Версии
Существует три версии протокола.
- SNMP v1 — появилась 40 лет назад, до сих пор успешно применяется. Предлагает самые простые настройки — своеобразный SNMP для чайников .
- SNMP v2с — появилась в начале 90-х годов. В этой версии добавился запрос GetBulk. Также разработчики реализовали второй тип ловушки — Inform. В отличие от Trap, здесь отправляется подтверждение о получении.
- SNMP v3 — появилась в конце 90-х годов. В этой версии протокол защитили криптографически.
- Удаленный сброс паролей.
- Мониторинг пропускной способности сети.
- Перенастройка IP-адресов.
- Отправка запроса для проверки сетевых устройств.
- Получение оповещений о нехватке свободного пространства на диске.
- Контроль нагрузки на процессор, получение уведомлений о превышении допустимых значений.
- Получение оповещений о неисправностях в работе сетевого устройства.
- Логирование ошибок.
Безопасность
Когда появилась первая версия SNMP, риск неавторизованного доступа оставался крайне низким. Поэтому разработчики не сильно переживали о защите соединения. Это привело к тому, что у злоумышленников оставалось много возможностей для несанкционированного доступа к сетевой инфраструктуре.
Самые продвинутые механизмы защиты реализовали в третьей версии. Здесь применяется модель защиты на основе пользователей (User-based Security Model). И для агента, и для менеджера можно изменить параметры аутентификации, безопасности, конфиденциальности.
В v3 также используется модель VACM (View-based Access Control Model). В ней для разных групп менеджеров можно установить разные права доступа.
В первой и второй версиях протокола используется модель безопасности Community-based Security. По сути, это идентификатор пользователя и пароль, которые посылаются вместе с запросом в строке сообщества. Если строка Community неверна, агент отвергает запрос.
Применение
Вот лишь несколько сценариев, в которых SNMP приносит пользу администраторам:
Стороннее ПО также помогает добавлять сведения через кастомные SNMP OID и администрировать облачные сервисы, заказанные на cloud.timeweb.com , Amazon Web Services, Microsoft Azure и других платформах.
Установка и настройка на примере CentOS 7
Установите SNMP, используя snmp net :
yum install net-snmp net-snmp-utils
Сделайте копию файла конфигурации:
mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig
Отредактируйте настройки. Откройте snmpd.conf в редакторе nano:
community public
syslocation MyLocation
syscontact admin@example.com
Укажите реальную локацию и контакт.
Включите автозапуск и перезапустите сервис:
systemctl enable snmpd.service
systemctl start snmpd
Убедитесь, что сервис запустился:
Опросите агент локально, используя утилиту snmpwalk :
snmpwalk -v 2c -c public -O e 127.0.0.1
snmpwalk -v2c -c public localhost system
Ненамного сложнее SNMP настраивается на Windows. Подробная инструкция есть в документации Microsoft .
Заключение
SNMP — простой протокол для обмена информацией между устройствами. Он помогает настроить связь между оборудованием, которое выпущено различными вендорами и использует различное ПО. SNMP-мониторинг даже спустя несколько десятилетий после появления протокола остается одним из лучших решений для контроля сети.