Сегодня мы рассмотрим настройку SNMP на ELTEX ESR-200-FSTEC для мониторинга параметров устройства.
Получение данных от устройства по SNMP мы будет осуществлять на виртуальную машину с установленными Debian 10 и на Windows 10 с помощью бесплатной программы MibBrowser.
Все ниже написанное может быть применено и к обычной ELTEX ESR-200.
Настройка ESR для работы с SNMP
Перед тем как снимать по SNMP с устройства данные, нужно его настроить. Для этого в режиме конфигурирования выполним следующие действия:
snmp-server
snmp-server community mytestcommunity ro
snmp-server host 192.168.0.10
community mytestcommunity
exit
Первая команда включает SNMP сервер на устройстве
Вторая добавляет сообщество (community) по сути уникальный идентификатор для доступа по SNMP, это может быть любая строка.
В блоке snmp-server host мы указываем хост с которого разрешаем доступ к нашему сообществу, а также адрес на которой будут высылаться ловушки (traps) при срабатывании событий.
Не забудьте так же добавить правило в межсетевой экран, чтобы разрешить подключение:
object-group service SNMP
description "SNMP"
port-range 161
exit
object-group network MONITORING_HOST
description "My LAN"
ip address-range 192.168.0.10
exit
security zone-pair LAN self
rule 12
description "Доступ SNMP"
action permit
match protocol udp
match source-address MONITORING_HOST
match destination-address any
match source-port any
match destination-port SNMP
enable
exit
exit
Не забудьте сохранить конфигурацию
do commit
do confirm
На этом настройка устройства завершена.
Настройка Debian 10 для мониторинга по SNMP
У меня есть свежеустановленная Debian 10 в виртуальной машине Hyper-v, давайте донастроим её. Первым делом нужно побеспокоиться о безопасности, так что установим утилиту управления межсетевым экраном UFW и настроим его.
Сетевая адресация у нас такая:
Наш ПК - 192.168.0.100
Debian сервер - 192.168.0.10
ESR-200 - 192.168.0.254
Установим UFW и SUDO:
apt install ufw sudo
Обратите внимание даже под пользователем root вам необходимо указывать sudo, иначе получите такой результат:
# ufw status
bash: ufw: command not found
Проверим статус:
# sudo ufw status
Status: inactive
Как вы видит он отключен.
Теперь добавим правило, чтобы не потерять управление над устройством.
# sudo ufw allow proto tcp from 192.168.0.100 to 192.168.0.10 port 22
Rules updated
Включим файрвол:
# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Проверим правила:
# sudo ufw status
Status: active
To Action From
-- ------ ----
192.168.0.10 22/tcp ALLOW 192.168.0.100
Добавим входящее правило по порту 162 для получения ловушек (traps):
# sudo ufw allow proto tcp from 192.168.0.254 to 192.168.0.10 port 162
Вот что мы получаем в результате:
root@debian-test:/home/meria# sudo ufw status
Status: active
To Action From
-- ------ ----
192.168.0.10 22/tcp ALLOW 192.168.0.100
192.168.0.10 162/tcp ALLOW 192.168.0.254
Практически все системы мониторинга, для получения данных по SNMP используют Open Source утилиту – snmpwalk. Она не входит в стандартную поставку, так что давайте установим её.
Для начала добавим репозиторий nonfree в apt. Откроем файл /etc/apt/sources.list
Я предпочитаю использовать mcedit из пакета mc, вы можете использовать nano или vim.
mcedit /etc/apt/sources.list
и добавляем к строке
deb http://deb.debian.org/debian/ buster main
строчку non-free
так что у нас получиться
deb http://deb.debian.org/debian/ buster main non-free
Обновляем список пакетов:
apt update
Устанавливаем snmp
apt install snmp snmp-mibs-downloader
Загрузка mib-файлов произойдет автоматически.
На этом настройка серверной части завершена
Мониторинг ESR-200-FSTEC по SNMP
Прежде чем продолжить, хочу отметить немаловажную вещь – устройства ESR-200 и EST-200-FSTEC – разные устройства, хоть они собраны на базе одной платформы, но прошивки у них отличаются. У версии ФСТЭК прошивка сильно «отстает» от обычной версии. Так же из этой версии вырезаны BRASS и Ipsec, соответственно для нее не подходят все свежие руководства по мониторингу SNMP, а многие OID не поддерживаются вовсе.
Для нормально работы с SNMP вам потребуются mib-файлы. Их нет в свободном доступе, но их, при наличии устройства достаточно легко попросить у тех-поддержки Eltex. Для этого нужно зайти сюда - https://eltex-co.ru/support/ и заполнить форму. Лучше сразу указать версию вашего ПО и серийный номер вашего устройства, узнать вы их можете использовав команды
show version
show system
из консоли управления устройством.
Поддержка отвечает достаточно быстро и к вашей заявке будет прикреплен архив с mib файлами.
У меня это был 1.0.7_mibs.zip вот его содержимое:
ELTEX
IANAifType-MIB.txt
IF-MIB.txt
SNMP-FRAMEWORK-MIB.txt
SNMP-VIEW-BASED-ACM-MIB.txt
SNMPv2-CONF.txt
SNMPv2-MIB.txt
SNMPv2-SMI.txt
SNMPv2-TC.txt
UCD-SNMP-MIB.txt
Зачем нужны эти файлы? Помимо всего прочего, в них прописаны алиасы, так что вместо того, чтобы прописывать длинный OID, например:
.1.3.6.1.4.1.2021.4.5
можно просто написать:
memTotalReal.0
Так же в них содержится и прочая необходимая для корректного отображения значений информация.
Если вы попробуете использовать алиас для запроса без mib файлов то получите следующее:
snmpwalk -v2c -c mytestcommunity 192.168.0.254 memTotalReal.0
memTotalReal.0: Unknown Object Identifier (Sub-id not found: (top) -> memTotalReal)
на сервере создадим папку
mkdir –p /usr/local/share/snmp/mibs
И скопируем в нее файлы наши mib.
Теперь нужно указать утилитам snpm, что нужно использовать папку с mib файлами
Нужно привести файл конфигурации /etc/snmp/snmp.conf
к виду:
# As the snmp packages come without MIB files due to license reasons, loading
# of MIBs is disabled by default. If you added the MIBs you can reenable
# loading them by commenting out the following line.
mibs ALL
mibdirs +/usr/local/share/snmp/mibs
Возможно вам потребуется перезагрузить сервер.
Теперь мы можем сделать запрос по алиасу:
snmpwalk -v2c -c ZABBIX_MERIA 192.168.0.254 memTotalReal.0
Bad operator (INTEGER): At line 73 in /usr/share/snmp/mibs/ietf/SNMPv2-PDU
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 3859328 kB
И получаем ошибку
Bad operator (INTEGER): At line 73 in /usr/share/snmp/mibs/ietf/SNMPv2-PDU
Неприятно, но поправимо, нам нужно взять исправление отсюда - https://pastebin.com/raw/p3QyuXzZ и заменить содержимое файла
/usr/share/snmp/mibs/ietf/SNMPv2-PDU
Вот и всё, теперь при запросе данных ошибки нет!
# snmpwalk -v2c -c mytestcommunity 192.168.0.254 memTotalReal.0
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 3859328 kB
OID для мониторинга
ESR-200 предоставляет не так уж много oid для снятия данных. Полный их список вы можете получить командой:
snmpwalk -v2c -c mytestcommunity 192.168.0.25
Всего 713 строк и некоторые из них дублируются, а многие просто бесполезны.
Ниже в таблице я привожу некоторые из значений, которые могут быть вам полезны.
Запись вида ifDescr.x(1-8) означает что вместо x вы должны подставить цифры от 1 до 8 для получения информации по соответствующему интерфейсу.
Наименование
|
Описание (пример)
|
sysName.0
|
Имя хоста
(GW-MAIN)
|
ifDescr.x(1-8)
|
Имя интерфейса
(gigabitethernet 1/0/1)
|
ifType.x(1-8)
|
Тип интерфейса (
ethernetCsmacd(6)
propVirtual(53)
)
|
ifMtu.x(1-8)
|
MTU (1500)
|
ifSpeed.x(1-8)
|
Скорость в байтах
(1000000000)
|
ifPhysAddress.x(1-8)
|
MAC-адрес
|
ifAdminStatus.x(1-8)
|
Статус порта, он может быть включен (1), выключен (2) или в режиме теста (3)
Порт будет в статусе выключен/down (2) если в конфигурации для интерфейса прописано «no shutdown»
|
ifOperStatus.x(1-8)
|
Рабочий статус порта, показывает подключен ли кабель и работоспособен ли порт для передачи данных
|
ifInOctets.x(1-8)
|
Количество полученных октетов
|
ifInDiscards.x(1-8)
|
Количество входящих отброшенных пакетов
|
ifInErrors.x(1-8)
|
Количество входящих пакетов с ошибкой
|
ifOutOctets.x(1-8)
|
Количество отправленных октетов
|
ifOutDiscards.x(1-8)
|
Количество исходящих отброшенных пакетов
|
ifOutErrors.x(1-8)
|
Количество исходящих пакетов с ошибкой
|
ifAlias.x(1-8)
|
Описание интерфейса
|
entPhysicalSerialNum.680000
|
Серийный номер устройства
|
laLoad.1
|
Нагрузка на CPU за последнюю минуту
|
laLoad.2
|
Нагрузка на CPU за последние 5 минут
|
laLoad.3
|
Нагрузка на CPU за последние 15 минут
|
Это не все значения, но наиболее полезные. В конце лета, начале осени 2020 Eltex планирует выпустить прошивку 1.5.0 для ESR-200-FSTEC, будем надеется они добавят больше OID для контроля за состоянием устройства, например, датчики температуры или скорость вращения и статус вентиляторов охлаждения.
Использование MibBrowser для просмотра mib-файлов
Иногда вам может понадобиться узнать какие OID поддерживает устройство. Для этого вы можете использовать бесплатную программу MibBrowser
Использовать ее очень просто. После запуска на экране появится главное окно:

Нажмите Ctrl+O и по одному загрузите полученные от техподдержки mib файлы.
Заполните поля Host
и Community
Введите в поле Object ID
строку
memTotalReal.0
и нажмите Ctrl+G или соответствующую кнопку на панели.
Будет произведен запрос и значение выведено в центральном окне.

Так же внизу экрана вы можете прочитать описание и прочие данные об OID.
Так же в левой панели будет открыт mib файл, содержащий этот OID. Вы можете так же просматривать любые другие OID в этом mib файле помощью этой панели.
Заключение
Вот и все на сегодня. Мы рассмотрели настройку ESR-200-FSTEC для мониторинга по SNMP, так же мы рассмотрели настройку Debian 10 в качестве консоли для мониторинга по SNMP. Так же кратко рассмотрели утилиту MibBrowser, которая позволяет не только просматривать mib файлы, но и делать запросы по SNMP на удаленном устройстве.