1

我在 SNMP v3 服务器(Cisco 路由器)上配置了 2 个用户:

  1. 使用 DES 作为隐私方法的用户 ( desuser)
  2. 使用 AES 128 作为隐私方法的用户 ( aesuser)

两个用户的隐私密码和身份验证密码设置为相同:12345678出于测试目的。

使用下面链接中的代码(在问题结束时),我能够使用DES隐私方法执行 SNMP v3 查询。为此,我使用了以下命令行参数:

-v=3 -l=authPriv -a=MD5 -A=12345678 -x=DES -X=12345678 -u=desuser 10.10.10.1 1.3.6.1.2.1.2.2.1.7.1

以上工作没有任何问题。

然后,我尝试AES 128通过在命令行参数上更改隐私方法和用户来用作隐私方法,如下所示:

-v=3 -l=authPriv -a=MD5 -A=12345678 -x=AES -X=12345678 -u=aesuser 10.10.10.1 1.3.6.1.2.1.2.2.1.7.1

这导致了 TimeoutException: 超时异常

我可以在其他 SNMP 代理上同时使用这两个用户 (aesuserdesuser),没有任何问题。

请告诉我:

  1. -x使用 AES 128 时需要在命令行 arg 中指定什么?应该只是AES还是AES128

  2. 当我查看snmpget(在最后的链接中)的代码时,我注意到分配给命令行 arg 的值-x被分配给了一个名为privacy. IPrivacyProvider但是,在设置对象时,以后在代码中永远不会使用此变量。设置 this 对象时唯一可用的两个代码路径是DESPrivacyProviderDefaultPrivacyProvider。(请参阅下面的代码摘录)这些难道不应该AESPrivacyProvider在代码上启用 AES 隐私方法吗?

snmpget从项目中提取的代码Program.vb

    Dim priv As IPrivacyProvider
    If ((level And Levels.Privacy) = Levels.Privacy) Then
        priv = New AESPrivacyProvider(New OctetString(privPhrase), auth)
    Else
        priv = New DefaultPrivacyProvider(auth)
    End If

https://github.com/lextm/sharpsnmplib/blob/master/Samples/VB.NET/snmpget/

4

1 回答 1

1

http://help.sharpsnmp.com/html/T_Lextm_SharpSnmpLib_Security_AESPrivacyProvider.htm

正如文档所述,AES 支持是实验性的。

您可以编写自己的隐私提供程序来处理此类算法,这纯粹是一个密码学挑战,不属于#SNMP 的范围(仅涵盖核心 SNMP 功能)。

于 2014-03-19T05:52:09.093 回答