Документация: ПО Факел — разрабатываемая версия

Протокол SNMP

Обзор

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

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

Существуют три основные версии протокола SNMP. SNMPv1 — это начальная версия протокола. Более поздние версии, SNMPv2c и SNMPv3, содержат улучшения в производительности, гибкости и безопасности. SNMP является компонентом пакета интернет-протоколов, определенного Рабочей группой разработчиков Интернета IETF. Пакет состоит из набора стандартов для управления сетью, включая протокол прикладного уровня, схему базы данных и набор объектов данных.

Основные понятия

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

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

  • Управляемые устройства;

  • Агент — программное обеспечение, работающее на управляемых устройствах;

  • Станция сетевого управления (NMS) — управляющее программное обеспечение.

Управляемое устройство — это сетевой узел, в котором реализован интерфейс SNMP, обеспечивающий однонаправленный (только чтение) или двунаправленный (чтение и запись) доступ к специфической информации узла. Управляемые устройства обмениваются информацией о конкретном узле с NMS. Иногда называемые сетевыми элементами, управляемые устройства могут быть любого типа, в частности, маршрутизаторы, серверы доступа, коммутаторы, кабельные модемы, мосты, концентраторы, IP-телефоны, IP-видеокамеры, компьютерные узлы и принтеры.

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

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

Принцип взаимодействия SNMP

SNMP поддерживает как IPv4, так и IPv6.

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

ПО Факел поддерживает SNMPv2 (версия 2) и SNMPv3 (версия 3), причем SNMPv3 рекомендуется из-за повышенной безопасности (аутентификация и шифрование).

SNMPv2

SNMPv2 — наиболее часто используемая версия. Для авторизации клиентов SNMP использует концепцию сообществ (community). Сообщества могут иметь авторизацию только на чтение (это наиболее распространенный вариант) или на чтение и запись. SNMP может работать синхронно или асинхронно. При синхронной связи система мониторинга периодически опрашивает маршрутизатор. При асинхронном — маршрутизатор отправляет хосту мониторинга уведомления «ловушки» (trap). SNMPv2 не поддерживает никаких механизмов аутентификации, кроме адреса источника клиента, поэтому необходимо указать адреса клиентов, которым разрешен мониторинг маршрутизатора. Обратите внимание, что SNMPv2 также не поддерживает шифрование и всегда отправляет данные в виде обычного текста.

SNMPv3

В протоколе SNMPv3 (версия 3) представлен целый ряд новых функций, связанных с безопасностью, которые отсутствовали в предыдущих версиях. Безопасность была одним из самых слабых мест SNMP до версии 3. Аутентификация в SNMP версий 1 и 2 представляет собой не более чем пароль (строка сообщества), передаваемый открытым текстом между менеджером и агентом. Каждое сообщение SNMPv3 содержит параметры безопасности, которые кодируются в виде октетной строки. Значение этих параметров безопасности зависит от используемой модели безопасности. Подход к обеспечению безопасности в SNMPv3 направлен на:

  • Конфиденциальность. Шифрует и предотвращает прослушивание неавторизованным источником;

  • Целостность. Предотвращает подделку пакета во время передачи и включает дополнительный механизм защиты от воспроизведения пакетов;

  • Аутентификация. Проверяет, что сообщение получено от достоверного источника.

Для примера настроим службу SNMP для прослушивания с адреса 192.0.2.1. Создадим пользователя fakel с паролем fakel12345678. Новый пользователь будет использовать протоколы SHA/AES для аутентификации и обеспечения конфиденциальности.

set service snmp listen-address 192.0.2.1
set service snmp location 'Fakel Datacenter'
set service snmp v3 engineid '000000000000000000000002'
set service snmp v3 group default mode 'ro'
set service snmp v3 group default view 'default'
set service snmp v3 user fakel auth plaintext-password 'fakel12345678'
set service snmp v3 user fakel auth type 'sha'
set service snmp v3 user fakel group 'default'
set service snmp v3 user fakel privacy plaintext-password 'fakel12345678'
set service snmp v3 user fakel privacy type 'aes'
set service snmp v3 view default oid 1

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

