SNMP Simple Network Manager Protocol es un protocolo de la capa de aplicación que facilita el intercambio de información de administración entre dispositivos de red. Permite a los administradores supervisar el funcionamiento de la red, buscar y resolver sus problemas, y planear su crecimiento.
El protocolo SNMP tiene dos formas de funcionar: polling y traps. El polling consiste en lanzar consultas remotas a demanda , y los traps son mensajes que envían los dispositivos SNMP a una dirección configurada basándose en cambios o eventos. Los polling realizan operaciones síncronas de consultas y los traps funcionan de forma asíncrona.
Se lanza un chequeo contra la dirección IP de un dispositivo, para lo cual se necesita el nombre de la comunidad SNMP configurada en ese dispositivo en concreto.
El nombre de la comunidad es una cadena alfanumérica empleada como barrera de seguridad para autorizar la operación. Además se utiliza una comunidad sólo omo lectura de los parámetros y otra para escribir o cambiar dichos parámetros.
Cuando lanzamos un chequeo SNMP contra un dispositivo se obtiene un listado con una gran cantidad de información difícil de interpretar, ya que lo que muestra son unas secuencias de números que se asignan jerárquicamente y que permite identificar objetos en la red. Dichas secuencias de números, identificador de objetos, se denominan OIDs y se corresponden con un parámetro determinado de dicho dispositivo.
Para poder interpretar los datos se usan unos ficheros MIBs, exclusivos de cada dispositivo.
Estos ficheros son suministrador por el fabricante dle dispositivo, auqnue no siempre es así . Si queremos buscar un MIB de un dispositivo concreto podemos probar en
snmpwalk –v 1 –c public 192.168.2.100
MIB es una Base de Información de Administración (Management Information Base, MIB) es una colección de información que está organizada jerárquicamente.
Si conocemos el OID podemos ejecutar la consulta indicando dicho código tras la dirección IP, por ejemplo
snmpwalk –v 1 –c public 192.168.2.100 IF-MIB::ifPhysAddress.1
Con traps no tenemos que lanzar consultas como cuando usamos polling. Con este método sólo necesitamos configurar nuestros dispositivos para enviar los trap cuando se cumplan las circunstancias especificadas, y en segundo lugar una herramienta que pueda recoger los trap SNMP recibidos.
yum install net-snmp-utils net-snmp-libs net-snmp
Ejecutaremos el comando:
# apt-get install snmp snmpd
con lo que instalaremos tanto el cliente como el servidor SNMP. A continuación debemos cambiar algunas opciones de configuración para permitir la conexión al servidor SNMP desde otras máquinas y que puedan obtener datos.
En primer lugar modificaremos la opción SNMPDOPTS del archivo /etc/default/snmpd:
# nano /etc/default/snmpd
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'
de tal forma que quede como sigue:
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'
O ejecutar el siguiente comando:
# sed -i -e "s/^\(SNMPDOPTS.*\) 127.*/\1'/" /etc/default/snmpd
El segundo y último archivo que debemos configurar es el situado en /etc/snmp/snmpd.conf. Buscaremos el siguiente bloque de texto:
# nano /etc/snmp/snmpd.conf
#### # First, map the community name (COMMUNITY) into a security name # (local and mynetwork, depending on where the request is coming # from): # sec.name source community com2sec paranoid default public #com2sec readonly default public #com2sec readwrite default private
y lo modificaremos para que quede como sigue:
#### # First, map the community name (COMMUNITY) into a security name # (local and mynetwork, depending on where the request is coming # from): # sec.name source community #com2sec paranoid default public com2sec readonly default public #com2sec readwrite default private
O simplemente ejecutar el siguiente comando:
# sed -i \ -e 's/^\(com2sec.*paranoid.*default.*public\).*/\#\1/' \ -e 's/^#\(com2sec.*readonly.*default.*public\).*/\1/' \ /etc/snmp/snmpd.conf
A continuación debemos reiniciar el servidor SNMP para que aplique los cambios:
# /etc/init.d/snmpd restart
Por último podemos comprobar que todo funciona correctamente con el siguiente comando:
# snmpwalk -v 2c -c public localhost
SNMPv2-MIB::sysDescr.0 = STRING: Linux debian 2.6.18-4-686 #1 SMP Wed May 9 23:03:12 UTC 2007 i686 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1339340) 3:43:13.40 [...] IPV6-MIB::ipv6IfAdminStatus.2 = INTEGER: up(1) IPV6-MIB::ipv6IfOperStatus.1 = INTEGER: up(1) IPV6-MIB::ipv6IfOperStatus.2 = INTEGER: up(1)
snmpwalk -v 2c -c <comunidad> <ip> system