无法创建snmpv3会话并发送snmpv3陷阱



1。无法创建SNMPv3会话

我正在使用NET::SNMP perl库发送snmpv3陷阱。它在snmpv1和snmpv2上运行良好,但我无法发送snmpv3陷阱。我正在使用Mg软陷阱振铃器接收陷阱,但我甚至无法创建会话。

snmpv3会话创建代码:

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

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

2.无法发送SNMPv3陷阱

我能够用我在某处找到的陷阱接收器snmp服务器配置为snmpv3创建会话。但是当使用NET::SNMP库发送陷阱时,我收到以下错误:

必须是权威SNMP引擎才能生成SNMPv2陷阱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' ],
);

请告诉我为什么会出现这个错误。

就SNMPv3而言,我看到您的代码片段中缺少一些字段。

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

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

对于陷阱部分,似乎发送方必须是一个权威的SNMP引擎——Net::SNMP模块还不支持它。以下引用自Net::SNMP

snmpv2_trap()-向远程管理器发送SNMP snmpv2陷阱
注意:只有当对象的版本为设置为SNMPv2c。SNMPv3支持SNMPv2陷阱PDU,但需要消息的发送方是权威SNMP引擎Net::SNMP模块当前不支持。

最新更新