Fakel@fakel# show service snmp
 listen-address 192.0.2.1 {
 }
 location "Fakel Datacenter"
 v3 {
     engineid 000000000000000000000002
     group default {
         mode ro
         view default
     }
     user fakel {
         auth {
             encrypted-password 4e52fe55fd011c9c51ae2c65f4b78ca93dcafdfe
             type sha
         }
         group default
         privacy {
             encrypted-password 4e52fe55fd011c9c51ae2c65f4b78ca93dcafdfe
             type aes
         }
     }
     view default {
         oid 1 {
         }
     }
 }

Чтобы проверить корректную настройку SNMPv3 с любой системы на базе Linux, выполните следующую команду:

$ snmpwalk -v 3 -u fakel -a SHA -A fakel12345678 -x AES -X fakel12345678 -l authPriv 192.0.2.1 .1

Чтобы расширить функциональность SNMP-агента, можно выполнять пользовательские сценарии при каждом вызове агента. Для этого используйте команды расширения. Необходимо создать функциональный скрипт, затем загрузить его в ПО Факел командой scp <your_script.sh> fakel@fakel:/config/user-data. После того как скрипт загружен, его нужно настроить с помощью команд ниже.

set service snmp script-extensions extension-name my-extension script your_script.sh
commit

OID .1.3.6.1.4.1.8072.1.3.2.3.1.1.4.116.101.115.116 после вызова будет содержать вывод расширения

root@fakel:/home/fakel# snmpwalk -v2c  -c public 127.0.0.1 nsExtendOutput1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."my-extension" = STRING: hello
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."my-extension" = STRING: hello
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."my-extension" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."my-extension" = INTEGER: 0

Пример настройки

Пример базовой настройки SNMPv2 с сообществом routers, доступным для мониторинга из сетей 192.0.2.0/24 и 2001:db8:ffff:eeee::/64 с адресов 203.0.113.10 и 203.0.113.20.

Шаг

Команда

Описание

1

set service snmp community routers authorization ro

Определяет сообщество routers с авторизацией только на чтение

2

set service snmp community routers network 192.0.2.0/24

Разрешает подключение к мониторингу по сообществу routers из сети 192.0.2.0/24

3

set service snmp community routers network 2001:db8:ffff:eeee::/64

Разрешает подключение к мониторингу по сообществу routers из сети 2001:db8:ffff:eeee::/64

4

set service snmp community routers client 203.0.113.10

Разрешает доступ к мониторингу по сообществу routers с адреса 203.0.113.10

5

set service snmp community routers client 203.0.113.20

Разрешает доступ к мониторингу по сообществу routers с адреса 203.0.113.20

6

set service snmp location 'Moscow'

Добавляет информацию о местоположении маршрутизатора Moscow

7

set service snmp contact 'example@example.ru'

Добавляет контактную информацию example@example.ru

8

set service snmp trap-target 203.0.113.10

Определяет отправку уведомлений trap на адрес 203.0.113.10

9

set service snmp listen-address 172.16.254.36 port 161

Назначает адрес 172.16.254.36 и порт 161 для прослушивания SNMP-запросов

10

set service snmp listen-address 2001:db8::f00:1

Назначает адрес 2001:db8::f00:1 для прослушивания SNMP-запросов

Список команд


Режим «Конфигурирование»


service snmp community <community> authorization <authorization>

Описание:
Определяет сообщество <community> с авторизацией <authorization>.

Синтаксис:

  • set service snmp community <community> authorization <authorization>

  • delete service snmp community <community> authorization <authorization>

  • show service snmp community <community> authorization

Аргументы:

  • <community> — имя сообщества SNMP;

  • <authorization> — тип авторизации. Возможные значения: ro — только чтение; rw — чтение и запись. Значение по умолчанию: ro.

Режим: «Конфигурирование».


service snmp community <community> network <network>

Описание:
Разрешает подключение к мониторингу по сообществу <community> из сети <network>.

Синтаксис:

  • set service snmp community <community> network <network>

  • delete service snmp community <community> network <network>

  • show service snmp community <community> network

Аргументы:

  • <community> — имя сообщества SNMP;

  • <network> — сеть, из которой разрешено обращаться к SNMP-серверу. Формат: IPv4-префикс (x.x.x.x/x) или IPv6-префикс (h:h:h:h:h:h:h:h/x). Можно задать несколько значений. Значение по умолчанию: 0.0.0.0/0 ::/0.

Режим: «Конфигурирование».


service snmp community <community> client <client>

Описание:
Разрешает доступ к мониторингу по сообществу <community> с адреса <client>.

