Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
snmp [Le 15/12/2011, 15:17]
127.0.0.1 modification externe
snmp [Le 02/03/2023, 14:17] (Version actuelle)
217.114.205.206 [Installation]
Ligne 1: Ligne 1:
-{{tag>maverick lucid serveur supervision}}+{{tag>​serveur supervision}}
  
 ---- ----
  
-====== SNMP ou la supervision d'​équipements réseaux ======+====== SNMP (Simple Network Management Protocol) ​ou la supervision d'​équipements réseaux ======
  
 ===== Introduction ===== ===== Introduction =====
  
-==== Qu'est ce que le SNMP ? ====+==== Qu'est-ce que le SNMP ? ====
  
-Le **SNMP** est un protocole qui permet aux administrateurs réseaux de gérer les équipements et de diagnostiquer les problèmes. Le sigle SNMP signifie //Simple Network Management Protocol// et la plupart des switchs, UPS, parefeux ​matériels, routeurs, etc. comprennent ce protocole pour les diagnostics.+Le **SNMP** est un protocole qui permet aux administrateurs réseaux de gérer les équipements et de diagnostiquer les problèmes. Le sigle SNMP signifie //Simple Network Management Protocol// et la plupart des switchs, UPS, pare-feux ​matériels, routeurs, etc. comprennent ce protocole pour les diagnostics.
  
 <note tip>​Quand on dit « la plupart », on parle du matériel que l'on retrouve en entreprise ; pas forcément le routeur fourni par votre fournisseur d'​accès Internet. Pour savoir si votre matériel est compatible avec le SNMP, veuillez consulter les spécifications techniques livrées avec l'​appareil.</​note>​ <note tip>​Quand on dit « la plupart », on parle du matériel que l'on retrouve en entreprise ; pas forcément le routeur fourni par votre fournisseur d'​accès Internet. Pour savoir si votre matériel est compatible avec le SNMP, veuillez consulter les spécifications techniques livrées avec l'​appareil.</​note>​
  
-Le protocole SNMP est un standard défini par l'IETF dans la [[http://​www.ietf.org/​rfc/​rfc1157.txt|RFC 1157]] (mai 1990). Le SNMP est souvent vu comme quelque chose de compliqué et d'​assez confus. Les API permettant d'​interagir avec le protocole englobent tellement de choses qu'au final, on ne s'y retrouve plus. Les livres et la documentation disponibles sur le sujet ont tendance à compliquer les choses et à ne pas les démystifier. C'est ce que je vais essayer de faire dans cet article.+Le protocole SNMP est un standard défini par l'IETF dans la [[https://​www.ietf.org/​rfc/​rfc1157.txt|RFC 1157]] (mai 1990). Le SNMP est souvent vu comme quelque chose de compliqué et d'​assez confus. Les API permettant d'​interagir avec le protocole englobent tellement de choses qu'au final, on ne s'y retrouve plus. Les livres et la documentation disponibles sur le sujet ont tendance à compliquer les choses et à ne pas les démystifier. C'est ce que je vais essayer de faire dans cet article.
  
 ==== Généralités et vocabulaire ==== ==== Généralités et vocabulaire ====
  
-Le protocole SNMP est relativement simple… une fois qu'on a compris. Voyons comment se compose un ensemble d'​éléments communiquant //via// SNMP.+Le protocole SNMP (Simple Network Management Protocol) ​est relativement simple… une fois qu'on a compris. Voyons comment se compose un ensemble d'​éléments communiquant //via// SNMP.
  
-Un périphérique réseau (routeur, switch, ​parefeu, ​…) fait tourner un //agent SNMP// qui est en fait un processus //dæmon// qui répond aux requêtes du réseau. L'​**agent SNMP** fournit un grand nombre d'​**identifiant d'​objets** (//Object Identifiers//​ ou **OID**). Un **OID** est une paire clé-valeur unique. L'​**agent SNMP** remplit ces valeurs et fait en sorte qu'​elles soient disponibles. Un **manager SNMP** (ou **client ​SNMP**) peut effectuer des requêtes aux agents avec ces paires clé-valeur à propos d'​informations spécifiques. Les **OID SNMP** peuvent être lus ou écrits.+Un périphérique réseau (routeur, switch, ​pare-feu…) fait tourner un //agent SNMP// qui est en fait un processus //daemon// qui répond aux requêtes du réseau. L'​**agent SNMP** fournit un grand nombre d'​**identifiant d'​objets** (//Object Identifiers//​ ou **OID**). Un **OID** est une paire clé-valeur unique. L'​**agent SNMP** remplit ces valeurs et fait en sorte qu'​elles soient disponibles. Un **manager SNMP** (ou **Serveur ​SNMP**) peut effectuer des requêtes aux agents avec ces paires clé-valeur à propos d'​informations spécifiques. Les **OID SNMP** peuvent être lus ou écrits.
  
