faq обучение настройка
Текущее время: Ср авг 13, 2025 22:35

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
СообщениеДобавлено: Вт окт 12, 2010 12:49 
Не в сети

Зарегистрирован: Пн окт 11, 2010 15:10
Сообщений: 7
Откуда: Кострома
День добрый.

Прошивка коммутатора:
Boot PROM Version : Build 1.00.B06
Firmware Version : Build 2.41.B02
Hardware Version : A2

Выполняю следующие действия:
1. сначала по telnet create access_profile ethernet source_mac 00-00-00-00-00-00 profile_id 10;
2. потом по snmp пытаюсь создать access rule (config access_profile profile_id 10 add access_id 4 ethernet source_mac 00-00-00-00-00-00 port 4 deny):
- snmpset -v 2c -c $comm $ip 1.3.6.1.4.1.171.12.9.3.1.1.15.10.4 i 4 # createAndGo
- snmpset -v 2c -c $comm $ip 1.3.6.1.4.1.171.12.9.3.1.1.13.10.4 i 1
- snmpset -v 2c -c $comm $ip 1.3.6.1.4.1.171.12.9.3.1.1.14.10.4 x 10000000 #Source mac address
- snmpset -v 2c -c $comm $ip .1.3.6.1.4.1.171.12.1.2.6.0 i 5 # Save config

Проверяю результаты:
Список портов:
snmpwalk -v 2c -Cc -c $comm $ip 1.3.6.1.4.1.171.12.9.3.1.1.14.10
Результат:
ACLMGMT-MIB::swACLEtherRulePort.10.4 = Hex-STRING: 00 00 00 00 00 00 00 00
Проверка access-rule 4 на предмет actions:
snmpwalk -v 2c -Cc -c $comm $ip 1.3.6.1.4.1.171.12.9.3.1.1.13.10
Результат:
ACLMGMT-MIB::swACLEtherRulePermit.10.4 = INTEGER: permit(2)

Т.е. устанавливал порт 4. Коммутатор "съел" комманду, но результат нулевой. Устанвливал action правила deny(1), но результат - permit(2). Сохранил конфигурацию, но после перезагрузки все, что я сделал удалилось, т.е. изменения не сохранились.
Может я что-то не то делаю, может ошибка где-то. Пробовал различные варианты, но бестолку. И создать правило (createAndGo) пробовал вконце ставить и сконфигурировать все параметры... в общем уже второй день бьюсь.
Переписал все это действо на perl - без результата.
Подскажите что делать?

_________________
Каждый день узнаешь что-то новое.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт окт 12, 2010 13:15 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт фев 12, 2009 14:59
Сообщений: 9482
Откуда: Ryazan
Я выслал Вам последнюю версию прошивки и SNMP How-To по работе с Ethernet ACL. Попробуйте, пожалуйста, ситуацию с ними и сообщите по результатам.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 12, 2010 14:03 
Не в сети

Зарегистрирован: Пн окт 11, 2010 15:10
Сообщений: 7
Откуда: Кострома
Нет. Не помогло. Такая же ситуация. Даже созданный по snmp acl не сохранился после перезагрузки.

_________________
Каждый день узнаешь что-то новое.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 12, 2010 14:22 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт фев 12, 2009 14:59
Сообщений: 9482
Откуда: Ryazan
Вам нужны вот такие команды:

Создание правила для указанного профиля:
Код:
snmpset -v2c -c private 10.90.90.90 1.3.6.1.4.1.171.12.9.3.1.1.4.10.4 x 000000000000 1.3.6.1.4.1.171.12.9.3.1.1.13.10.4 i 1 1.3.6.1.4.1.171.12.9.3.1.1.14.10.4 x 1000000000000000 1.3.6.1.4.1.171.12.9.3.1.1.15.10.4 i 4
Сохранение конфигурации и логов:
Код:
snmpset -v2c -c private 10.90.90.90 .1.3.6.1.4.1.171.12.1.2.6.0 i 5


P.S. Правило нужно создавать не последовательностью команд, а именно одной командой. Документацию по работе с ACL по SNMP я Вам высылал, там приведен рабочий пример.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 12, 2010 15:52 
Не в сети

Зарегистрирован: Пн окт 11, 2010 15:10
Сообщений: 7
Откуда: Кострома
Спасибо получилось и даже на 2.41.B02. Теперь как бы все это организовать на perl, а не на системной утилите snmpwalk...

_________________
Каждый день узнаешь что-то новое.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт окт 12, 2010 15:57 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт фев 12, 2009 14:59
Сообщений: 9482
Откуда: Ryazan
Если встроенные средства языка не позволяют изменять несколько OID одной командой, то легче просто прибегнуть к вызову внешней утилиты snmpset.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 14, 2010 07:39 
Не в сети

