SNMP (Simple Network Management Protocol - простой протокол управления сетью) - это протокол управления сетями связи на основе архитектуры TCP/IP, седьмого уровня (уровень приложений) семиуровневой модели OSI. SNMP дает возможность станциям управления сетью читать и изменять настройки шлюзов, маршрутизаторов, коммутаторов и других сетевых устройств. Используйте SNMP для настройки системных характеристик для правильной работы,контроля характеристик и обнаружения потенциальных проблем в коммутаторе, группе коммутаторов или сети.
Используемые порты: 161/UDP,162/UDP
Ссылки:
SNMP-trap (ловушки SNMP) Traps - это аварийные сообщения, сообщающие о событиях, происходящих в коммутаторе. События могут быть такими серьезными, как перезапуск (кто-нибудь случайно выключил коммутатор) или менее, как например, изменение статуса порта. Коммутатор создает сообщения «traps» и отправляет их к «trap» получателю (или сетевому менеджеру). Обычные «traps» содержат сообщение об ошибке аутентификации Authentication Failure , изменении топологии сети Topology Change и широковещательном шторме Broadcast\Multicast Storm.
К сожалению, наиболее часто используемая версия 1 протокола SNMP имеет довольно слабую схему аутентификации, основанную на использовании “строки сообщества”. Это связано с тем, что фиксированный пароль передается по сети в открытом виде. По возможности старайтесь использовать 2-ю версию протокола SNMP, которая поддерживает схему проверки подлинности выборки на основе алгоритма MD5 и позволяет ограничить доступ к различной управляющей информации.
Протокол SNMP версии 1 не подходит для использования в общедоступной сети Интернет по следующим причинам:
MIB файл содержит информацию о различных объектах удаленного устройства. MIB определяет текстовое имя управляемого объекта и объясняет его значение.
В агенте может быть реализовано много MIB, но во всех агентах реализована конкретная MIB, которая называется MIB-II (RFC 1213). Этот стандарт определяет переменные для таких параметров, как статистика интерфейса (скорость интерфейса, MTU, количество отправленных октетов1, количество принятых октетов и т.д.), а также различных параметров, относящихся к самой системе (местоположение системы, контактные сведения и т.д.) Основная цель MIB-II – предоставить общую управляющую информацию TCP/IP.
Управляемые объекты (OID) организованы в древовидную иерархию. Сосредоточимся на субдереве so(1).org(3).dod(6).internet(1), которое в форме OID представляется как 1.3.6.1 или iso.org.dod.internet. У каждого управляемого объекта есть цифровой идентификатор OID и соответствующее текстовое имя. Обозначение в виде разделенных точками чисел используется для представления управляемого объекта внутри агента; текстовое имя, как доменное имя, соответствующее IP- адресу, избавляет людей от необходимости запоминать длинные, сложные строки чисел.
В настоящее время в субдереве private(4) есть одна ветвь enterprises(1). Она используется для того, чтобы предоставить производителям аппаратного и программ ного обеспечения возможность определить свои собственные частные объекты для любого типа аппаратных или программных средств, которыми они хотят управлять при помощи SNMP. SMI Network Management Private Enterprise Codes: D-Link (171), Cisco(9), Microsoft (311).
Основная цель MIB-II – предоставить общую управляющую информацию TCP/IP. MIB-II – очень важная группа управления, потому что каждое устройство, поддерживающее SNMP, должно также поддерживать MIB-II.
MIB-II определена как iso.org.dod.internet.mgmt.1, или 1.3.6.1.2.1.
Описание групп MIB-II | |||
---|---|---|---|
№ | Имя субдерева | OID | Описание |
1 | system | 1.3.6.1.2.1.1 | Определяет список объектов, относящихся к работе системы, таких как время работы системы, контактная информация и имя системы |
2 | interfaces | 1.3.6.1.2.1.2 | Отслеживает состояние каждого интерфейса на управляемой системе. Группа interfaces от слеживает, какие интерфейсы работают и не работают, и такие параметры, как количество отправленных и полученных октетов, ошибок и потерь пакетов и т. д. |
3 | at | 1.3.6.1.2.1.3 | Группа трансляции адресов (at) исключена и предоставляетcя только для обратной совместимости |
4 | ip | 1.3.6.1.2.1.4 | Отслеживает многие аспекты IP, в том числе IP-маршрутизацию |
5 | icmp | 1.3.6.1.2.1.5 | Отслеживает ошибки, потери пакетов ICMP и т. д. |
6 | tcp | 1.3.6.1.2.1.6 | Помимо прочего отслеживает состояние TCP- соединения (например, closed (закрыто), listen(порт прослушивается), synSent (отправлен пакет syn) и т. д.) |
7 | udp | 1.3.6.1.2.1.7 | Отслеживает статистику UDP, входящие и исходящие датаграммы и т. д. |
8 | egp | 1.3.6.1.2.1.8 | Отслеживает различную статистику протокола EGP (Exterior Gateway Protocol) и хранит таблицу соседей EGP |
9 | cmot | ||
10 | transmission | 1.3.6.1.2.1.10 | В настоящее время в этой группе не определено объектов, но другие MIB для конкретных каналов передачи определяются при помощи этого субдерева |
11 | snmp | 1.3.6.1.2.1.11 | Измеряет производительность базовой реализации SNMP на управляемой системе и отслеживает такие параметры, как количество отправленных и полученных SNMP-пакетов |
Инсталляция Net-SNMP Ubuntu
aptitude install snmp snmp-mibs-downloader
Для загрузки и подключения стандартных MIB к SNMP клиенту выполним две команды
/usr/bin/download-mibs sed -i 's/^mibs/#mibs/g' /etc/snmp/snmp.conf
Инсталляция Net-SNMP CentOS
yum install net-snmp-utils net-snmp snmpwalk -v 2c -c public localhost
Утилита Net-SNMP snmpusm применяется для управления пользователями SNMPv3.Три базовых операции SNMP – это snmpget, snmpset и snmpwalk. Их назначение понятно из названия: snmpget считывает значение параметра с управляемого устройства, snmpset устанавливает значение параметра на устройстве, а snmpwalk считывает с устройства часть дерева MIB.
Чтобы при помощи языка PHP (SNMP Функции) взаимодействовать с протоколом SNMP, должны быть установлены дополнительный пакеты:
aptitude install php5-snmp php5-cli
<?php $opt = getopt("h:"); echo "IF-MIB::ifName - The textual name of the interface.\n"; print_r(snmp2_real_walk($opt['h'], "public", "IF-MIB::ifName")); ?>
$ php snmp1.php -h 192.168.10.11 IF-MIB::ifName - The textual name of the interface. Array ( [IF-MIB::ifName.1] => STRING: lo [IF-MIB::ifName.2] => STRING: eth0 [IF-MIB::ifName.3] => STRING: eth1 [IF-MIB::ifName.4] => STRING: br0 [IF-MIB::ifName.5] => STRING: wifi0 [IF-MIB::ifName.6] => STRING: ath0 [IF-MIB::ifName.7] => STRING: ath1 )