Для демонстрации практических аспектов работы SNMP обратимся к схеме на рисунке 4. В качестве R1 и R2 используются маршрутизаторы MikroTik, в качестве manager – ПК с ПО MIB Browser (программа поддерживает отправку SNMP-запросов и получение trap-ов).
Рисунок 4. Схема для демонстрации работы SNMP
Конфигурация устройств
На обоих маршрутизаторах запретим доступ на чтение для профиля по умолчанию и создадим новый профиль с доступом на чтение и запись. Укажем необходимость формирования trapов для событий, связанных с изменением статусов интерфейсов, ip-адрес менеджера и, для упрощения, в работе будем использовать SNMPv2.
R1:
R2:
Запрос значения параметра параметра
Выполним запрос значения имени интерфейса ether1 на R2 средствами менеджера и RouterOS:
Рисунок 5. Вывод параметров интерфейса ether1 на R2
Рисунок 6. Запрос параметра имени интерфейса ether1 на R2
Рисунок 7. Запрос параметра имени интерфейса ether1 на R2 средствами RouterOS
Как видно на рисунках 5–7, полученное значение параметра совпадает независимо от используемого инструмента запроса.
Установка значения параметра
Изменим имя идентификатора маршрутизатора R2, используя протокол SNMP и OID= .1.3.6.1.2.1.1.5.0:
Рисунок 8. Установка нового идентификатора на R2 через MIB Browser
Рисунок 9. Значение идентификатора на маршрутизаторе R2
Запуск скрипта через SNMP-Set
В RouterOS существует возможность запуска заранее размещённого на устройстве скрипта через Set-сообщение протокола SNMP. Для этого используется OID= .1.3.6.1.4.1.14988.1.1.8.1.1.3.X, где X – номер скрипта в списке, начиная с 1. По факту данный OID соответствует статусу скрипта: 0 – не запущен, любое другое число — запущен.
Создадим на R1 скрипт, который будет изменять имя интерфейса ether2, и запустим его, сформировав соответствующее SNMP-сообщение.
Рисунок 10. Запуск скрипта через Set-сообщение SNMP
Рисунок 11. Создание скрипта и результат его работы
Запуск скрипта через SNMP-Get
Создадим на маршрутизаторе R1 скрипт, меняющий идентификатор и запустим его, используя Get-сообщение SNMP.
Для того, чтобы узнать необходимый OID, воспользуемся утилитой snmp-walk на R2:
Рисунок 12. Использование утилиты snmp-walk на R2
В списке обнаруженных OID можно заметить два созданных скрипта: первые два OIDа соответствуют их именам, а вторые — их статусам, которые были использованы в примере выше.
Для запуска “snmp_get_test”, необходимо в OIDе, соответствующем имени скрипта, заменить “8” на “18” и сформировать Get-запрос:
Рисунок 13. Формирование Get сообщения на R2
R1 отвечает на запрос сообщение с пустым значением value, однако скрипт выполняется, что подтверждает рисунок 14:
Рисунок 14. Скрипт по изменению идентификатора и результат его выполнения
Представленные выше возможности по запуску скриптов через команды Set и Get свидетельствуют о необходимости тщательной проработки вопросов безопасности при внедрении SNMP на сети.
Отправка trap-ов
Проверим формирование trap-сообщений, трижды изменив статус интерфейса wlan1 на маршрутизаторе R2 (рисунок 15). На рисунке 16 показан список полученных trapов с подробным описанием одного из них.
Видно, что число trap-сообщений соответствует числу изменений статуса беспроводного интерфейса. Настроив систему мониторинга на приём trapов, можно оперативно получать информацию о состоянии сетевых устройств и действовать в соответствии с заданными сценариями.
Рисунок 15. Выполнение команд по включению/отключению wlan1 на R2
Рисунок 16. Полученные trap-сообщения на Manager
Формирование trapов вручную
В RouterOS существует возможность вручную формировать trap-сообщения, что может быть полезно при использовании скриптов. Для создания подобного сообщения необходимо воспользоваться инструментом “/snmp send-trap”. Пример использования представлен на рисунке 17:
Рисунок 17. Пример формирования trap-сообщений через утилиту send-trap
Интересно, что RouterOS не может использовать произвольное значение OID, подставляя ближайшее большее знакомое значение идентификатора, что видно на рисунке 18. Значение, передаваемое в trap-сообщении, при этом не изменяется.
Рисунок 18. Полученные trap-сообщения на Manager
Еще раз спасибо