Документация: ПО Факел — разрабатываемая версия
Протокол SNMP¶
Обзор¶
SNMP — это стандартный протокол, который применяется для мониторинга и управления сетевыми устройствами. К устройствам, которые обычно поддерживают SNMP, относятся кабельные модемы, маршрутизаторы, коммутаторы, серверы, рабочие станции, принтеры и т.д.
Протокол SNMP широко используется в сетевом управлении для мониторинга сети. Протокол предоставляет управляющие данные в виде переменных в системах, организованных в базе управленческой информации MIB, которые описывают состояние и конфигурацию системы. Затем эти переменные могут быть запрошены удаленно (и в некоторых случаях изменены) управляющими приложениями.
Существуют три основные версии протокола SNMP. SNMPv1 — это начальная версия протокола. Более поздние версии, SNMPv2c и SNMPv3, содержат улучшения в производительности, гибкости и безопасности. SNMP является компонентом пакета интернет-протоколов, определенного Рабочей группой разработчиков Интернета IETF. Пакет состоит из набора стандартов для управления сетью, включая протокол прикладного уровня, схему базы данных и набор объектов данных.
Основные понятия¶
При обычном использовании SNMP на одном или нескольких устройствах управления, называемых менеджерами, выполняются задачи мониторинга или управления группой узлов или устройством в компьютерной сети. Каждая управляемая система содержит программный компонент, называемый агентом, который передает информацию менеджеру по протоколу SNMP.
Сеть, управляемая по протоколу SNMP, состоит из трех ключевых компонентов:
Управляемые устройства;
Агент — программное обеспечение, работающее на управляемых устройствах;
Станция сетевого управления (NMS) — управляющее программное обеспечение.
Управляемое устройство — это сетевой узел, в котором реализован интерфейс SNMP, обеспечивающий однонаправленный (только чтение) или двунаправленный (чтение и запись) доступ к специфической информации узла. Управляемые устройства обмениваются информацией о конкретном узле с NMS. Иногда называемые сетевыми элементами, управляемые устройства могут быть любого типа, в частности, маршрутизаторы, серверы доступа, коммутаторы, кабельные модемы, мосты, концентраторы, IP-телефоны, IP-видеокамеры, компьютерные узлы и принтеры.
Агент — это программный модуль сетевого управления, который находится на управляемом устройстве. Агент обладает локальными знаниями об управляющей информации и переводит ее в специальную форму SNMP или из нее.
Станция управления сетью выполняет задачи мониторинга и управления подключенными устройствами. Для управления сетью NMS требует большую часть ресурсов обработки и памяти. В любой управляемой сети может существовать одна или несколько NMS.
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 |
Определяет сообщество |
2 |
set service snmp community |
Разрешает подключение к мониторингу по сообществу |
3 |
set service snmp community |
Разрешает подключение к мониторингу по сообществу |
4 |
set service snmp community |
Разрешает доступ к мониторингу по сообществу |
5 |
set service snmp community |
Разрешает доступ к мониторингу по сообществу |
6 |
set service snmp location |
Добавляет информацию о местоположении маршрутизатора |
7 |
set service snmp contact |
Добавляет контактную информацию |
8 |
set service snmp trap-target |
Определяет отправку уведомлений |
9 |
set service snmp listen-address |
Назначает адрес |
10 |
set service snmp listen-address |
Назначает адрес |
Список команд¶
Режим «Конфигурирование»¶
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>¶
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>¶
Синтаксис:
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>¶
snmpstatus по протоколу SNMPv1) и отображает сводку о состоянии агента. Если служба SNMP не настроена, выводит сообщение об этом.Синтаксис:
show snmp community
<community>
Аргументы:
<community>— имя настроенного сообщества SNMP. Формат: строка.
Режим: «Администрирование».
Уровень привилегий: «Администратор».
snmp community <community> host <host>¶
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¶
Синтаксис:
show snmp v3
Режим: «Администрирование».
Уровень привилегий: «Администратор».
snmp v3 group¶
Синтаксис:
show snmp v3 group
Режим: «Администрирование».
Уровень привилегий: «Администратор».
snmp v3 trap-target¶
Синтаксис:
show snmp v3 trap-target
Режим: «Администрирование».
Уровень привилегий: «Администратор».
snmp v3 user¶
Синтаксис:
show snmp v3 user
Режим: «Администрирование».
Уровень привилегий: «Администратор».
snmp v3 view¶
Синтаксис:
show snmp v3 view
Режим: «Администрирование».
Уровень привилегий: «Администратор».
snmp v3 certificates¶
/etc/snmp/tls/certs/. Если сертификатов нет, выводит подсказку с путём к каталогу.Синтаксис:
show snmp v3 certificates
Режим: «Администрирование».
Уровень привилегий: «Администратор».
log snmp¶
Синтаксис:
show log snmp
Режим: «Администрирование».
Уровень привилегий: «Администратор».
monitor log snmp¶
Синтаксис:
monitor log snmp
Режим: «Администрирование».
Уровень привилегий: «Администратор».
restart 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. В появившемся разделе заполнить пункты:
IP address— добавить IP-адрес узла. Если мониторинг будет осуществляться по DNS-имени, то необходимо заполнить пунктDNS name. В пунктеConnect toвыбратьDNS. При необходимости изменить порт (по умолчанию порт: 161);В разделе
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.