我在 SNMP v3 服务器(Cisco 路由器)上配置了 2 个用户:
- 使用 DES 作为隐私方法的用户 (
desuser
) - 使用 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 代理上同时使用这两个用户 (aesuser
和desuser
),没有任何问题。
请告诉我:
-x
使用 AES 128 时需要在命令行 arg 中指定什么?应该只是AES
还是AES128
?当我查看
snmpget
(在最后的链接中)的代码时,我注意到分配给命令行 arg 的值-x
被分配给了一个名为privacy
.IPrivacyProvider
但是,在设置对象时,以后在代码中永远不会使用此变量。设置 this 对象时唯一可用的两个代码路径是DESPrivacyProvider
和DefaultPrivacyProvider
。(请参阅下面的代码摘录)这些难道不应该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/