Ceci est une ancienne révision du document !
Table des matières
snmp
Liens
En relation avec nagios:
Introduc
Client/Serveur
smnpd
est un daemon qui attend les requetes des clients.
Les logiciels clients sont snmpget
, snmpgetnext
, snmpwalk
, etc…
Le daemon smnpd
peut dés l'installation répondre a quelques requetes… (encore faut-il le configurer pour autoriser les clients)
OID & MIB
OID
Object IDentifier
Version numéric d'un MIB (?)
Exemple: .1.3.6.1.2.1.1.3.0
Management Information Base
Version ascii d'un OID (?)
Exemple: SNMPv2-MIB::sysUpTime.0
Arbre
Les objects sont disposés dans un “arbre”, qu'on parcours en commencant par “.”…
Voir la commande snmptranslate
qui permet de convertir un OID en MIB et inversement.
installation
snmpd
# aptitude install snmpd
Le “daemon” ecoute en udp
sur le port 161
.
Il attend les requetes des clients.
Les clients sont autorisés selon le fichier /etc/snmp/snmpd.conf
.
Dans les extraits suivants, j'ai coupé les parties présentes par défaut, du genre:
# sec.name source community com2sec paranoid default public #com2sec readonly default public #com2sec readwrite default private ...
community
Dans le fichier snmpd.conf
:
#### # First, map the community name (COMMUNITY) into a security name # (local and mynetwork, depending on where the request is coming # from):
# sec.name source community # TJ ----------- com2sec admin localhost code_secret1 com2sec admin 10.20.0.20 code_secret2 com2sec localnet 10.20.0.0/16 code_secret3 # --------------
com2sec | déclare la relation entre une communauté et un “security name” |
sec.name | “security name” (groupe) associé a la communauté |
source | d'où qui vient |
community | le nom de la communauté |
Dans les faits, ce qui est nommé “community” (communauté), est un pseudo mot de passe.
les mots de passe circulent en clair ! (sauf depuis la “v3”, si bien configuré, mais pas trés populaire il me semble…) |
group
Dans snmpd.conf
:
#### # Second, map the security names into group names: # sec.model sec.name # TJ ----------- group RWmaison v1 admin group RWmaison v2c admin group ROmaison v1 localnet group ROmaison v2c localnet # --------------
Là, on créé des groupes…
group | This directive defines the mapping from securitymodel/securityname to group. |
name | le nom du groupe |
sec.model | “security model” … la version du protocole plutot… non ? |
sec.name | le “security name” qui nous renvoit vers la “commununity” |
“v1” | c'est bien, ca passe partout. y a juste des soucis avec les compteurs 64 bits |
“v2c” | (version 2 en fait, mais bon), c'est mieux, sans les problèmes de la “v1” |
“v3” | c'est encore mieux, mot de passe crypté, etc…: trop compliqué pour moi |
Comme vous le voyez, on peut avoir plusieurs versions ! super.
view
#### # Third, create a view for us to let the groups have rights to: # incl/excl subtree mask view all included .1 80 view system included .iso.org.dod.internet.mgmt.mib-2.system
Là, j'ai rien touché.
Ca semble definir des “groupes” de qu'on a le droit de voir. (et lire ou ecrire)
access
#### # Finally, grant the 2 groups access to the 1 view with different # write permissions: # context sec.model sec.level match read write notif # TJ --------- access ROmaison "" any noauth exact all none none access RWmaison "" any noauth exact all all none # ------------
context | voir man |
sec.model | “v1” “v2c” “any” etc… selon les “protocoles” accepté |
sec.level | “noauth” ⇒ sans authentication (le “community name” suffit) |
match | voir man |
read | autorise la lecture ou pas |
write | autorise l'ecriture ou pas |
notif | voir man |
Conclusion
Au final le “snmpd.conf” permet l'accés au client.
# /etc/init.d/snmpd restart
Clients
Installer
# aptitude update # aptitude install snmp
(Et libsnmp-session-perl
?)
Et voila.
snmptranslate
Transformer un OID en MIB :
$ snmptranslate .1.3.6.1.2.1.1.3.0 DISMAN-EVENT-MIB::sysUpTimeInstance
Transformer un MIB en OID :
$ snmptranslate -On DISMAN-EVENT-MIB::sysUpTimeInstance .1.3.6.1.2.1.1.3.0
Transformer en ses sous-identifiers nommés:
$ snmptranslate -Of DISMAN-EVENT-MIB::sysUpTimeInstance .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance
Un MIB
est garantie etre unique (sauf rare cas isolé).
De ce fait, il doit être précis.
Par exemple:
$ snmptranslate sysUpTimeInstance No log handling enabled - turning on stderr logging sysUpTimeInstance: Unknown Object Identifier (Sub-id not found: (top) -> sysUpTimeInstance)
Ca ne fonctionne pas, sauf si on demande a la commande de faire une recherche “aléatoire” :
$ snmptranslate -IR sysUpTimeInstance DISMAN-EVENT-MIB::sysUpTimeInstance
Ou
$ snmptranslate -On -IR sysUpTimeInstance .1.3.6.1.2.1.1.3.0
Recherche par 'regex':
$ snmptranslate -Ib 'sys.*ime' SNMPv2-MIB::sysORUpTime
Oups, ce n'est pas ce qu'on voulait:
$ snmptranslate -Ib 'sysUp.*ime' SNMPv2-MIB::sysUpTime
Pour avoir la liste des “noeuds” qui corresponde a la recherche:
$ snmptranslate -TB 'sys.*ime' SNMPv2-MIB::sysORUpTime SNMPv2-MIB::sysUpTime DISMAN-EVENT-MIB::sysUpTimeInstance HOST-RESOURCES-MIB::hrSystemUptime