我使用NETSNMP库使用SNMPv3和身份验证从路由器请求数据。如果重置路由器,则重置内部EngineTime,NETSNMP库无法识别。这会导致路由器在后续调用中丢失身份验证失败。
是否有任何api调用NETSNMP手动重置内部结构以便提出新的请求?
我将每次调用都包含在snmp_sess_open / close中,这样就没有开放的会话。
答案 0 :(得分: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。