Fundamentals SNMP
SNMP: Управление и мониторинг сетей
Что такое SNMP?
SNMP (Simple Network Management Protocol) — это протокол для управления и мониторинга сетевых устройств, таких как маршрутизаторы, коммутаторы и фаерволы. Он является частью системы управления сетью и позволяет администраторам:
Отслеживать состояние устройств;
Вносить изменения в конфигурацию;
Получать уведомления о событиях.
Основные концепции SNMP
Устройства в SNMP
Управляемые устройства (Managed Devices): устройства, которые контролируются с помощью SNMP.
Станция управления сетью (NMS): сервер или система, управляющая устройствами. Это также называется SNMP-сервером.

SNMP-менеджером может быть любое устройство, способное выполнять функции управления сетью, например, наш ноутбук с установленным программным обеспечением для управления (например, SolarWinds, Zabbix, или даже встроенные утилиты).
SNMP-агент также может быть любым устройством, поддерживающим SNMP, например, маршрутизаторы, коммутаторы, серверы, принтеры или даже IoT-устройства. Агент работает на самом устройстве, собирает информацию и отправляет её менеджеру по запросу или при наступлении определённых событий.
SNMP MIB
MIB (Management Information Base) — это база данных, которая хранит информацию о параметрах устройства, управляемого через SNMP. Проще говоря, MIB — это каталог или таблица, где для каждого параметра устройства задан уникальный идентификатор.
Простыми словами:
MIB — это как список настроек и данных устройства, доступных для мониторинга и управления через SNMP. Например:
Температура устройства.
Скорость передачи данных через порт.
Состояние интерфейсов (включён/выключен).
Загрузка процессора или памяти.
Пример на CMD snmpget -v:2c -c:public 192.168.1.1 1.3.6.1.2.1.1.5.0
Компоненты SNMP
Менеджер отправляет запрос (например,
snmpget
) с использованием OID.Агент извлекает данные из MIB и возвращает ответ.
При событиях (например, сбое интерфейса) агент отправляет trap или inform уведомление менеджеру.
Основные операции в SNMP
Уведомления (Notifications): устройства отправляют уведомления (например, traps) о событиях.
Чтение (Read): NMS запрашивает информацию (например, загрузка процессора).
Запись (Write): NMS изменяет конфигурацию устройств (например, смена IP-адреса).
Версии SNMP
SNMPv1: базовая версия с ограниченными возможностями.
SNMPv2: Почти нигде не увидите когда его создавали он был очень сложным как структура и поэтому его урезали и заменили SNMPv2c
SNMPv2c: улучшенная версия с поддержкой community strings (строки аутентификации).
SNMPv3: самая безопасная версия с шифрованием и аутентификацией.
Основные команды конфигурации SNMP на Cisco
Добавление информации о контакте и местоположении
R1(config)#snmp-server contact (mail)
R1(config)#snmp-server location (location srv)
Эти команды добавляют описание:
contact: указывает, кому писать в случае проблем.
location: указывает физическое местоположение устройства.
Настройка Community Strings
Community Strings — это строки аутентификации (пароли), предоставляющие доступ к устройству через SNMP.
Read-Only (RO): только для чтения.
Read-Write (RW): полный доступ (чтение + запись).
Примеры настройки:
R1(config)#snmp-server community MyReadOnly ro
R1(config)#snmp-server community MyReadWrite rw
Для дополнительной безопасности можно ограничить доступ по IP:
R1(config)#snmp-server community MyReadOnly ro 192.168.1.0 255.255.255.0
Почему это важно:
Защищает SNMP от несанкционированного доступа.
Позволяет задавать уровень доступа (RO или RW).
Указание сервера SNMP
R1(config)#snmp-server host 192.168.1.1 version 2c (Word)
Что делает команда:
Указывает IP-адрес сервера управления SNMP.
Задает используемую версию SNMP (в данном случае 2c).
Указывает строку аутентификации (Jeremy1).
Почему это важно:
Позволяет устройству отправлять данные только на указанный сервер.
Настройка уведомлений (Traps)
R1(config)#snmp-server enable traps snmp linkdown linkup
R1(config)#snmp-server enable traps config
Что делает команда:
linkdown/linkup: уведомляет о состоянии интерфейса (включение/отключение).
config: уведомляет об изменении конфигурации.
Почему это важно:
Позволяет администраторам быстро реагировать на события.
Типы сообщений SNMP
Чтение:
Get: запрос данных.
GetNext: запрос следующего параметра.
GetBulk: запрос нескольких параметров сразу.
Запись:
Set: изменение данных (например, IP-адреса).
Уведомления:
Trap: уведомление без подтверждения.
Inform: уведомление с подтверждением.
Ответы:
Ответ устройства на запросы Get, Set и Inform.
Рекомендации по безопасности
Удалите строки аутентификации по умолчанию:
R1(config)#no snmp-server community public R1(config)#no snmp-server community private
Используйте SNMPv3 вместо SNMPv1 и SNMPv2c для шифрования данных.
Основные SNMP-команды в командной строке (cmd) на Windows и Linux, а также их описание
На Windows
Для работы с SNMP в Windows требуется утилита snmpwalk, snmpget, или другие из пакета Net-SNMP. Убедитесь, что SNMP утилиты установлены (Net-SNMP можно скачать отдельно).
Основные команды:
snmpget
Используется для получения конкретного значения из устройства.snmpget -v:2c -c:<community_string> <IP-адрес> <OID>
Пример:
snmpget -v:2c -c:public 192.168.1.1 1.3.6.1.2.1.1.5.0
-v:2c
— версия SNMP (в данном случае SNMPv2c).-c:public
— community string.192.168.1.1
— IP устройства.1.3.6.1.2.1.1.5.0
— OID для имени хоста.
snmpwalk
Получает список всех доступных параметров на устройстве.snmpwalk -v:2c -c:<community_string> <IP-адрес>
Пример:
snmpwalk -v:2c -c:public 192.168.1.1
snmpset
Изменяет значение параметра на устройстве.snmpset -v:2c -c:<community_string> <IP-адрес> <OID> <тип данных> <значение>
Пример:
snmpset -v:2c -c:private 192.168.1.1 1.3.6.1.2.1.1.5.0 s "NewHostName"
s
— строка (тип данных).NewHostName
— новое значение.
snmptrap
Отправляет trap-уведомление на SNMP-сервер.snmptrap -v:2c -c:<community_string> <IP сервера> <OID> <сообщение>
На Linux
В Linux SNMP-команды предоставляются пакетом Net-SNMP. Установите его через менеджер пакетов:
sudo apt install snmp # Для Debian/Ubuntu
sudo yum install net-snmp-utils # Для RedHat/CentOS
Основные команды:
snmpget
snmpget -v2c -c <community_string> <IP-адрес> <OID>
Пример:
snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.5.0
snmpwalk
snmpwalk -v2c -c <community_string> <IP-адрес>
Пример:
snmpwalk -v2c -c public 192.168.1.1
snmpset
snmpset -v2c -c <community_string> <IP-адрес> <OID> <тип данных> <значение>
Пример:
snmpset -v2c -c private 192.168.1.1 1.3.6.1.2.1.1.5.0 s "NewDeviceName"
snmptrap
snmptrap -v2c -c <community_string> <IP сервера> <OID> <сообщение>
Пример:
snmptrap -v2c -c public 192.168.1.100 "" 1.3.6.1.6.3.1.1.5.3 "linkDown"
Полезные команды для диагностики:
Проверить, открыт ли порт SNMP на устройстве (Windows):
telnet <IP-адрес> 161
Отобразить доступные службы (Linux):
snmpstatus -v2c -c <community_string> <IP-адрес>