Error de acceso SNMPv3 de Juniper impredecible

8

Tenemos problemas en los que SNMPv3 deja de aceptar solicitudes SNMP en nuestros conmutadores de la serie Juniper EX. En lo que parecen ocurrencias aleatorias, los nodos de Juniper rechazan las credenciales de autenticación SNMP.

Esto es lo que terminamos obteniendo:

rj@MHN00525SYS01:~$ snmpwalk -v 3 -a SHA -A "PASS" -l authPriv -x AES -X "PASS" 
  -u "username" mhn00416an01 iso.3.6.1.2.1.1.1.0
snmpwalk: Unknown user name
rj@MHN00525SYS01:~$

Nuestros dispositivos estaban funcionando, pero luego simplemente se detienen. Los nombres de usuario son correctos y cargados en el sistema.

rj@MHN00416AN01# run show snmp v3 users

Engine ID: 80 00 0a 4c 04 31 33 <...snip...>
    User                            Auth/Priv   Storage      Status
    username                         sha/aes128 nonvolatile  active

Después de lidiar con esto por un tiempo, finalmente decidimos investigar. Estoy viendo esta entrada antes de que el sistema deje de aceptar solicitudes:

Nov  6 09:44:32  MHN00416AN01 mgd[7996]: UI_COMMIT: User 'rj' requested 'commit' 
  operation (comment: none)
Nov  6 09:44:35  MHN00416AN01 snmpd[1260]: LIBJSNMP_NS_LOG_ERR: ERR: snmpd: send_trap: USM 
  unknown security name (no such user exists) (plaintext scopedPDU header type 00: s/b 30)
Nov  6 09:44:35  MHN00416AN01 snmpd[1260]: SNMPD_ENGINE_ID_CHANGED: Warning: Local 
  engine ID has changed. Passwords for all the users under [edit snmp v3 usm local-engine] 
  need to be reconfigured.

He descubierto que simplemente volver a ingresar el nombre de usuario / contraseña restablece el acceso al dispositivo.

rj@MHN00416AN01# set snmp v3 usm local-engine user username 
  authentication-sha authentication-password PASS

{master:0}[edit]
rj@MHN00416AN01# set snmp v3 usm local-engine user username 
  privacy-aes128 privacy-password PASS

Después de una commitoperación, podemos acceder nuevamente.

rj@MHN00525SYS01:~$ snmpwalk -v 3 -a SHA -A "PASS" -l authPriv -x AES -X "PASS" 
  -u "username" mhn00416an01 iso.3.6.1.2.1.1.1.0
iso.3.6.1.2.1.1.1.0 = STRING: "Juniper Networks, Inc. ex3300-48p Ethernet Switch, kernel 
  JUNOS 12.3R3.4, Build date: 2013-06-14 02:21:01 UTC Copyright (c) 1996-2013 Juniper 
  Networks, Inc."
rj@MHN00525SYS01:~$

Este problema está ocurriendo en una tonelada de dispositivos diferentes. Los modelos incluyen EX2200-c, EX3300, EX4200 y EX4550 en la versión 12.3.

¿Por qué sucede esto y cómo puedo detenerlo?

Ryan Foley
fuente

Respuestas:

6

Este problema es el resultado del cambio de id del motor. Si se encuentra con este mensaje de Syslog, esa es la definición exacta del problema.

Nov  6 09:44:35  MHN00416AN01 snmpd[1260]: SNMPD_ENGINE_ID_CHANGED: Warning: Local 
  engine ID has changed. Passwords for all the users under [edit snmp v3 usm local-engine] 
  need to be reconfigured.

Desafortunadamente, he descubierto que esto está sucediendo sin razón aparente. La confirmación realizada antes de que este ID del motor cambiara fue una simple syslog-hostadición que resultó en el cambio del ID del motor. Juniper cubre la engine-idopción en su TechLibrary , que dice que la opción predeterminada es usar la dirección IP predeterminada del dispositivo.

Después de mucho golpear nuestras cabezas contra el escritorio, hemos descubierto que simplemente definir uno con una configuración explícita es la mejor opción, ya que sigue siendo coherente.

rj@MHN00416AN01# set snmp engine-id local ***.**.244.245

{master:0}[edit]
rj@MHN00416AN01# commit
configuration check succeeds
commit complete

Juniper también tiene una nota para cambiar la identificación del motor que debe hacerse antes de que funcione. Efectivamente significa que una vez que confirme una nueva ID de motor, también debe confirmar otro nombre de usuario / contraseña.

Nota: Las claves de autenticación y cifrado SNMPv3 se generan en función de las contraseñas asociadas y la ID del motor. Si configura o cambia la ID del motor, debe confirmar la nueva ID del motor antes de configurar los usuarios de SNMPv3. De lo contrario, las claves generadas a partir de las contraseñas configuradas se basan en la ID del motor anterior. Para la ID del motor, recomendamos usar la dirección MAC del puerto de administración.

Deberá comprometer a los nuevos usuarios en la configuración después del cambio de motor. Esto es importante porque los usuarios de SNMPv3 no funcionarán si no haces esto a pesar de lo que realmente se dice debajo de show snmp v3 users. Así que asegúrese de definir nuevos usuarios.

rj@MHN00416AN01# set snmp v3 usm local-engine user username 
  authentication-sha authentication-password PASS

{master:0}[edit]
rj@MHN00416AN01# set snmp v3 usm local-engine user username 
  privacy-aes128 privacy-password PASS

{master:0}[edit]
rj@MHN00416AN01# commit
configuration check succeeds
commit complete

Antes del cambio:

rj@MHN00416AN01# run show snmp v3

Local engine ID: 80 00 0a 4c 01 ** ** f4 f5
Engine boots:           1
Engine time:       421043 seconds
Max msg size:       65507 bytes

Engine ID: 80 00 0a 4c 04 31 33 <...snip...>
    User                            Auth/Priv   Storage      Status
    Username                         sha/aes128 nonvolatile  active

Después del cambio:

Local engine ID: 80 00 0a 4c 04 31 33 <...snip...>   <---- previously Engine ID
Engine boots:           1
Engine time:       421110 seconds
Max msg size:       65507 bytes

Engine ID: local   <------ changed
    User                            Auth/Priv   Storage      Status
    Username                         sha/aes128 nonvolatile  active

Esto proporciona una configuración SNMP más confiable que no es propensa a cambios en la identificación del motor y elimina el acceso. Juniper recomienda que use la use-mac-addressopción en lugar de la local engine-id-suffix. Esta opción es susceptible a problemas en una configuración de chasis virtual. Si un motor de enrutamiento de respaldo toma el control, el id del motor SNMP cambiará a la me0interfaz del nuevo maestro.

Ryan Foley
fuente