1

1. 无法创建 SNMPv3 会话

我正在使用 NET::SNMP perl 库发送 snmpv3 陷阱。它与 snmpv1 和 snmpv2 工作正常,但我无法发送 snmpv3 陷阱。我正在使用 Mg-soft 陷阱振铃器来接收陷阱,但我什至无法创建会话。

snmpv3 会话创建代码:

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

这里的用户名是在 Mg-soft Trap Ringer 中添加的安全用户名。为什么我无法创建会话。或者请建议我如何接收通过 NET::SNMP 库发送的 snmpv3 陷阱。

2. 无法发送 SNMPv3 陷阱

我可以使用我在某处找到的一些陷阱接收器 snmp 服务器配置为 snmpv3 创建会话。但是在使用 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' ],
);

请建议我为什么会收到此错误。

4

1 回答 1

0

就 SNMPv3 而言,我从您的代码段中看到了一些缺失的字段。

我怀疑为什么Net::SNMP没有 v3 连接的安全级别字段。共有三个安全级别-noAuthnoPriv和。基于这些级别,可以形成 SNMPv3 连接请求。authNoPrivauthPriv

首先,在您的连接请求中,您只有身份验证相关信息,而没有关于隐私协议/私钥的信息。其次,我建议您使用 version 值snmpv3而不是 just 3

对于陷阱部分,似乎发件人必须是权威的 SNMP 引擎 - Net::SNMP 模块尚不支持。以下引自Net::SNMP

snmpv2_trap() - 向远程管理器发送 SNMP snmpV2-trap
注意:此方法只能在对象版本设置为 SNMPv2c 时使用。SNMPv3 支持 SNMPv2-Trap-PDU,但要求消息的发送者是权威的 SNMP 引擎,目前 Net::SNMP 模块不支持。

于 2017-11-16T06:45:47.610 回答