2012-02-29 93 views
0

我使用NETSNMP库从使用SNMPv3和认证的路由器请求数据。如果路由器重置,内部EngineTime将被重置,而NETSNMP库不会识别该内部EngineTime。这会导致路由器在随后的调用中引发认证失败。NETSNMP在“SNMP未及时窗口”错误后未更新EngineTime,如何手动重置内部NETSNMP SSL结构?

是否有任何api调用NETSNMP手动重置内部结构,以便提出新的请求?

我将每个呼叫都放在snmp_sess_open/close中,因此没有打开的会话。

回答

0

如果您在路由器上进行硬重置,您将遇到麻烦。当路由器重新启动SNMPv3规范需要时,snmpEngineBoots计数器递增,并且snmpEngineTime重置为0.如果您的设备在没有snmpEngineBoots值递增的情况下重新启动(即它始终为0或1),则运行管理器会看到这是一个问题,因为该设备正在报告它正在及时倒退。

如果你真的想忽略与这样的安全问题,可以随时拨打:

int    set_enginetime(const u_char * engineID, u_int engineID_len, 
           u_int engine_boot, u_int engine_time, 
           u_int authenticated); 

你必须明白,即时你做,你就把自己的重放攻击。所以不要让你的设备在没有snmpEngineBoots值递增的情况下重置,否则,改变它的snmpEngineID。