Utilisation de Net-SNMP
Table des matières
L'objectif de ce TP est de comprendre le fonctionnement du protocole SNMP et ses différentes opérations possibles. Pour cela nous utiliserons les commandes Net-SNMP. La lecture attentive du manuel est indispensable.
Mise en place
Moniteur
Installation
Sur la machine moniteur
, installer les paquets snmp
,
snmp-mibs-downloader
et wireshark
.
Attention snmp-mibs-downloader
est dans la partie non-free
des
dépôts Debian
Configuration
Après avoir lu snmp.conf(5)
, snmpcmd(1)
ainsi que le fichier
/etc/snmp/snmp.conf
modifier ce dernier (qui permet de spécifier
des options par défaut pour toutes les commandes snmpXXX
) pour
(ré)activer le chargement automatique des MIBS qui ont été
téléchargées.
Postes
Installation
Sur poste1
et poste2
, installer le paquet snmpd
.
Configuration
Après voir lu snmpd.conf(5)
ainsi que le fichier
/etc/snmp/snmpd.conf
, sur poste1
et poste2
, configurer
l'agent SNMPD de façon à ce qu'il :
- écoute sur toutes les interfaces réseau disponibles ;
- utilise le mot
lecture
pour une communauté autorisée à utiliser les requêtesGET
etGETNEXT
; - utilise le mot
ecriture
pour une communauté autorisée à utiliser les requêtesGET
,GETNEXT
etSET
; - réponde uniquement pour les OID de la branche de supervision (sous-arbre sous
1.3.6.1.2
) ; - ne réponde qu'aux requêtes provenant du moniteur.
Lecture des fichiers MIBs
Sur moniteur
, les MIBs sont disponibles dans des fichiers sous le
répertoire /usr/share/snmp/mibs
.
Définitions
Rechercher dans les fichiers des MIBs les définitions des objets suivants et trouver pour chacun son identifiant, s'il a des fils et son type :
ipForwarding
sysName
icmp
Version de SMI
Déterminer dans quelle version de SMI ces MIB sont écrites. Situer
ces objets dans l'arborescence à partir du noeud mib-2
.
Utilisation des commandes de net-snmp
snmptranslate
- conversion numérique/symbolique
Utiliser la commande snmptranslate
afin d'explorer la MIB et
d'afficher les représentations symboliques (textuelles) et
numériques des objets en testant les commandes suivantes :
snmptranslate -Os .1.3.6.1.2.1.7.4
snmptranslate -IR -On icmp
snmptranslate -IR -Of icmp
snmptranslate -IR -Tp tcp
Après avoir regarder dans la documentation la signification des options utilisées, lister les états possibles d'une connexion TCP en utilisant le résultat de la dernière commande.
Comment afficher la MIB entière (à partir de .iso) avec snmptranslate
?
snmpget
- récupération de valeurs scalaires
Depuis moniteur
, vous allez utiliser la commande snmpget
pour
consulter des scalaires sur poste1
avec les arguments suivants
(en remplaçant OID
par l'OID de l'instance que vous cherchez à
obtenir) :
snmpget -v 2c -c lecture poste1 OID
Regarder dans la documentation la signification des options utilisées.
Consulter la valeur des objets suivants :
system.sysDescr
udp.udpOutDatagrams
udp.udpInDatagrams
Lancer Wireshark et faire une capture de trame pour une requête sur
system.sysDescr
. Observer la forme des requêtes et réponses SNMP.
snmpgetnext
et snmpgettable
- manipulation des éléments complexes
Trouver le nombre d'interfaces présentes sur le système en utilisant snmpget
.
Récupérer la description de chacune des interfaces
(interfaces.ifTable.ifEntry.ifDescr
). snmpwalk
peut sans doute
vous être utile.
En utilisant la commande snmpgetnext
, reconstituer le contenu de
la table des adresses (ipAddressTable
) :
- en utilisant
snmptranslate
, afficher la définition puis l'arborescence correspondant à la tableipAddressTable
; - consulter la définition des différents objets de la table ;
- représenter le tableau correspondant et le remplir à partir des
valeurs trouvées avec
snmpgetnext
.
Lancer une capture avec Wireshark et utiliser la commande
snmptable
pour récupérer le contenu de la table ipAddressTable
en SNMPv1 puis en SNMPv2. Observer les requêtes SNMP utilisées.
snmpset
- modification de scalaires
Utiliser le manuel de la commande snmpset
pour apprendre à
utiliser cette commande.
Modifier les valeurs suivantes (si la modification génère une erreur, justifier pourquoi ; sinon, vérifier que la modification a bien été réalisée) :
sysDescr
sysName