Erreur d'accès Juniper SNMPv3 imprévisible

8

Nous rencontrons des problèmes lorsque SNMPv3 cesse d'accepter les demandes SNMP sur nos commutateurs Juniper EX. Dans ce qui semble être des événements aléatoires, les nœuds Juniper refusent les informations d'authentification SNMP.

Voici ce que nous finissons par obtenir:

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:~$

Nos appareils fonctionnaient, mais arrêtez-vous. Les noms d'utilisateur sont corrects et chargés dans le système.

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

Après avoir traité de cela pendant un certain temps, nous avons finalement décidé d'enquêter. Je vois cette entrée avant que le système cesse d'accepter les demandes:

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.

J'ai constaté que la simple saisie à nouveau du nom d'utilisateur / des mots de passe restaure l'accès à l'appareil.

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

Après une commitopération, nous pouvons y accéder à nouveau.

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:~$

Ce problème se produit sur une tonne d'appareils différents. Les modèles incluent l'EX2200-c, l'EX3300, l'EX4200 et l'EX4550 sur la version 12.3.

Pourquoi cela se produit-il et comment puis-je faire en sorte que cela cesse?

Ryan Foley
la source

Réponses:

6

Ce problème est le résultat de la modification de l'ID du moteur. Si vous rencontrez ce message syslog, c'est la définition exacte du problème.

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.

Malheureusement, j'ai constaté que cela se produit sans raison apparente. La validation effectuée avant la modification de cet ID de moteur était un simple syslog-hostajout qui a entraîné la modification de l'ID de moteur. Juniper couvre l' engine-idoption dans leur TechLibrary , qui dit que l'option par défaut est d'utiliser l'adresse IP par défaut de l'appareil.

Après avoir beaucoup battu la tête contre le bureau, nous avons constaté que simplement en définir un avec un paramètre explicite est la meilleure option, car il reste cohérent.

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

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

Juniper a également une note pour changer l'ID du moteur qui doit être fait avant que cela fonctionne. Cela signifie effectivement qu'une fois que vous avez validé un nouvel identifiant de moteur, vous devez également valider un autre nom d'utilisateur / mot de passe.

Remarque: les clés d'authentification et de chiffrement SNMPv3 sont générées en fonction des mots de passe associés et de l'ID du moteur. Si vous configurez ou modifiez l'ID du moteur, vous devez valider le nouvel ID du moteur avant de configurer les utilisateurs SNMPv3. Sinon, les clés générées à partir des mots de passe configurés sont basées sur l'ID de moteur précédent. Pour l'ID du moteur, nous vous recommandons d'utiliser l'adresse MAC du port de gestion.

Vous devrez engager de nouveaux utilisateurs dans la configuration après le changement de moteur. Ceci est important car les utilisateurs SNMPv3 ne fonctionneront pas si vous ne le faites pas malgré ce qui est réellement dit sous show snmp v3 users. Assurez-vous donc de définir de nouveaux utilisateurs.

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

Avant le changement:

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

Après le changement:

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

Cela fournit une configuration SNMP plus fiable qui n'est pas sujette aux changements d'ID de moteur et à l'élimination de l'accès. Juniper vous recommande d'utiliser l' use-mac-addressoption plutôt que le local engine-id-suffix. Cette option est susceptible de poser des problèmes dans une configuration de châssis virtuel. Si un moteur de routage de sauvegarde prend le relais, l'ID de moteur SNMP passera à l' me0interface du nouveau maître.

Ryan Foley
la source