Зарегистрирован: Пн окт 11, 2010 15:10
Сообщений: 7
Откуда: Кострома
В том-то и дело, что мне нужно работать с perl под windows. Получилось с помощью библиотеки SNMP:

Код:
#!/usr/bin/perl                                                                                                                                                                                 
use SNMP::Util;                                                                                                                                                                                 
                                                                                                                                                                                                 
&SNMP::addMibFiles("/ftp/Ware/D-Link/DES-3028/Apps/des3028_3052_series_MIB_200/Private MIB/DLINK-ID-REC-MIB.mib");                                                                               
&SNMP::addMibFiles("/ftp/Ware/D-Link/DES-3028/Apps/des3028_3052_series_MIB_200/Private MIB/ACL.mib");                                                                                           
&SNMP::initMib();                                                                                                                                                                               
                                                                                                                                                                                                 
my $ports="2.10.20.24.3";
                                                                                                                                                                                                 
@ports=split(/\./,$ports);                                                                                                                                                                       
@rr=();                                                                                                                                                                                         
foreach my $port (@ports) {                                                                                                                                                                     
    $z='1';                                                                                                                                                                                     
    for (my $i=0; $i<$port-1; $i++) {                                                                                                                                                           
        $z="0".$z;                                                                                                                                                                               
    }                                                                                                                                                                                           
    for (my $i=0; $i<24-$port; $i++) {                                                                                                                                                           
        $z=$z."0";                                                                                                                                                                               
    }                                                                                                                                                                                           
    $rr[$port]=$z;                                                                                                                                                                               
}                                                                                                                                                                                               
$res="000000000000000000000000";                                                                                                                                                                 
foreach my $t (@rr) {                                                                                                                                                                           
    $res = $res | $t;                                                                                                                                                                           
}                                                                                                                                                                                               
$hex_res="";                                                                                                                                                                                     
for (my $i=0; $i<length($res); $i++) {                                                                                                                                                           
    $z = unpack("H*", pack ("B*", substr $res, 0, 8, ''));                                                                                                                                       
    $hex_res.=$z;                                                                                                                                                                               
}                                                                                                                                                                                               
my $snmp = new SNMP::Util( -device => $ip, -community => $comm);                                                                                                                                 
@oids0=(                                                                                                                                                                                         
  ('ACLMGMT-MIB::swACLEtherRuleRowStatus','10.4', 'destroy')                                                                                                                                     
);                                                                                                                                                                                               
@result = $snmp->set( @oids0 );                                                                                                                                                                 
@oids=(                                                                                                                                                                                         
  ('ACLMGMT-MIB::swACLEtherRuleSrcMacAddress','10.4', '000000'),                                                                                                                                 
  ('ACLMGMT-MIB::swACLEtherRulePermit','10.4', '1'),                                                                                                                                             
  ('ACLMGMT-MIB::swACLEtherRulePort','10.4', pack("H*", $hex_res)),                                                                                                                             
  ('ACLMGMT-MIB::swACLEtherRuleRowStatus','10.4', 'createAndGo')                                                                                                                                 
);
@result = $snmp->set( @oids );

_________________
Каждый день узнаешь что-то новое.


Последний раз редактировалось pdenis_p79 Пт окт 15, 2010 15:52, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 14, 2010 09:12 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт фев 12, 2009 14:59
Сообщений: 9482
Откуда: Ryazan
Решать задачу можно по-разному, конечно.
P.S. Пакет net-snmp есть и под Windows.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 14, 2010 09:31 
Не в сети

Зарегистрирован: Пн окт 11, 2010 15:10
Сообщений: 7
Откуда: Кострома
Я просто решаю задачу автоматизации управления довольно большого количества коммутаторов, портов. Если делать вызовы внешней программы, например из perl, того же snmpset под Linux (в случае windows не эксперементировал), то при большом количестве опрашиваемых хостов программа работает очень медленно, поэтому был выбран perl... на худой конц. А код я разместил ради примера, может и пригодится кому-нибдь.

Спасибо за помощь.

_________________
Каждый день узнаешь что-то новое.


Последний раз редактировалось pdenis_p79 Чт окт 14, 2010 09:38, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт окт 14, 2010 09:35 
Не в сети
Сотрудник D-LINK
Сотрудник D-LINK

Зарегистрирован: Чт фев 12, 2009 14:59
Сообщений: 9482
Откуда: Ryazan
Не за что. Рад слышать, что решение найдено!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 19


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB