Показаны сообщения с ярлыком SNMP. Показать все сообщения
Показаны сообщения с ярлыком SNMP. Показать все сообщения

четверг, 21 ноября 2013 г.

Организация приема SNMP trap’ов и их отправки на коммутаторах DLink

В рамках поставленной задачи (узнавать о появлении новых MAC-адресов на портах
коммутаторов DLink) понадобилось организовать настройку SNMP-trap'ов на
коммутационном оборудовании с последующим приемом их на сервере и дальнейшей
обработкой в зависимости от пришедшего события.

Для начала надо установить и настроить демон, который будет принимать трапы от
оборудования и при нужном MIB вызывать наш обработчик. Установка net-snmp -
тема отдельная, выполняется из пактов или портов, и особых трудностей не вызывает.

Собственно приемом трапов занимается snmptrapd. Для обработки заданного трапа
пишем в snmptrapd.conf:

    traphandle 1.3.6.1.4.1.171.11.63.6.2.20.0.2 /scripts/trap.php

Теперь после рестарта демона snmptrapd, он начнет принимать приходящие трапы и
при наличии трапа с заданным MIB (1.3.6.1.4.1.171.11.63.6.2.20.0.2 - в нашем
случае), будет вызывать наш обработчик, который уже будет совершать необходимые
нам действия.
Обработчик SNMP-трапов

Принимать SNMP trap-ы на самом деле достаточно просто. Вот пример простого
обработчика SNMP-трапов на PHP:

      #!/usr/bin/php -q
      <?php
      $message = "";
      $fd = fopen("php://stdin", "r");
      while (!feof($fd)) $message .= fread($fd, 1024);
      ?>

Все что делает этот скрипт - получает в переменную $message текст, который
передается демоном snmptrapd. Текст приходит разделенный знаками конца строки.
Первая строка - это всегда имя хоста (который прислал трап), вторая - IP-адрес
этого хоста, третья - его uptime, четвертая - MIB пришедшего трапа. Остальные
строки в сообщении - это детальная информация касательно пришедшего трапа, если
она предусмотрена.


Для отправки Trap-ов на коммутаторе исполняем такие команды:

    create snmp community trap_com view CommunityView read_only
    create snmp host x.x.x.x v2c trap_com

Где х.х.х.х - IP-адрес сервера, котоырй будет принимать SNMP traps.

Далее надо включить опцию дабы коммутатор отсылал трап при появлении на порту
нового мака. Делается это через SNMP

    snmpset -v2c -c write_commenity switch_ip 1.3.6.1.4.1.171.11.63.6.2.1.2.19.0 i 3

Выключить эту опцию можно так

    snmpset -v2c -c write_commenity switch_ip 1.3.6.1.4.1.171.11.63.6.2.1.2.19.0 i 2

Узнать текущее состояние опции можно так

    snmpwalk -v2c -c read_commenity switch_ip 1.3.6.1.4.1.171.11.63.6.2.1.2.19


Вся информация справедлива для коммутаторов 3028. Для других моделей MIB-ы
могут сильно отличаться - к сожалению, DLink любит менять их от серии к серии.
Надо заметить, что опция отправки трапа при появлении нового мака на порту
доступна далеко не на всех моделях DLink-овых коммутаторов - например, 3010
такой возможности не поддерживает.

четверг, 31 октября 2013 г.

Как создать VLAN и добавить в него порты на коммутаторах серий DES-35XX, DES-38XX, DES-30XX и DES-3226S по SNMP

Задача:
Создать VLAN с VID=5 и добавить в него порты: порт 14 как tagged, порты 25-26 как untagged.
Примечание: Порты 14, 25-26 удалены из VLAN default.
Команда (для серий DES-38XX, DES-35XX и DES-30XX):
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.1.5 s v5 1.3.6.1.2.1.17.7.1.4.3.1.2.5 x 000400C0 1.3.6.1.2.1.17.7.1.4.3.1.3.5 x 00000000 1.3.6.1.2.1.17.7.1.4.3.1.4.5 x 00040000 1.3.6.1.2.1.17.7.1.4.3.1.5.5 i 4
Объяснение:
5 - VID
snmpset -v2c -c private 192.168.0.1
1.3.6.1.2.1.17.7.1.4.3.1.1.5 sv5 <= Задаём имя VLAN-а с VID=5 – v5.

