【问题标题】:Unable to create snmpv3 session and send snmpv3 trap无法创建 snmpv3 会话并发送 snmpv3 陷阱
【发布时间】:2017-11-14 13:46:41
【问题描述】:

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

这是我使用的代码sn-p:

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 陷阱,但在您的代码中,您似乎正在尝试将 v2 陷阱发送到 v3 连接?

标签: perl snmp net-snmp snmp-trap


【解决方案1】:

就 SNMPv3 而言,我看到您的 sn-p 中缺少一些字段。

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多