Utilisation de Net-SNMP
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 de Net-SNMP. La lecture attentive du manuel est indispensable.
Modification de l'environnement de TP
Il va falloir modifier l'environnement de travail mis en place lors de
la séance précédente. Pour cela il faut modifier le Vagrantfile
.
moniteur
Ajouter les paquets snmp
, snmp-mibs-downloader
, tcpdump
et wireshark
.
Attention snmp-mibs-downloader
est dans la partie non-free
des
dépôts Debian.
Après avoir lu le fichier /etc/snmp/snmp.conf
ainsi que les
parties intéressantes de snmp.conf(5)
et snmpcmd(1)
, modifier
/etc/snmp/snmp.conf
(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.
La commande snmpconf(1)
peut éventuellement être utile.
poste1
et poste2
Ajouter le paquet snmpd
sur les deux postes surveillés.
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éseaux disponibles sur l'agent ;
- utilise le mot
lecture
pour une communauté autorisée à utiliser les requêtesGET
,GETBULK
etGETNEXT
(communautéro
) ; - utilise le mot
ecriture
pour une communauté autorisée à utiliser les requêtesGET
,GETBULK
,GETNEXT
etSET
(communautérw
) ; - 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.
Capture de trames
Dans la suite de ce TP quand il sera nécessaire d'observer les paquets réseau il faudra :
depuis la machine étudiée, capturer les paquets circulant vers un fichier du répertoire de travail de la machine physique (celui qui contient le
Vagrantfile
) viatcpdump -Uni any -w /vagrant/paquets &
démarrer
wireshark
sur la machine physique depuis le répertoire de travail de la machine physique de façon à ce qu'il affiche les paquets capturés viatail -f -c +0 paquets | wireshark -i - -k
- faire les observations
- arrêter
tcpdump
sur la machine virtuelle puis supprimer le fichierpaquets
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 enfants 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 regardé 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
, snmpwalk
- récupération de valeurs
Depuis moniteur
, il faut utiliser la commande snmpget
pour
consulter des informations 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
Observer la forme des trames SNMP circulant lors de la consultation de la valeur de system.sysDescr
.
En utilisant la commande snmpwalk
parcourir les informations à
partir de l'objet ifXTable
.
Observer les trames lors de cette action.
Faire la même consultation en utilisant snmpbulkwalk
. Les données
sont-elles identiques ?
Observer les trames lors de cette action. Sont-elles identiques à celles observées lors de la consultation avec snmpwalk
?
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
ou snmpbulkwalk
,
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
.
Observer les trames circulant lors d'une utilisation de 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