Introduction à net-snmp Dimitri FOSSIER INPG/ESISAR
Net-snmp : bref historique Ex ucd-snmp (version 4.x et précédentes) UCD : University of California at Davis SNMP Actuellement : Dev : Net-SNMP 5.1.pre3 (29/10) Stable : Net-SNMP 5.0.9 (06/09)
Net-snmp : qu’est ce que c’est ? Des outils en rapport avec SNMP : Un agent évolutif Une bibliothèque SNMP Des outils pour interroger/mettre à jour des agents SNMP Des outils pour générer/gérer les traps Un navigateur MIB : tkmib
Net-snmp : installation (1) Soit avec les packages debian apt-get install … Soit en compilant les dernières sources : ./configure make make install
Net-snmp : installation (2) Répondre aux questions : sysContact sysLocation … Installation dans /usr/local par défaut.
Net-snmp : répertoires, fichiers Par défaut dans /usr/local /usr/local/sbin/snmpd : démon snmp /usr/local/share/snmp : fichiers de configuration, eg : snmpd.conf, snmp.conf /usr/local/share/snmp/mibs : lieu de stockage des mibs
Net-snmp : les commandes snmptranslate : traduire un OID sous une forme vers une autre (Texte->Num ..) Aide au parcours de l’arbre MIB snmpget : recevoir des informations snmpgetnext : recevoir des informations dont on ne connaît pas l’index snmpwalk : plusieurs informations à la fois snmptable : afficher une table snmp. snmpset : opération d’écriture. snmptrap : envoi/réception de traps (alertes)
Net-snmp : exemples (1) snmptranslate -On .1.3.6.1.2.1.1.3.0 system.sysUpTime.0 snmpget 192.168.130.29 public system.sysUpTime.0 system.sysUpTime.0 = Timeticks: (586731977) 67 days, 21:48:39.77
Net-snmp : exemples (2) snmpgetnext 192.168.130.29 public system.sysUpTime.0 system.sysContact.0 = « ei5-ir@esisar.inpg.fr » snmptable 192.168.130.29 public sysORTable ->Table contenant des informations plus lisibles en retour par rapport à une commande snmpwalk
Net-snmp : exemples (3) snmpset 192.168.130.29 public system.sysContact.0 s « ei5-ir@esisar.inpg.fr » system.sysContact.0 = « ei5-ir@esisar.inpg.fr »
Net-snmp : exemples (4) snmpwalk 192.168.130.29 public system Interrogation routeur cisco salle TP « Ethereal »
Net-snmp : réponse interrogation du routeur system.sysDescr.0 = Cisco Internetwork Operating System Software IOS (tm) C1700 Software (C1700-Y-M), Version 12.2(8)T1, RELEASE SOFTWARE (fc2) TAC Support: http://www.cisco.com/tac Copyright (c) 1986-2002 by cisco Systems, Inc. Compiled Sat 30-Mar-02 13:54 by ccai system.sysObjectID.0 = OID: enterprises.9.1.444 system.sysUpTime.0 = Timeticks: (25822424) 2 days, 23:43:44.24 system.sysContact.0 = system.sysName.0 = berlin system.sysLocation.0 = system.sysServices.0 = 78 system.sysORLastChange.0 = Timeticks: (0) 0:00:00.00
Interroger le routeur Cisco… il faut : Rajouter les MIBS cisco sur le manager : ftp://ftp.cisco.com/pub/mibs/ /usr/local/share/mibs ou ~/.snmp/mibs export MIBS=+MY-MIB echo "mibs +MY-MIB" >> $HOME/.snmp/snmp.conf
Interroger le routeur Cisco Configurer le routeur pour pouvoir l’interroger - exemple : enable conf t snmp-server host mon_IP snmp-server enable traps snmp authentification linkdown linkup coldstart snmp-server community public RO
Net-snmp : l’interface tkmib En tcl/tk et Perl
Faire évoluer l’agent (1) Principe: Rajouter des modules pour supporter une nouvelle MIB Trois fichiers nécessaires pour implémenter le module Un fichier de définition de la MIB (pour l’application externe de gestion du réseau) Un fichier header C Un fichier source C
Faire évoluer l’agent (2) Deux solutions, soit: Ecrire les trois fichiers à la main Ecrire le fichier de définition de la MIB et utiliser l’outil « mib2c » pour générer les fichiers C.
Exercice supplémentaire Analyse d’une trame
La source 00 00 00 A3 E0 53 16 A0 24 70 C2 B7 08 45 00 10 1A 03 1E 11 72 8B C0 09 C8 02 00 20 04 A1 31 7E 18 30 27 01 00 30 06 75 62 6C 69 63 0F A4 00 40 0E 0C 2B 00 50 05 0A
La source (suite) 00 00 00 43 E0 53 16 A0 24 70 C2 B7 08 45 00 10 1A 03 1E 11 72 8B C0 09 C8 02 00 20 04 A1 31 7E 18 30 27 01 00 30 06 75 62 6C 69 63 0F A4 00 40 0E 0C 2B 00 50 05 0A
Séquence 30 27 27 = 39 octets
Séquence 30 27 27 = 39 octets Entier 02 01 : 00
Séquence 30 27 27 = 39 octets Entier 02 01 : 00 Caractère 04 06 70 75 62 6C 69 63 P U B L I C Header
Séquence 30 27 27 = 39 octets Entier 02 01 : 00 Caractère 04 06 70 75 62 6C 69 63 P U B L I C A0 A0 = 1010 0000 (Get Request) 1A 1A = 26 octets PDU
Séquence 30 27 27 = 39 octets Entier 02 01 : 00 Caractère 04 06 70 75 62 6C 69 63 P U B L I C A0 A0 = 1010 0000 (Get Request) 1A 1A = 26 octets 0F A4 Req. ID = 4004 Error status : 0 Error index : 0 PDU
Séquence 30 27 27 = 39 octets Entier 02 01 : 00 Caractère 04 06 70 75 62 6C 69 63 P U B L I C A0 A0 = 1010 0000 (Get Request) 1A 1A = 26 octets 0F A4 Req. ID = 4004 Error statut : 0 Error index : 0 0E 0E = 14 octets 0C OC = 12 octets Objet 08 2B 03 1.3. 6. 1. 2. 3. Null 05
1 – 3 – 6 – 1 – 2 – 1 – 1 – 3 1-sysDescr 2-sysObjectID 3-sysUpTime 4-sysContact 5-sysName 6-sysLocation Addr. Trans. 3 Syst 1 Interface 2 IP 4 ICMP 5 TCP 6 UDP 7 EGP 8 1 2 3 4 5 DoD 6 UIT ISO 1 2 STD ORG 3 2 1 Directory 1 Mgmt 2 Experim. 3 Private 4 Internet 1 2 3 4 MIB I 1 2