Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Error de SNMPv3 Perl Net::SNMP - Error de sincronización de tiempo durante el descubrimiento.

El siguiente procedimiento es para dar solución al error de sincronización durante un descubrimiento realizado con el protocolo SNMPv3 a dispositivos con un firmware que no ejecuta un procedimiento de autenticación completo, por tal motivo se ve afectado la colección de datos.  

El módulo Net::SNMP utiliza el esquema del procedimiento en la Sección 4 de RFC 3414 para realizar el descubrimiento. 
Parece que el firmware del hardware no exige la comprobación de la puntualidad y no responde con una PDU de informe usmStatsNotInTimeWindows durante el proceso de descubrimiento, por lo tanto se genera un error de sincronización.

...

Code Block
languageperl
themeMidnight
titleError Net::SNMP
error: [2633] Net::SNMP::_discovery_synchronization_cb(): Time synchronization failed during discovery
debug: [2636] Net::SNMP::_discovery_synchronization_cb(): synchronization failed
error: [1064] Net::SNMP::PDU::_report_pdu_error(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769
error: [299] Net::SNMP::MessageProcessing::prepare_data_elements(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769
error: [398] Net::SNMP::Dispatcher::_transport_response_received(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769
error: [2520] Net::SNMP::__ANON__(): Received usmStatsUnknownEngineIDs.0 Report-PDU with value 11769 during discovery
  • Se determinaron que determinó que este error podría ignorarse,  por   por lo que modificar la biblioteca Net :: SNMP Perl podría solucionar este problema.
  • Si encuentra el error 'La sincronización de tiempo falló durante el descubrimiento' usando la biblioteca perl Net :: SNMP, puede ser una solución fácil. Es necesario editar el módulo Net :: SNMP para no invocar este error, generando un Bypass en el proceso de descubrimiento. tal Tal proceso tiene que ejecutarse como root.

...

Antes de realizar la edicion del archivo SNMP.pm es recomendable realizar un BKP, una vez realizodo realizado el BKP abrimos el archivo SNMP.pm ubicado en la ruta /usr/local/share/perl5/Net/

...

Nota: buscar con la siguiente linea  linea:  if (($this→{_security}→discovered())

...

Ya localizado el segmento se tiene que editar y comentar las líneas correspondientes quedando dela de la siguiente manera:

Code Block
languageperl
themeMidnight
titleSNMP.pm version: 5.5
2620    if ( $this->{_security}->discovered() )
2621#       ($this->{_error} =~ /usmStatsNotInTimeWindows/))
2622   {
2623      $this->_error_clear();
2624      DEBUG_INFO('discovery and synchronization complete');
2625      return $this->_discovery_complete();
2626   }
2627
2628   # If we received the usmStatsNotInTimeWindows report or no error, but
2629   # we are still not synchronized, provide a generic error message.
2630   #LATAM Bypass "sincronización de tiempo" de SNMPv3
2631#   if ((!$this->{_error}) || ($this->{_error} =~ /usmStatsNotInTimeWindows/)) {
2632#      $this->_error_clear();
2633#      $this->_error('Time synchronization failed during discovery');
2634#   }

...

Finalizando la edición es necesario reiniciar el servicio snmpd: service snmpd .restart


Referencias:

Perl Net::SNMP Error: Time synchronization failed during discovery

...