-Notons qu'il est rare d'​écrire des informations sur un périphérique SNMP. Le SNMP est surtout utilisé par de nombreuses applications de management pour contrôler l'​état des périphériques réseaux (comme une interface graphique administrative pour les switches). Un système d'​authentification basique existe dans le SNMP ; il permet au manager d'​envoyer un //community name// (qui est en fait un mot de passe en clair) pour autoriser la lecture ou l'​écriture des OID. La plupart des périphériques utilisent le //community name// non sécurisé « public ». Les communications SNMP se font //via// les ports UDP 161 et 162.+Notons qu'il est rare d'​écrire des informations sur un périphérique SNMP. Le SNMP est surtout utilisé par de nombreuses applications de management pour contrôler l'​état des périphériques réseaux (comme une interface graphique administrative pour les switchs). Un système d'​authentification basique existe dans le SNMP ; il permet au manager d'​envoyer un //community name// (qui est en fait un mot de passe en clair) pour autoriser la lecture ou l'​écriture des OID. La plupart des périphériques utilisent le //community name// non sécurisé « public ». Les communications SNMP se font //via// les ports UDP 161 et 162.
  
  
Ligne 29: Ligne 29:
 Si vous avez déjà effectué quelques recherches sur le SNMP, vous avez sûrement été confronté aux **MIB** (//​Management Information Base//). L'​importance des MIB est très surfaite et vous allez comprendre pourquoi. Au premier coup d'​œil,​ une MIB peut paraître très complexe ; en réalité, c'est très simple. Si vous avez déjà effectué quelques recherches sur le SNMP, vous avez sûrement été confronté aux **MIB** (//​Management Information Base//). L'​importance des MIB est très surfaite et vous allez comprendre pourquoi. Au premier coup d'​œil,​ une MIB peut paraître très complexe ; en réalité, c'est très simple.
  
-Les **OID** sont numériques et globaux. Un **OID** est très similaire à une adresse IPv6 et les différents ​fabriquants ​ont différents préfixes, chaque ​fabriquant ​a sa gamme de produit (un autre préfixe) et ainsi de suite. Les OID peuvent très vite être longs et c'est compliqué pour un humain de se rappeler la signification de cet ensemble de nombres. C'est pour cela qu'une méthode a été mise au point pour traduire un OID numérique dans une forme lisible pour un humain. Cette carte de traduction est stockée dans un fichier texte appelé //​Management Information Base// ou **MIB**.+Les **OID** sont numériques et globaux. Un **OID** est très similaire à une adresse IPv6 et les différents ​fabricants ​ont différents préfixes, chaque ​fabricant ​a sa gamme de produit (un autre préfixe) et ainsi de suite. Les OID peuvent très vite être longs et c'est compliqué pour un humain de se rappeler la signification de cet ensemble de nombres. C'est pour cela qu'une méthode a été mise au point pour traduire un OID numérique dans une forme lisible pour un humain. Cette carte de traduction est stockée dans un fichier texte appelé //​Management Information Base// ou **MIB**.
  
 Vous n'avez pas besoin d'un MIB pour utiliser SNMP ou effectuer des requêtes sur des périphériques SNMP mais sans la MIB, vous n'​allez pas savoir facilement ce que signifient les données retournées par le périphérique. Dans certains cas, c'est facile comme le nom de l'​hôte,​ l'​usage des disques ou les informations d'​état des ports. Dans d'​autres cas, cela peut être plus difficile et une MIB peut être d'une grande aide. Notez qu'il est assez inhabituel pour la plupart des applications d'​écrire des requêtes uniquement numériques ; la plupart des applications permettent l'​installation de MIB complémentaires. Cette installation consiste en fait à placer les MIB à un endroit où l'​application cliente SNMP peut les trouver pour effectuer la traduction. Vous n'avez pas besoin d'un MIB pour utiliser SNMP ou effectuer des requêtes sur des périphériques SNMP mais sans la MIB, vous n'​allez pas savoir facilement ce que signifient les données retournées par le périphérique. Dans certains cas, c'est facile comme le nom de l'​hôte,​ l'​usage des disques ou les informations d'​état des ports. Dans d'​autres cas, cela peut être plus difficile et une MIB peut être d'une grande aide. Notez qu'il est assez inhabituel pour la plupart des applications d'​écrire des requêtes uniquement numériques ; la plupart des applications permettent l'​installation de MIB complémentaires. Cette installation consiste en fait à placer les MIB à un endroit où l'​application cliente SNMP peut les trouver pour effectuer la traduction.
Ligne 48: Ligne 48:
   * SNMP v3 (RFC 3411 à 3418).   * SNMP v3 (RFC 3411 à 3418).
  
-La co-existence ​des trois versions est détaillée dans la RFC 3584. +La coexistence ​des trois versions est détaillée dans la RFC 3584.
  
  
Ligne 55: Ligne 55:
 Pour installer un manager SNMP, vous pouvez utiliser //​Net-SNMP//​. L'​application Net-SNMP est un ensemble de programmes console permettant de tout faire avec le protocole SNMP. L'​avantage d'​utiliser des programmes console est que vous pouvez facilement écrire des petits scripts de vérification que vous pourrez intégrer dans [[:​Nagios]],​ par exemple. Pour installer un manager SNMP, vous pouvez utiliser //​Net-SNMP//​. L'​application Net-SNMP est un ensemble de programmes console permettant de tout faire avec le protocole SNMP. L'​avantage d'​utiliser des programmes console est que vous pouvez facilement écrire des petits scripts de vérification que vous pourrez intégrer dans [[:​Nagios]],​ par exemple.
  
-Pour installer le paquet client SNMP, [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] [[apt://snmpd]].+Pour installer le paquet client SNMP, [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] [[apt>snmpd]].
  
 +[[https://​thejoyofstick.com/​blog/​2019/​05/​28/​installing-snmp-mib-files-in-linux-ubuntu-12-04-lts/​|A partir d'​Ubuntu 12.04, il faut aussi installer les MIBs]] en [[:​tutoriel:​comment_installer_un_paquet|installant le paquet]] [[apt>​snmp-mibs-downloader]]
 +et charger les MIBs en commentant la ligne **mibs :** dans le fichier **/​etc/​snmp/​snmp.conf** :
 +<​code>​
 +grep ^mibs /​etc/​snmp/​snmp.conf -q && sudo sed -i '​s/​\(^mibs.*$\)/#​\1/'​ /​etc/​snmp/​snmp.conf
 +</​code>​
  
 ===== Configuration ===== ===== Configuration =====
 +Attention : certains paramètres sont à modifier dans le fichier ** /​etc/​default/​snmpd ** 
 +Ils ne seront pas pris en compte dans ** /​etc/​snmp/​snmpd.conf **
 ==== Paramétrage du service ==== ==== Paramétrage du service ====
  
-On sauvegarde ​le fichier de configuration :+Sauvegardez ​le fichier de configuration :
 <​code>​ <​code>​
-sudo mv /​etc/​snmp/​snmpd.conf /​etc/​snmp/​snmpd.conf.bak+sudo cp /​etc/​snmp/​snmpd.conf /​etc/​snmp/​snmpd.conf.bak
 </​code>​ </​code>​
  
-Édition du fichier de configuration du service SNMP :+[[:​tutoriel:​comment_modifier_un_fichier|Editez le fichier]] de configuration du service SNMP :
  
 <​code>​ <​code>​
Ligne 100: Ligne 106:
  
 # Alerte pour le disque dur : # Alerte pour le disque dur :
-disk / 10000+disk / 100000
  
 rocommunity ​ public # public à remplacer par sa communauté rocommunity ​ public # public à remplacer par sa communauté
Ligne 122: Ligne 128:
 </​code>​ </​code>​
  
-==== Gestion des MIBs ====+==== Gestion des MIBs avec tkmib ====
 Pour visualiser les MIBs nous allons installer [[apt://​tkmib]]. Pour le lancement il vous suffit de taper la [[:​commande_shell|commande]] : Pour visualiser les MIBs nous allons installer [[apt://​tkmib]]. Pour le lancement il vous suffit de taper la [[:​commande_shell|commande]] :
   tkmib   tkmib
Ligne 147: Ligne 153:
   mibs +DISMAN-EVENT-MIB   mibs +DISMAN-EVENT-MIB
  
 +==== Gestion des MIBs avec SNMPb ====
  
 +Voir [[https://​blog.cedrictemple.net/​257-snmpb-faire-des-requetes-snmp-avec-un-outil-graphique/​|https://​blog.cedrictemple.net/​257-snmpb-faire-des-requetes-snmp-avec-un-outil-graphique/​]]
 ===== Utilisation ===== ===== Utilisation =====
  
-Pour une utilisation de base du SNMP, vous avez besoin de 2 commandes principales : +Pour une utilisation de base du SNMP, vous avez besoin de 2 commandes principales :
   * ''​snmpwalk''​ : pour sortir des informations par lots.   * ''​snmpwalk''​ : pour sortir des informations par lots.
   * ''​snmpget''​ : pour obtenir une information sur un OID précis.   * ''​snmpget''​ : pour obtenir une information sur un OID précis.
Ligne 158: Ligne 166:
 ==== snmpwalk ==== ==== snmpwalk ====
  
-Lorsqu'​on décide de superviser un périphérique,​ il est important de connaître ce qui est disponible. Pour ce faire, il existe la commande « ''​snmpwalk''​ ». Cette commande permet de sortir sur la console toutes les informations accessibles sur le périphériques. Voici un exemple avec un switch 3com SuperStack3 :+Lorsqu'​on décide de superviser un périphérique,​ il est important de connaître ce qui est disponible. Pour ce faire, il existe la commande « ''​snmpwalk''​ ». Cette commande permet de sortir sur la console toutes les informations accessibles sur le périphérique. Voici un exemple avec un switch 3com SuperStack3 :
  
   snmpwalk -v1 -c private 192.168.0.232   snmpwalk -v1 -c private 192.168.0.232
Ligne 167: Ligne 175:
   * ''​192.168.0.232''​ : indique l'​adresse IP du périphérique.   * ''​192.168.0.232''​ : indique l'​adresse IP du périphérique.
  
-Une telle commande retourne quelque chose de similaire à ce qui suit : +Une telle commande retourne quelque chose de similaire à ce qui suit :
 <​code>​ <​code>​
 SNMPv2-MIB::​sysDescr.0 = STRING: 3Com SuperStack 3 SNMPv2-MIB::​sysDescr.0 = STRING: 3Com SuperStack 3
Ligne 190: Ligne 198:
 </​code>​ </​code>​
  
-Cette liste peut être très longue et dépend du périphérique supervisé. Vous constatez que les informations sont classées par MIB suivi du OID. +Cette liste peut être très longue et dépend du périphérique supervisé. Vous constatez que les informations sont classées par MIB suivi du OID.
  
 Dans l'​exemple ci-dessus, nous avons « ''​IF-MIB::​ifOperStatus.117 = INTEGER: down(2)''​ ». Ce qui signifie que l'OID « ''​ifOperStatus.117''​ » (qui correspond à l'​état du port 17 du switch) est repris dans la MIB « ''​IF-MIB''​ » (qui est une MIB standard). Cet OID (clé) est associé à une valeur entière (type ''​INTEGER''​) qui vaut 2 (qui indique que l'​état est ''​down''​). Dans l'​exemple ci-dessus, nous avons « ''​IF-MIB::​ifOperStatus.117 = INTEGER: down(2)''​ ». Ce qui signifie que l'OID « ''​ifOperStatus.117''​ » (qui correspond à l'​état du port 17 du switch) est repris dans la MIB « ''​IF-MIB''​ » (qui est une MIB standard). Cet OID (clé) est associé à une valeur entière (type ''​INTEGER''​) qui vaut 2 (qui indique que l'​état est ''​down''​).
Ligne 202: Ligne 210:
 ==== snmpget ==== ==== snmpget ====
  
-Si vous avez compris ​le principe de ''​snmpwalk'',​ vous comprendrez très rapidement comment fonctionne le ''​snmpget''​. L'​application ''​snmpget''​ permet d'​obtenir l'​information concernant un OID précis. Reprenons notre exemple, imaginons que nous voulons connaître uniquement l'​état du port 22 du switch, il nous suffit d'​entrer la commande suivante :+Si vous avez compris ​ ''​snmpwalk'',​ vous comprendrez très rapidement comment fonctionne le ''​snmpget''​. L'​application ''​snmpget''​ permet d'​obtenir l'​information concernant un OID précis. Reprenons notre exemple, imaginons que nous voulons connaître uniquement l'​état du port 22 du switch, il nous suffit d'​entrer la commande suivante :
  
   snmpget -v1 -c private 192.168.0.232 IF-MIB::​ifOperStatus.122   snmpget -v1 -c private 192.168.0.232 IF-MIB::​ifOperStatus.122
Ligne 215: Ligne 223:
  
  
-===== Note(s) ​=====+===== Note·s ​=====
  
 La gestion des //traps// se fait avec le serveur SNMP et fera l'​objet d'un autre article. La gestion des //traps// se fait avec le serveur SNMP et fera l'​objet d'un autre article.
Ligne 224: Ligne 232:
  
 //​Contributeurs : [[utilisateurs:​ostaquet|ostaquet]],​ [[utilisateurs:​sefran|Franc SERRES]], [[utilisateurs:​Yannis.B|Yannis BRISOT]], [[utilisateurs:​HacKurx|HacKurx]].//​ //​Contributeurs : [[utilisateurs:​ostaquet|ostaquet]],​ [[utilisateurs:​sefran|Franc SERRES]], [[utilisateurs:​Yannis.B|Yannis BRISOT]], [[utilisateurs:​HacKurx|HacKurx]].//​
 +
  • snmp.1323958656.txt.gz
  • Dernière modification: Le 19/12/2012, 15:11
  • (modification externe)