Невозможно создать сеанс snmpv3 и отправить ловушку snmpv3

1. Не удалось создать сеанс SNMPv3

Я использую библиотеку NET :: SNMP perl для отправки ловушки snmpv3. Она нормально работала с snmpv1 и snmpv2, но я не могу отправить ловушку snmpv3. Я использую Mg-soft trap ringer для приема ловушек, но я не могу даже создать сеанс.

Код для создания сеанса snmpv3:

my ($session, $error) = Net::SNMP->session( 
-hostname     => 'my_host_name', 
-version     => '3',
-username     => 'user-md5',
-authprotocol => 'md5',
-authpassword => 'abcd1234'
);

Здесь имя пользователя - это имя пользователя системы безопасности, добавленное в Mg-soft trap ringer. Почему я не могу создать сеанс? Или подскажите, пожалуйста, как я могу получить ловушку snmpv3, отправленную через библиотеку NET :: SNMP.

2. Не удается отправить прерывание SNMPv3

Я могу создать сеанс для snmpv3 с некоторой конфигурацией сервера snmp приемника ловушек, которую я где-то нашел. Но при отправке ловушки с использованием библиотеки NET :: SNMP я получаю следующую ошибку:

Должен быть авторитетный механизм SNMP для создания SNMPv2-Trap-PDUdf

Вот фрагмент кода, который я использовал:

my $OID_sysContact = '1.5.2.9.4.6.6.5.4';
my $result = $session->snmpv2_trap(
-varbindlist => [ $OID_sysContact, OCTET_STRING, 'Help Desk x911' ],
);

Пожалуйста, подскажите, почему я получаю эту ошибку.


person OneWhoKnocks    schedule 14.11.2017    source источник
comment
Вы сказали, что не смогли отправить snmpv3 trap, но в вашем коде кажется, что вы пытаетесь отправить trap v2 в соединение v3?   -  person Bala Krishnan    schedule 16.11.2017


Ответы (1)


Я вижу несколько недостающих полей в вашем фрагменте, что касается SNMPv3.

Сомневаюсь, почему Net::SNMP не имеет поля уровня безопасности для соединений v3. Существует три уровня безопасности - noAuthnoPriv, authNoPriv и authPriv. На основе этих уровней может быть сформирован запрос на соединение SNMPv3.

Во-первых, в вашем запросе на соединение у вас есть только информация, связанная с аутентификацией, и ничего о протоколе конфиденциальности / ключе конфиденциальности. Во-вторых, я предлагаю вам использовать значение версии как snmpv3, а не просто 3.

Что касается прерывания, похоже, что отправитель должен быть авторитетным механизмом SNMP, который еще не поддерживается модулем Net :: SNMP. Цитируется ниже из Net :: SNMP

snmpv2_trap () - отправить ловушку SNMP snmpV2 удаленному диспетчеру
ПРИМЕЧАНИЕ. Этот метод можно использовать, только если для версии объекта задано значение SNMPv2c. SNMPv2-Trap-PDU поддерживаются SNMPv3, но требуют, чтобы отправитель сообщения был авторитетным механизмом SNMP, который в настоящее время не поддерживается модулем Net :: SNMP.

person Bala Krishnan    schedule 16.11.2017