1.3.6.1.2.1.17.7.1.4.3.1.2.5 x 000400С0 <= Порты, которые должны быть добавлены в VLAN как tagged– порты 25-26.
Порты задаются следующим образом:
x 00000000 – шестнадцатеричное число, каждый октет (4 разряда) которого представляют 4 порта. Старший разряд представляет порт 1. Старшие два разряда седьмого октета представляют порты 25-26. Т.е. 1100 (двоичное) = C (шестнадцатеричное).
1.3.6.1.2.1.17.7.1.4.3.1.3.5 x 00000000 <= Порты, которые не могут быть добавлены в этот VLAN (forbidden).

1.3.6.1.2.1.17.7.1.4.3.1.4.5 x 00040000 <= Порты, которые должны быть добавлены в VLANкак untagged– порт 14.
*  Для того, чтобы добавить untagged порт в VLAN, сначала его нужно добавить как tagged, т.е. добавление в VLAN как untaggedпорта 14 будет выглядеть следующим образом, при условии, что VLANv5 уже создан:
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.2.5 x 00040000  1.3.6.1.2.1.17.7.1.4.3.1.4.5 x 00040000
1.3.6.1.2.1.17.7.1.4.3.1.5.5 i 4 <= Создать VLAN с указанными параметрами createAndGo(4)


Команда (для DES-3226S):
Отличие заключается в том, что DES-3226S поддерживает аппаратное стекирование. В стек может быть добавлено до 16 коммутаторов DES-3226S, следовательно общее количество портов 26*16 = 416. Количество шестнадцатеричных цифр представляющих это количество портов 416:4 = 104. Исходя их этого и указывается количество шестнадцатеричных разрядов.
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.1.5 s v5
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.2.5 x 000000C000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.3.5 x 000000C000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.4.5 x 0004000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000
snmpset -v2c -c private 192.168.0.1 1.3.6.1.2.1.17.7.1.4.3.1.5.5 i 4

вторник, 29 октября 2013 г.

Как перезагрузить управляемые коммутаторы D-Link по SNMP?



Параметр SNMP, отвечающий за перезагрузку устройства, может отличаться в зависимости от модели коммутатора.
Ниже приведена таблица этих параметров для наиболее распространённых моделей управляемых коммутаторов D-Link:
Модель коммутатора FW Параметр SNMP Значение
DES-2110 Любая miscReset(OID=1.3.6.1.4.1.171.10.61.1.3.2) (1) - reset
DES-2108 Любая miscReset(OID=1.3.6.1.4.1.171.10.61.2.3.2) (1) - reset
DES-3226S Любая agentSystemReset(OID=1.3.6.1.4.1.171.11.36.2.5.2.1.0) (2) - cold start
DES-3226S Любая agentSystemReset(OID=1.3.6.1.4.1.171.11.48.1.1.1.1.2.5) (2) - cold start
DES-3250TG Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (2) - cold start
DES-3026 Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DES-3526 Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3.0) (3) - warm start
DES-3326SR Любая agentSystemReset(OID=1.3.6.1.4.1.171.11.49.2.1.1.1.2.5) (2) - cold start
DES-3350SR Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DES-3828 Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DGS-3024 Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (2) - cold start
DES-3224TGR Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DGS-3312SR Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DGS-3324SR
DGS-3324SR
DXS-3326GSR
DXS-3350SR
Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start
DES-6500 Любая agentSystemReset(OID=1.3.6.1.4.1.171.12.1.2.3) (3) - warm start

воскресенье, 27 октября 2013 г.

Обновляем прошивку на коммутаторах D-Link

Существует по крайне мере 4 способа (возможно есть и еще) обновления прошивки на коммутаторах D-link
Для примера возьмем DES-3526
1. Загрузка прошивки через консольный кабель (восстановление слетевшей прошивки)
2. Загрузка прошивки по сети, через cli.
3. Загрузка прошивки через web интерфейс
4. Загрузка прошивки по средствам snmp.

FTP с которого можно получить прошивки, MIB и т.п. ftp://ftp.dlink.ru/pub/Switch/

