SNMP
El modelo gestor-agente, qué es una MIB y cómo se nombra cada dato con un identificador de objeto, las operaciones del protocolo y sus puertos, en qué se diferencian sus tres versiones y cómo es por dentro un mensaje.
El modelo gestor-agente
Vigilar a mano una red de doscientos equipos es imposible, y enterarse de las averías por las llamadas de los usuarios es llegar tarde. La monitorización automatiza esa vigilancia, y el estándar con el que se hace desde hace décadas es SNMP, el protocolo simple de gestión de red.
Su arquitectura es de cliente y servidor, aunque aquí las piezas tienen otro nombre: gestor y agente. El gestor es la estación central, el sistema de gestión de red, y es el único sitio desde el que se mira. El agente es el software que corre dentro de cada equipo gestionable, sea un servidor, un conmutador, un encaminador, una impresora o una cabina, y es quien conoce el estado de esa máquina y lo publica.
| Pieza | Dónde vive | Qué hace |
|---|---|---|
| Gestor | En una máquina central de la red | Pregunta a los agentes, guarda el histórico, pinta las gráficas y dispara las alarmas |
| Agente | Dentro de cada dispositivo gestionable | Responde a lo que le preguntan y avisa por su cuenta si ocurre algo grave |
| Base de datos de gestión | En el agente | Es el catálogo de datos que ese equipo puede ofrecer |
SNMP pertenece a la pila TCP/IP y viaja sobre UDP, no sobre TCP. La elección tiene sentido: la monitorización debe pesar lo mínimo y no conviene que un protocolo de vigilancia añada carga a una red que ya puede estar en apuros. A cambio, un mensaje perdido se pierde, y por eso el gestor pregunta de forma periódica en lugar de fiarlo todo a un aviso.
Para trastear a mano existe una herramienta de escritorio, el navegador de bases de datos de gestión, que se conecta a un equipo y deja recorrer todo lo que ese equipo publica. Es la forma habitual de averiguar qué se puede vigilar de una máquina antes de configurarla en el sistema de gestión.
El agente no decide nada: publica datos y avisa. La inteligencia, los umbrales y el histórico están en el gestor.
Para el examen
Gestor: consulta
Agente: responde en cada equipo vigilado
Trap: la excepción: la manda el agente sin que nadie pregunte
La MIB, la SMI y el árbol de identificadores
Para que un gestor pueda preguntar a un conmutador de un fabricante y a una impresora de otro, hace falta acordar cómo se nombra cada dato. Eso es lo que resuelven dos piezas: la estructura de información de gestión, que es la gramática, y la base de datos de gestión, que es el diccionario de cada aparato.
La estructura de información de gestión define, con la sintaxis abstracta ASN.1, cómo se describe un objeto gestionable: cómo se le pone nombre, qué forma tiene y cómo se organizan las ramas donde vive. No contiene datos, contiene las reglas para definirlos.
La base de datos de gestión, la MIB, es el conjunto de parámetros que un agente concreto sabe responder: cuántos paquetes ha pasado cada puerto, cuánta memoria queda libre, cuánto lleva encendido el equipo. Cada aparato tiene la suya, aunque casi todos comparten una parte común y general, y por eso el mismo gestor sirve para todos.
Cada parámetro se identifica con un identificador de objeto, un OID, que es una secuencia de números separados por puntos. No es un número arbitrario: es el camino desde la raíz de un árbol mundial hasta ese dato concreto, igual que una ruta de directorios localiza un fichero.
| Tramo del camino | Número | Qué agrupa |
|---|---|---|
| Organismo internacional de normalización | 1 | La raíz de la que cuelga todo |
| Organizaciones reconocidas | 3 | El siguiente escalón administrativo |
| Departamento de Defensa estadounidense | 6 | De donde nació internet |
| Internet | 1 | La rama donde vive todo lo de esta materia |
| Directorio, gestión, experimental y privada | 1 a 4 | Las cuatro ramas de internet |
| Base de datos de gestión común | 1.3.6.1.2.1 | Los datos estándar que casi todo equipo publica |
| Rama de fabricantes | 1.3.6.1.4.1 | Debajo, cada fabricante cuelga lo suyo |
La rama de fabricantes es la que explica por qué un conmutador de una marca ofrece datos que otro no tiene: bajo ella cada empresa registra su propio subárbol y publica ahí lo que solo tiene sentido en sus productos. Lo estándar cuelga de la rama de gestión y lo particular de la rama privada.
El reparto en documentos normativos es materia de examen: uno define la estructura de información de gestión, otro la primera versión de la base de datos común, otro el protocolo con sus mensajes y otro la segunda versión de la base de datos común, que es la que se usa.
| Documento | Qué define |
|---|---|
| RFC 1155 | La estructura de información de gestión: cómo se definen los objetos |
| RFC 1156 | La primera versión de la base de datos de gestión común |
| RFC 1157 | El protocolo en sí y sus unidades de datos |
| RFC 1213 | La segunda versión de la base de datos de gestión común |
La estructura de información de gestión es la gramática, la base de datos de gestión es el diccionario de un equipo y el identificador de objeto es la palabra concreta que se pregunta.
Para el examen
MIB: la base de datos de lo que se puede consultar
SMI: las reglas para escribirla
OID: identifica cada objeto dentro de un árbol jerárquico
Las operaciones del protocolo y sus puertos
Todo lo que sabe hacer SNMP cabe en cinco operaciones, y se entienden mejor separadas por quién las inicia. Las que empiezan en el gestor viajan al puerto 161 de UDP del agente; el aviso que sale del agente por su cuenta viaja al puerto 162 de UDP del gestor.
| Operación | Dirección | Para qué sirve |
|---|---|---|
| Get | Gestor al agente | Pedir el valor de un objeto concreto |
| GetNext | Gestor al agente | Pedir el objeto siguiente en el árbol, sin saber de antemano cómo se llama |
| Set | Gestor al agente | Modificar un valor, es decir, configurar el equipo |
| Response | Agente al gestor | La respuesta a cualquiera de las anteriores |
| Trap | Agente al gestor | El aviso espontáneo: algo ha ocurrido y no se espera a que pregunten |
La pareja de petición y respuesta va siempre de la mano: el gestor pregunta y el agente contesta. La operación de siguiente es la que permite recorrer un árbol que no se conoce, porque devuelve el objeto que viene a continuación del indicado, y encadenándola se recorre la tabla entera.
El aviso espontáneo es lo que hace que la monitorización sea inmediata en lugar de depender del intervalo de sondeo. Si un servicio se reinicia o una fuente de alimentación falla, el agente lo comunica en ese momento. Como va sobre UDP y sin confirmación, un aviso puede perderse: por eso un buen sistema de gestión combina los avisos con un sondeo periódico y no confía solo en ellos.
161 es el puerto del agente y recibe las preguntas; 162 es el puerto del gestor y recibe los avisos. Confundir los dos sentidos es el fallo clásico.
Para el examen
Puerto de consulta: 161
Puerto de las traps: 162
Consultar a mano: snmpget y snmpwalk
Antes de dar de alta un equipo en el sistema de gestión, el administrador comprueba a mano que el agente responde y averigua qué publica. Para eso hay dos herramientas de línea de comandos que se corresponden con las dos operaciones de lectura.
| Herramienta | Qué hace | Cuándo se usa |
|---|---|---|
| snmpget | Una consulta simple: pide el valor de un identificador concreto | Cuando ya se sabe exactamente qué dato se quiere |
| snmpwalk | Parte de un identificador y va pidiendo el siguiente una y otra vez | Cuando se quiere descubrir todo lo que cuelga de una rama |
El recorrido de la segunda se apoya en la operación de siguiente: con lo que le devuelve cada respuesta pregunta por el elemento posterior, y así avanza por la tabla como quien recorre un árbol en profundidad. Es la forma de averiguar el nombre exacto de un dato cuando no se conoce el catálogo del fabricante.
# ¿cuánto lleva encendido el servidor de la plataforma?
snmpget -v2c -c lectura 10.20.0.15 1.3.6.1.2.1.1.3.0
# ¿qué interfaces tiene y cómo se llaman? recorrido de la rama
snmpwalk -v2c -c lectura 10.20.0.15 1.3.6.1.2.1.2.2.1.2Una consulta simple para un dato que ya se conoce, un recorrido para explorar una rama entera. Van de la mano: se explora una vez y después se consulta lo que interesa.
Para el examen
snmpget: pide UN objeto concreto
snmpwalk: recorre toda una rama del árbol
Si no se sabe el OID exacto: snmpwalk
Las tres versiones y en qué se diferencian
SNMP ha pasado por tres versiones y en un examen se distinguen por dos cosas: qué operaciones añade cada una y cómo protege el acceso.
La primera versión es la original: define la estructura de información de gestión, el árbol de objetos y las cinco operaciones básicas. Su control de acceso es la cadena de comunidad, una especie de contraseña compartida entre gestor y agente que viaja sin protección alguna dentro de cada mensaje.
La segunda versión, la basada en comunidad, mantiene ese mismo control de acceso y añade operaciones que faltaban.
| Añadido de la versión 2c | Qué aporta |
|---|---|
| GetBulk | Trae de golpe todo lo que cuelga de una rama, sin ir pidiendo uno a uno el siguiente |
| Trap propio de la versión | El aviso espontáneo con el formato nuevo |
| Inform | Comunicación entre gestores, para que uno avise a otro |
| Report | Previsto en la norma, sin uso asentado |
La tercera versión no añade operaciones: añade seguridad, que era el gran agujero de las anteriores. Incorpora un modelo basado en usuario, con credenciales por usuario en lugar de una cadena compartida, autenticación que garantiza el origen y la integridad del mensaje, y cifrado del contenido para que no viaje legible. Encima de eso hay un control de acceso por vistas, que permite decidir a qué parte del árbol llega cada usuario.
Aquí hay que corregir un error que circula en muchos apuntes: la seguridad de la tercera versión no tiene nada que ver con SSH, ni es una novedad de última hora. Es norma desde finales de los años noventa y es la versión exigible en cualquier red donde el protocolo salga del segmento de administración, porque con la cadena de comunidad basta con capturar un paquete para tenerla.
La segunda versión aporta operaciones, sobre todo la lectura masiva. La tercera aporta seguridad: autenticación y cifrado por usuario.
Para el examen
v1 y v2c: solo community, y en claro
v3: la que trae seguridad real: autenticación y cifrado por usuario
Cómo es por dentro un mensaje SNMP
Un mensaje SNMP es un paquete de red normal: cabecera IP, cabecera UDP y, dentro, el mensaje propiamente dicho. Ese mensaje empieza con dos campos comunes a todos: la versión del protocolo que se está hablando y la cadena de comunidad que da acceso. Detrás va la unidad de datos, que es la parte que cambia según la operación.
La unidad de datos más habitual, la de las consultas y sus respuestas, lleva cuatro campos. El tipo, que indica de qué operación se trata. Un identificador de petición, que sirve para emparejar cada respuesta con la pregunta que la provocó, algo imprescindible cuando se viaja sobre un transporte sin conexión. Dos campos de error, que en las preguntas van a cero y en la respuesta indican si algo falló y en qué punto. Y las asociaciones de variables.
Las asociaciones de variables son el contenido útil del mensaje: una lista de parejas formadas por un identificador de objeto y su valor. En una petición los valores van vacíos, porque son justo lo que se pregunta; en la respuesta vienen rellenos. Poder mandar varias parejas en un solo mensaje es lo que permite pedir diez datos de un equipo sin diez viajes.
| Unidad de datos | Campos propios |
|---|---|
| Consulta y consulta del siguiente | Tipo, identificador de petición, dos campos de error a cero y las asociaciones de variables |
| Respuesta | Los mismos, pero con estado de error e índice del error ya rellenos |
| Modificación | Igual que la consulta, con los valores que se quieren escribir |
| Lectura masiva | Sustituye los campos de error por dos parámetros: cuántas variables se piden una sola vez y cuántas repeticiones se quieren de las demás |
| Aviso de la versión 1 | Formato propio: empresa que lo emite, dirección del agente, tipo genérico, tipo específico, marca de tiempo y variables |
| Aviso de la versión 2c | Abandona ese formato especial y usa la misma estructura que las demás unidades |
La cadena de comunidad viaja en claro dentro de cada mensaje de las versiones 1 y 2c. Quien capture un solo paquete la tiene: ese es el motivo de ser de la versión 3.
Para el examen
Qué lleva el mensaje: versión, comunidad o datos de usuario, y la unidad de datos
Qué lleva la unidad de datos: el identificador de petición y la lista de variables