Найти в Дзене
Linux | Network | DevOps

SNMP: основы и практика

SNMP (Simple Network Management Protocol) —
это протокол для управления и мониторинга сетевых устройств, таких как
маршрутизаторы, коммутаторы и фаерволы. Он является частью системы
управления сетью и позволяет администраторам: SNMP-менеджером может быть любое устройство, способное выполнять функции управления сетью, например, наш ноутбук с установленным программным обеспечением для управления (например, SolarWinds, Zabbix, или даже встроенные утилиты). SNMP-агент также может быть любым устройством, поддерживающим SNMP, например, маршрутизаторы, коммутаторы, серверы, принтеры или даже IoT-устройства. Агент работает на самом устройстве, собирает информацию и отправляет её менеджеру по запросу или при наступлении определённых событий. SNMP MIB MIB (Management Information Base)
— это база данных, которая хранит информацию о параметрах устройства,
управляемого через SNMP. Проще говоря, MIB — это каталог или таблица,
где для каждого параметра устройства задан уникальный идентификато
Оглавление

Что такое SNMP?

SNMP (Simple Network Management Protocol) —
это протокол для управления и мониторинга сетевых устройств, таких как
маршрутизаторы, коммутаторы и фаерволы. Он является частью системы
управления сетью и позволяет администраторам:

  • Отслеживать состояние устройств;
  • Вносить изменения в конфигурацию;
  • Получать уведомления о событиях.

Основные концепции SNMP

Устройства в SNMP

  1. Управляемые устройства (Managed Devices): устройства, которые контролируются с помощью SNMP.
  2. Станция управления сетью (NMS): сервер или система, управляющая устройствами. Это также называется SNMP-сервером.
-2

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
Загрузка процессора или памяти. Пример на CMD snmpget -v:2c -c:public 192.168.1.1 1.3.6.1.2.1.1.5.0

Компоненты SNMP

-4
  • Менеджер отправляет запрос (например, snmpget) с использованием OID.
  • Агент извлекает данные из MIB и возвращает ответ.
  • При событиях (например, сбое интерфейса) агент отправляет trap или inform уведомление менеджеру.

Основные операции в SNMP

  1. Уведомления (Notifications): устройства отправляют уведомления (например, traps) о событиях.
  2. Чтение (Read): NMS запрашивает информацию (например, загрузка процессора).
  3. Запись (Write): NMS изменяет конфигурацию устройств (например, смена IP-адреса).

Версии SNMP

  1. SNMPv1: базовая версия с ограниченными возможностями.
  2. SNMPv2: Почти нигде не увидите когда его создавали он был очень сложным как структура и поэтому его урезали и заменили SNMPv2c
  3. SNMPv2c: улучшенная версия с поддержкой community strings (строки аутентификации).
  4. 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

  1. Чтение:
    Get:
    запрос данных.
    GetNext: запрос следующего параметра.
    GetBulk: запрос нескольких параметров сразу.
  2. Запись:
    Set:
    изменение данных (например, IP-адреса).
  3. Уведомления:
    Trap:
    уведомление без подтверждения.
    Inform: уведомление с подтверждением.
  4. Ответы:
    Ответ устройства на запросы Get, Set и Inform.

Рекомендации по безопасности

  1. Удалите строки аутентификации по умолчанию:R1(config)#no snmp-server community public
    R1(config)#no snmp-server community private
  2. Используйте SNMPv3 вместо SNMPv1 и SNMPv2c для шифрования данных.

Основные SNMP-команды в командной строке (cmd) на Windows и Linux, а также их описание

На Windows

Для работы с SNMP в Windows требуется утилита snmpwalk, snmpget, или другие из пакета Net-SNMP. Убедитесь, что SNMP утилиты установлены (Net-SNMP можно скачать отдельно).

Основные команды:

  1. 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 для имени хоста.
  2. snmpwalk
    Получает список всех доступных параметров на устройстве.snmpwalk -v:2c -c:<community_string> <IP-адрес>
    Пример:snmpwalk -v:2c -c:public 192.168.1.1
  3. 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 — новое значение.
  4. 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

Основные команды:

  1. snmpgetsnmpget -v2c -c <community_string> <IP-адрес> <OID>
    Пример:snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.5.0
  2. snmpwalksnmpwalk -v2c -c <community_string> <IP-адрес>
    Пример:snmpwalk -v2c -c public 192.168.1.1
  3. snmpsetsnmpset -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"
  4. snmptrapsnmptrap -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"

Полезные команды для диагностики:

  1. Проверить, открыт ли порт SNMP на устройстве (Linux):
    Netcat (nc):nc -zv -u <IP-address> 161

    Nmap:nmap -sU -p 161 <IP-address>
  2. Проверить, открыт ли порт SNMP на устройстве (Windows):Test-NetConnection -ComputerName <IP-адрес> -Port 161 -InformationLevel "Detailed"
  3. Отобразить доступные службы (Linux):snmpstatus -v2c -c <community_string> <IP-адрес>

Обсудить эту статью можно в Телеграм канале: https://t.me/linautonet