Синтаксис:

  • set service snmp community <community> client <client>

  • delete service snmp community <community> client <client>

  • show service snmp community <community> client

Аргументы:

  • <community> — имя сообщества SNMP;

  • <client> — IP-адрес клиента, которому разрешен доступ. Формат: IPv4-адрес (x.x.x.x) или IPv6-адрес (h:h:h:h:h:h:h:h). Можно задать несколько значений.

Режим: «Конфигурирование».


service snmp location <location>

Описание:
Добавляет информацию о местоположении маршрутизатора <location>.

Синтаксис:

  • set service snmp location <location>

  • delete service snmp location <location>

  • show service snmp location

Аргументы:

  • <location> — описание местоположения. Формат: строка.

Режим: «Конфигурирование».


service snmp contact <contact>

Описание:
Добавляет контактную информацию <contact> ответственного за маршрутизатор.

Синтаксис:

  • set service snmp contact <contact>

  • delete service snmp contact <contact>

  • show service snmp contact

Аргументы:

  • <contact> — контактная информация. Формат: строка.

Режим: «Конфигурирование».


service snmp trap-target <trap-target>

Описание:
Определяет адрес <trap-target> для отправки уведомлений trap, если это необходимо.

Синтаксис:

  • set service snmp trap-target <trap-target>

  • delete service snmp trap-target <trap-target>

  • show service snmp trap-target

Аргументы:

  • <trap-target> — адрес получателя уведомлений. Формат: IPv4-адрес (x.x.x.x) или IPv6-адрес (h:h:h:h:h:h:h:h).

Режим: «Конфигурирование».


service snmp listen-address <listen-address>

Описание:
Назначает адрес для прослушивания входящих SNMP-запросов. По умолчанию используется порт 161.

Синтаксис:

  • set service snmp listen-address <listen-address>

  • delete service snmp listen-address <listen-address>

  • show service snmp listen-address <listen-address>

Аргументы:

  • <listen-address> — IP-адрес для прослушивания. Формат: IPv4-адрес (x.x.x.x) или IPv6-адрес (h:h:h:h:h:h:h:h).

Режим: «Конфигурирование».


service snmp listen-address <listen-address> port <port>

Описание:
Задает порт, на котором указанный адрес прослушивает входящие SNMP-запросы.

Синтаксис:

  • set service snmp listen-address <listen-address> port <port>

  • delete service snmp listen-address <listen-address> port <port>

  • show service snmp listen-address <listen-address> port <port>

Аргументы:

  • <listen-address> — IP-адрес для прослушивания. Формат: IPv4-адрес (x.x.x.x) или IPv6-адрес (h:h:h:h:h:h:h:h).

  • <port> — номер порта. Формат: целое число. Диапазон значений: от 1 до 65535. Значение по умолчанию: 161.

Режим: «Конфигурирование».


service snmp script-extensions extension-name <extension-name> script <script>

Описание:
Настраивает пользовательский сценарий <script> для расширения <extension-name> функциональности SNMP-агента. Сценарий необходимо предварительно загрузить в ПО Факел командой scp <your_script.sh> fakel@fakel:/config/user-data.

Синтаксис:

  • set service snmp script-extensions extension-name <extension-name> script <script>

  • delete service snmp script-extensions extension-name <extension-name> script <script>

  • show service snmp script-extensions extension-name <extension-name> script

Аргументы:

  • <extension-name> — имя расширения;

  • <script> — путь к загруженному файлу сценария.

Режим: «Конфигурирование».


Режим «Администрирование»


snmp community <community>

Описание:
Опрашивает локальный SNMP-агент от имени указанного сообщества (выполняет snmpstatus по протоколу SNMPv1) и отображает сводку о состоянии агента. Если служба SNMP не настроена, выводит сообщение об этом.

Синтаксис:

  • show snmp community <community>

Аргументы:

  • <community> — имя настроенного сообщества SNMP. Формат: строка.

Режим: «Администрирование».

Уровень привилегий: «Администратор».


snmp community <community> host <host>

Описание:
Опрашивает SNMP-агент на удалённом узле от имени указанного сообщества (выполняет snmpstatus по протоколу SNMPv1) и отображает сводку о его состоянии.

Синтаксис:

  • show snmp community <community> host <host>

Аргументы:

  • <community> — имя сообщества SNMP. Формат: строка.

  • <host> — имя или IP-адрес опрашиваемого узла. Формат: строка.

Режим: «Администрирование».

Уровень привилегий: «Администратор».


snmp mib ifmib

Описание:
Отображает для каждого интерфейса устройства индекс (ifIndex), псевдоним (ifAlias) и описание (ifDescr). Значения берутся из ядра Linux: индекс и псевдоним — из вывода ip link, описание — производитель и модель сетевого устройства, которые определяются утилитой lspci по идентификаторам устройства из /sys/class/net; если идентификаторы недоступны, выводится имя интерфейса. Если служба SNMP не настроена, выводит сообщение об этом.

Синтаксис:

  • show snmp mib ifmib

Режим: «Администрирование».

Уровень привилегий: «Администратор».


snmp mib ifmib ifIndex <ifIndex>

Описание:
Отображает индекс (ifIndex) указанного интерфейса.

Синтаксис:

  • show snmp mib ifmib ifIndex <ifIndex>

Аргументы:

  • <ifIndex> — имя интерфейса. Формат: имя интерфейса.

Режим: «Администрирование».

Уровень привилегий: «Администратор».


snmp mib ifmib ifAlias <ifAlias>

Описание:
Отображает псевдоним (ifAlias) указанного интерфейса. Если псевдоним не задан, выводится имя интерфейса.

Синтаксис:

  • show snmp mib ifmib ifAlias <ifAlias>

Аргументы:

  • <ifAlias> — имя интерфейса. Формат: имя интерфейса.

Режим: «Администрирование».

Уровень привилегий: «Администратор».


snmp mib ifmib ifDescr <ifDescr>

Описание:
Отображает описание (ifDescr) указанного интерфейса: производителя и модель сетевого устройства либо имя интерфейса, если сведения об устройстве недоступны.

Синтаксис:

  • show snmp mib ifmib ifDescr <ifDescr>

Аргументы:

  • <ifDescr> — имя интерфейса. Формат: имя интерфейса.

Режим: «Администрирование».

Уровень привилегий: «Администратор».


snmp v3

Описание:
Отображает сводку по настройке SNMPv3: группы, получатели уведомлений (trap-target), пользователи и представления (view). Если SNMPv3 не настроен, выводит сообщение об этом.

Синтаксис:

  • show snmp v3

Режим: «Администрирование».

Уровень привилегий: «Администратор».


snmp v3 group

Описание:
Отображает список настроенных групп SNMPv3 с указанием представления и режима доступа.

Синтаксис:

  • show snmp v3 group

Режим: «Администрирование».

Уровень привилегий: «Администратор».


snmp v3 trap-target

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

Синтаксис:

  • show snmp v3 trap-target

Режим: «Администрирование».

Уровень привилегий: «Администратор».


snmp v3 user

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

Синтаксис:

  • show snmp v3 user

Режим: «Администрирование».

Уровень привилегий: «Администратор».


snmp v3 view

Описание:
Отображает список настроенных представлений SNMPv3 с перечнем их OID.

Синтаксис:

  • show snmp v3 view

Режим: «Администрирование».

Уровень привилегий: «Администратор».


snmp v3 certificates

Описание:
Отображает субъекты и отпечатки сертификатов TSM, размещённых в каталоге /etc/snmp/tls/certs/. Если сертификатов нет, выводит подсказку с путём к каталогу.

Синтаксис:

  • show snmp v3 certificates

Режим: «Администрирование».

Уровень привилегий: «Администратор».


log snmp

Описание:
Отображает записи журнала службы SNMP с момента загрузки системы.

Синтаксис:

  • show log snmp

Режим: «Администрирование».

Уровень привилегий: «Администратор».


monitor log snmp

Описание:
Следит за появлением новых записей в журнале службы SNMP.

Синтаксис:

  • monitor log snmp

Режим: «Администрирование».

Уровень привилегий: «Администратор».


restart snmp

Описание:
Перезапускает службу SNMP. Если служба не настроена, выводит сообщение об этом и ничего не перезапускает.

Синтаксис:

  • restart snmp

Режим: «Администрирование».

Уровень привилегий: «Администратор».


Мониторинг устройств в Zabbix

Импорт шаблона в Zabbix

Для мониторинга по SNMP в Zabbix можно использовать шаблон Fakel_by_SNMP:

Данный шаблон подходит для версии Zabbix 6.0.

Для импорта шаблона в систему мониторинга необходимо зайти в меню раздела Data collection, выбрать вкладку Templates. В правом верхнем углу необходимо нажать на кнопку Import и выбрать скачанный ранее файл в любом разрешении (.xml, .json, .yaml). При необходимости добавить/убрать галочки с импортируемых объектов. Нажать кнопку Import. Импортируемый шаблон загрузится в группу шаблонов Templates/Network device, имя Fakel by SNMP.

Добавление узла на мониторинг

Для добавления нового узла в систему мониторинга необходимо зайти в меню Data collection, выбрать вкладку Hosts.

В правом верхнем углу нажать кнопку Create host.

В появившемся новом окне New host заполнить разделы:

  • Host name — уникальное имя хоста для системы мониторинга Zabbix;

  • Visible name — при необходимости скорректировать видимое имя узла;

  • Templates — в строке поиска вбить имя шаблона Fakel by SNMP и выбрать импортированный шаблон в выпадающем списке;

  • Host group — в строке поиска вбить имя группы, в которой будет находиться создаваемый узел. Если группа еще не создана, можно в строке поиска написать новое имя группы и она автоматически создастся в Zabbix в разделе Host group;

  • Interface — нажать кнопку add и выбрать SNMP. В появившемся разделе заполнить пункты:

    1. IP address — добавить IP-адрес узла. Если мониторинг будет осуществляться по DNS-имени, то необходимо заполнить пункт DNS name. В пункте Connect to выбрать DNS. При необходимости изменить порт (по умолчанию порт: 161);

    2. В разделе SNMP version выбрать настроенную на устройстве версию SNMP.

    • При выборе SNMPv2 необходимо ввести значение SNMP community, которое настраивалось на маршрутизаторе;

    • При выборе SNMPv3 необходимо заполнить пункты Security name, Security level, выбрать authPriv. В пункте Authentication protocol выбрать один из протоколов MD5/SHA, в пункте Authentication passphrase добавить пароль, который был настроен на устройстве. В пункте Privacy protocol выбрать один из протоколов DES/AES, в пункте Privacy passphrase добавить пароль, который был настроен на устройстве.

  • При необходимости снять галочку Use combined requests;

  • При необходимости заполнить раздел Description, выбрать из списка Monitored by proxy необходимый proxy-сервер;

  • Нажать кнопку Add.

Просмотр информации об узле

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

  • Dashboards — для просмотра общей информации об устройстве (трафик на интерфейсах, загрузка дисков, CPU и т.д.);

  • Problems — информация об активных проблемах (триггерах) на узле;

  • Last data — вся информация, полученная от устройства по протоколу SNMP по выбранному шаблону;

  • Graphs — автоматически созданные графики для выбранного устройства.

Корректировка шаблона или узла

Примечание

Если информация, настроенная в шаблоне, избыточна, можно скорректировать шаблон или элементы данных в выбранном узле или шаблоне.

Для корректировки отображения информации на одном узле необходимо зайти во вкладку Data collection, выбрать пункт Hosts. Рядом с выбранным узлом нажать на Items. В появившемся списке поставить галочки рядом с неиспользуемыми элементами данных, внизу нажать кнопку Disable. Деактивированные элементы данных больше не будут отображаться в Latest data. Для корректировки отображения автообнаруженных элементов данных необходимо выбрать Discovery выбранного узла. В появившемся списке напротив нужного Discovery rule выбрать Item prototypes. В появившемся списке в разделах Create enable и Discover в необходимых пунктах поставить значение No. Деактивированные элементы данных не будут отображаться в Latest data.

Для корректировки автообнаруженных элементов или элементов данных для всех узлов, использующих шаблон Fakel by SNMP, необходимо зайти в раздел Data collection, выбрать пункт Templates. Рядом с выбранным шаблоном нажать на Items. В появившемся списке поставить галочки рядом с неиспользуемыми элементами данных, внизу нажать кнопку Disable. Деактивированные элементы данных больше не будут отображаться в Latest data. Для корректировки отображения автообнаруженных элементов данных необходимо выбрать Discovery. В появившемся списке напротив нужного Discovery rule выбрать Item prototypes. В появившемся списке в разделах Create enable и Discovery в необходимых пунктах поставить значение No. Деактивированные элементы данных не будут отображаться в Latest data.