Первый способ применим лишь  тогда, когда на коммутаторе отсутствует прошивка. Про этот способ я уже писал, ознакомиться с ним можно тут Восстановление прошивки на коммутаторах D-link
2. Загрузка прошивки по сети, через cli.
- Необходимо зайти на коммутатор по telnet или ssh.
- Ввести в командной строке коммутатора команду:
download firmware <Полный путь к файлу прошивки> <указать в какой слот загружать прошивку, в первый или во второй, если не указывать image_id то по умолчанию будет 1 слот)>
Пример команды:
DES-3526:admin# download firmware_fromTFTP 192.168.200.10 fw_des3526
Дождавшись загрузки и установки прошивки на коммутатор, необходимо перезагрузить коммутатор, выполнив команду reboot на коммутаторе и нажав «y» для подтверждения.
3. Загрузка прошивки через web интерфейс
Заходим на коммутатор через веб-интерфейс, выбираем Maintenance -> Download firmware

Вписываем в поле Server IP Address – ip-адрес tftp сервера, а в поле File Name – имя файла прошивки, после этого нажать старт.






Дождавшись окончания загрузки необходимо перезагрузить коммутатор.
4. Загрузка прошивки по средствам snmp.
Задаем IP-адрес TFTP-сервера:
snmpset –v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.3.1 a 192.168.200.10
172.20.0.1 -> IP-адрес коммутатора
192.168.200.10 -> IP-адрес TFTP-сервера
Указываем тип передачи файла:
snmpset -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.4.1 i 2
Задаем имя файла прошивки:
snmpset -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.5.1 s fw_des3526
Указываем загрузку файла на коммутатор
snmpset -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.7.1 i 3
Начать передачу файла:
snmpset -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.8.1 i 3
Выбрать ID прошивки в качестве загрузочной:
snmpset -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.10.1 i 1
Теперь осталось только перезагрузить коммутатор:
snmpset -t 45 -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.3.0 i 3
Получился у нас приблизительно такой скрипт:
#!/usr/local/bin/bash
snmpset -t 90 -r 1 -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.1.1.3.1 a 192.168.200.10 \
1.3.6.1.4.1.171.12.1.2.1.1.4.1 i 2 \
1.3.6.1.4.1.171.12.1.2.1.1.5.1 s fw_des3526 \
1.3.6.1.4.1.171.12.1.2.1.1.7.1 i 3 \
1.3.6.1.4.1.171.12.1.2.1.1.8.1 i 3 \
1.3.6.1.4.1.171.12.1.2.1.1.10.1 i 1
snmpset -t 45 -v2c -c private 172.20.0.1 1.3.6.1.4.1.171.12.1.2.3.0 i 3
P.S: Сохранение конфига:
snmpset -t 60 -r 1 -v2c -c private 10.90.90.90 1.3.6.1.4.1.171.12.1.2.6.0 i 3

четверг, 17 октября 2013 г.

Установка net-snmp-utils в RHEL

Добрый день. Возникла необходимость установить на RedHat x86_64 snmpwalk. Естественно в репозитории rhel его нет. snmpwalk находится в пакете net-snmp-utils . Поискав решение в интернете я поключил несколько репозиториев EPEL, REMI, RPMforge .

Комманды для x86_64 (RHEL 6) :

cd /tmp
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install -y yum-priorities

Комманды для i386 (RHEL 6) :

cd /tmp
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
rpm -ivh rpmforge-release-0.5.3-1.el6.rf.i686.rpm
rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
yum install -y yum-priorities
 
Включаем репозитории и выставляем приоритет: 
Во всех репозиториях выставляем enabled=1 и после этой строчки добавляем priority=10 .
vim /etc/yum.repos.d/remi.repo
 
[remi]
name=Les RPM de remi pour Enterprise Linux $releasever - $basearch
#baseurl=http://rpms.famillecollet.com/enterprise/$releasever/remi/$basearch/
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
failovermethod=priority
 
vim /etc/yum.repos.d/epel.repo
 
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&amp;arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
 
Но это не сработало. На http://mirror.centos.org/centos/5/os/x86_64/CentOS/ я нашёл 
нужные пакеты:
wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/net-snmp-5.3.2.2-20.el5.x86_64.rpm
wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/net-snmp-utils-5.3.2.2-20.el5.x86_64.rpm
wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/net-snmp-libs-5.3.2.2-20.el5.i386.rpm
rpm -Uhv net-snmp-libs-5.3.2.2-20.el5.i386.rpm
rpm -Uhv net-snmp-5.3.2.2-20.el5.x86_64.rpm
rpm -Uhv net-snmp-utils-5.3.2.2-20.el5.x86_64.rpm

Теперь работает.