Table des matières
Le protocole
Les multiples versions
Commençons par le plus désagréable. SNMP existe au moins dans les versions 1, 2c, 2 et 3. Comme pour tout protocole, les références sont des RFC. Si vous aimez ce genre de lecture :
D'une manière générale, reportez-vous au site rfc-editor pour retrouver les RFC, avec les informations sur leur statut (expérimental, obsolète, actif…)
Comme vous le voyez, il règne la plus grande confusion dans la définition des versions 2 et 3 de SNMP.
La version 2, commencée à être définie en 1996, ne se voit réellement finalisée qu'en décembre 2002, après que la version 3 ait été définie. Ladite version 3, trop récente, n'est pas encore largement utilisée, si bien que c'est la version 1 qui se retrouve être supportée par tous, avec ses (graves) défauts, comme nous le verrons plus loin, ainsi que la v 2c assez généralement supportée. La version 3, la seule qui intègre quelques notions de sécurité, commence tout de même à être supportée sur des équipements récents (ceci est écrit en juillet 2010).
Pour que SNMP fonctionne, il n'y a pas qu'un protocole d'échange à définir. Il y a aussi une standardisation des informations que ce protocole peut transporter. C'est un protocole Internet, il doit être utilisable sur des plates-formes hétérogènes (matériel comme système d'exploitation).
C'est pour cette raison que l'on parlera de MIB (Management Information Base) et de SMI (Structure of Management Information)
Dans ce qui suit, nous nous appuierons principalement sur SNMP v1 ou v2c.
Le protocole lui-même
SNMP tire son « S » du fait qu'il s'appuie sur UDP d'une part, et qu'il ne propose qu'un nombre très restreint de commandes.
Les commandes sont les suivantes (version 1):
Commande | Action |
---|---|
get-request | Le Manager SNMP demande une information à un agent SNMP |
get-next-request | Le Manager SNMP demande l'information suivante à l'agent SNMP |
set-request | Le Manager SNMP met à jour une information sur un agent SNMP |
get-reponse | L'agent SNMP répond à un get-request ou a un set-request |
trap | L'agent SNMP envoie une alarme au Manager |
Jusque là, c'est on ne peut plus simple. L'agent utilise le port 161 et le manager, le port 162. Graphiquement, ça donne ceci :
Les commandes get-request, get-next-request et set-request sont toutes émises par le manager à destination d'un agent et attendent toutes une réponse get-response de la part de l'agent.
La commande trap est une alerte. Elle est toujours émise par l'agent à destination du manager, et n'attend pas de réponse.
Comme vous le voyez, jusque-là, c'est extrêmement simple. Rassurez-vous, ça va nettement se compliquer avec la MIB et la SMI.