Che cos'è SNMP?
SNMP è l'acronimo di Simple Network Management Protocol ed è un protocollo molto diffuso per il monitoraggio dei dispositivi di rete. Non è solo un protocollo di monitoraggio. Come suggerisce il nome, consente anche di gestire e configurare una rete. Può essere utilizzato per rilevare errori e generare avvisi di problemi di rete, quasi in tempo reale.
Sviluppato a metà degli anni '80, SNMP è diventato gradualmente lo standard de-facto per il monitoraggio della rete negli anni '90 e nei primi anni 2000. È ancora in uso comune grazie alla sua relativa semplicità e all'ampia gamma di metriche che possono essere raccolte per il monitoraggio. Non è privo di difetti e le tre versioni del protocollo sviluppate per risolverli non hanno avuto un successo completo.
Oggi la maggior parte dei dispositivi di rete supporta SNMP per impostazione predefinita, senza che l'amministratore di rete debba fare altro che utilizzare uno strumento di monitoraggio SNMP.
Quali sono i componenti di SNMP?
SNMP funziona con due componenti principali: un agente SNMP e un gestore SNMP. L'agente è installato sul dispositivo da monitorare e consiste in una piccola applicazione che raccoglie metriche a livello locale da inviare a una postazione remota. Il gestore SNMP è il destinatario. Dal lato del manager è possibile utilizzare una serie di comandi per recuperare le informazioni dall'agente. L'agente stesso può, se necessario, inviare informazioni sotto forma di trap SNMP, una delle caratteristiche più note del protocollo SNMP. Il funzionamento di SNMP è fondamentalmente un protocollo per raccogliere metriche e consentire a un agente remoto e a un manager di scambiarle in modo strutturato.
L'agente e il manager comunicano attraverso una delle tre versioni di SNMP. A seconda della versione, è necessario configurare impostazioni diverse. La configurazione di SNMP non è complessa, considerando la sua età. Alla domanda "che cos'è SNMP" si può rispondere principalmente spiegando che si tratta di un protocollo per il monitoraggio e la manutenzione dei dispositivi di rete attraverso l'uso di un agente e di un manager. Ma c'è di più.
Che cos'è un agente SNMP?
L'agente SNMP è il componente software responsabile della risposta alle query, dell'esecuzione delle richieste e dell'emissione di trap. Principalmente, un agente SNMP ha tre compiti. Il primo è quello di rispondere a un SNMP get dal manager, che è un tipo di interrogazione per ottenere informazioni sul dispositivo gestito. Analogamente, come secondo compito, un gestore SNMP può anche emettere una query set per gestire o configurare il dispositivo gestito o, in alternativa, a un agente SNMP, che poi trasporta la richiesta all'host su cui è presente.
Infine, c'è il segnale trap che l'agente può emettere al manager per comunicare se si è verificata una condizione di errore. Pertanto, un agente SNMP non è solo un'applicazione passiva in attesa del gestore, perché può anche inviare attivamente informazioni quando lo ritiene necessario o è configurato per farlo. Un agente SNMP è quindi il cuore del protocollo SNMP, in quanto raccoglie metriche e segnala errori al gestore SNMP.
Che cos'è un gestore SNMP?
Il manager SNMP si trova all'altro capo di una configurazione SNMP rispetto all'agente. I gestori SNMP sono generalmente installati su un NMS (Network Management Station), di cui possono esistere più istanze per rete a seconda del numero di dispositivi gestiti.
Un gestore SNMP si occupa del monitoraggio e delle relative attività di calcolo. Le risorse hardware necessarie per il suo funzionamento sono quindi maggiori rispetto a quelle di un agente. Sebbene SNMP possa essere utilizzato direttamente dalla riga di comando, oggi gli strumenti di monitoraggio con dashboard e query automatiche sono più comunemente implementati come gestori SNMP. Mentre un agente SNMP è un piccolo pezzo con funzionalità piuttosto fisse, un gestore SNMP può essere un software complesso che supporta le query SNMP, ma non si limita solo a queste.
Che cos'è un dispositivo SNMP?
Un dispositivo SNMP è dove è installato un agente SNMP. Questi dispositivi includono switch, bridge, router, server di accesso, hub, stampanti e host in generale. L'elenco è parziale, SNMP è onnipresente e facilmente installabile quasi ovunque. L'agente SNMP è spesso preinstallato dai fornitori sui dispositivi di rete.
Pertanto, qualsiasi dispositivo può diventare un dispositivo SNMP dopo la semplice installazione di un agente. SNMP è ben supportato e disponibile per tutti i principali sistemi operativi, compresi Android e iOS.
Quali sono le versioni SNMP disponibili?
SNMP è nato all'inizio degli anni '80 da un gruppo di collaboratori che ritenevano gli sforzi dell'epoca inattuabili e impraticabili. SNMP ha quindi una lunga storia, che si estende per oltre tre decenni. In questi anni sono state rilasciate diverse versioni del protocollo. La versione originale, la v1, è per lo più scomparsa da tutte le infrastrutture moderne, a meno che un dispositivo specifico non possa essere aggiornato a SNMP v2.
Il problema principale che la v1 non risolveva era la sicurezza. Essenzialmente non aveva alcuna sicurezza, lasciandola ai canali sottostanti su cui venivano inviati i messaggi SNMP.
SNMP v2, in particolare la sua variante leggermente più sicura v2c, è di gran lunga il più diffuso ancora oggi. È uscito nel 1993 e ha aggiunto nuovi comandi e un sistema di sicurezza basato sui partiti che non ha preso piede. SNMP v2c ha avuto successo introducendo uno schema di sicurezza più semplice basato sulle comunità e contatori a 64 bit (l'SNMP originale aveva solo 32 bit).
Parallelamente a SNMP v2c, è stata sviluppata la v2u, un compromesso che offriva una sicurezza migliore della v1 pur essendo meno complessa della v2. Sebbene non sia stata molto utilizzata, è stata un'importante fonte di ispirazione per la v3.
SNMP v2, e tutte le sue varianti, non sono compatibili con la v1, poiché i messaggi utilizzano un'intestazione e formati di dati di protocollo diversi.
La versione 3 è stata introdotta nei primi anni 2000 con il supporto per la crittografia e una pletora di concetti, convenzioni e terminologie diverse. Tuttavia, il protocollo di base non è stato modificato molto e molti fornitori hanno preferito rimanere sulle versioni v2 e v2c, più collaudate e meno pesanti dal punto di vista computazionale.

A cosa serve SNMP?
SNMP è ampiamente utilizzato per il monitoraggio IT. Con il monitoraggio SNMP, è possibile tenere sotto controllo parametri importanti per switch, access point e router, oltre a molti altri tipi di dispositivi su cui SNMP è spesso installato. Si tratta di apparecchi, sensori hardware e stampanti, che fanno di SNMP una soluzione completa per il monitoraggio dell'hardware.
Le capacità del protocollo SNMP vanno oltre il semplice monitoraggio. L'acronimo SNMP è Simple Network Management Protocol, quindi è possibile anche la gestione. La gestione e la configurazione a distanza dei dispositivi è uno degli usi principali dell'SNMP. Con un semplice client SNMP o uno strumento di monitoraggio, i parametri e le opzioni possono essere modificati in remoto tramite SNMP su molti dispositivi.
Come funziona SNMP?
L'impostazione del monitoraggio SNMP è di norma un compito poco impegnativo. Poiché molti dispositivi sono dotati di un agente SNMP già installato, è sufficiente attivarlo per iniziare a monitorare il dispositivo. Per attivare l'agente, è necessario configurarlo in modo che accetti le richieste attive, principalmente i comandi SNMP get e set. Tuttavia, di solito è meglio consultare prima il manuale del singolo dispositivo, poiché i fornitori hanno implementazioni diverse del protocollo.
Una volta attivati gli agenti, la soluzione di monitoraggio scelta può ora recuperare informazioni e metriche sul dispositivo tramite SNMP. Spesso ciò avviene attraverso un'estrazione completa di tutti i dati SNMP sui dispositivi gestiti, un comando SNMP walk. Le modalità e i dati estratti dipendono dall'operatore o dallo strumento di monitoraggio. Ad esempio, Checkmk utilizza la scoperta dei servizi tramite SNMP recuperando solo i primi record (OID) di un dispositivo. Sulla base di queste informazioni, vengono effettuate ulteriori interrogazioni in base alle necessità. In questo modo si evita di trasferire prima grandi quantità di dati e si accelera notevolmente la fase di individuazione dei dispositivi SNMP, che può richiedere ore su infrastrutture di grandi dimensioni.
Una volta che tutto è stato scoperto e gli agenti sono attivi, si può procedere al monitoraggio vero e proprio. I dispositivi gestiti sono pronti ad ascoltare il manager che richiede metriche. La raccolta di queste metriche avviene sul lato agente, dopodiché vengono inviate in rete per essere analizzate dal manager. Occasionalmente, un agente può inviare una trappola al manager, ma nella maggior parte dei casi è il manager a chiedere i dati agli agenti.

Che cos'è l'OID in SNMP?
OID (Object Identifier) è un meccanismo di identificazione per nominare qualsiasi tipo di oggetto o concetto. È uno standard internazionale per indirizzare qualsiasi cosa in modo molto specifico. SNMP ha adottato questo concetto, ma non l'ha creato.
Un OID SNMP è una lunga sequenza di numeri separati da punti. Ad esempio, 1.3.6.1.2.2.1.5 è un OID che identifica inequivocabilmente un oggetto in un albero logico gerarchico. Gli OID vanno letti da sinistra a destra, partendo dalla radice che può essere solo 0 o 1 o 2, a seconda dell'arco degli standard seguenti:
- 0 è per ITU-T (uno dei tre settori dell'Unione Internazionale delle Telecomunicazioni).
- 1 è per l'ISO (Organizzazione internazionale per la standardizzazione).
- 2 è per un arco congiunto ISO/ITU-T.
Entrambe le organizzazioni definiscono rispettivamente i nodi figli, i numeri successivi, e possono delegare l'autorità di assegnazione ad altri.
Nell'esempio precedente, l'1 è per l'ISO, il 3 per "l'organizzazione identificata", il 6 per il Dipartimento della Difesa americano e giù per l'albero fino all'ultima cifra che si riferisce a una "cosa" specifica, a seconda del contesto. Questa cosa è spesso una variabile che identifica una metrica specifica del dispositivo monitorato. Può essere la temperatura di un processore, ad esempio, o il tempo di attività di un host.
Alcuni sottoalberi sono generici, altri appartengono a organizzazioni o aziende specifiche e specificano il loro prodotto. Questi ultimi sono monitorati da SNMP, il che rende l'OID fondamentale per sapere cosa e dove si trova ogni dispositivo che supporta SNMP. Ogni fornitore è libero di specificare i propri sottoalberi, a seconda dei propri dispositivi e delle loro funzioni.
Queste lunghe serie di numeri sarebbero di scarsa utilità se non fosse possibile recuperare il significato di ciascun numero. A tale scopo, si utilizza un altro elemento del funzionamento di SNMP, la MIB (Management Information Base).
Che cos'è il MIB in SNMP?
Un MIB in SNMP traduce gli OID in forma leggibile, fornendo nomi, definizioni e descrizioni per i valori. Poiché ogni fornitore ha una classificazione diversa per i propri sottoalberi OID, un MIB si presenta come una tabella utilizzata per raggruppare le istanze di un oggetto tabellare.
In ogni MIB sono presenti delle righe, ognuna delle quali rappresenta una serie di informazioni o impostazioni appartenenti a un oggetto. Ad esempio, una riga può contenere il nome, il tipo e la temperatura corrente di un sensore hardware; un'altra può includere il numero di porte hardware, la velocità massima e corrente di ciascuna e la versione del firmware di uno switch. Più il dispositivo è complesso, più cifre vengono utilizzate per indicizzare tutte le sue caratteristiche, metriche e impostazioni.
Ogni fornitore mantiene e aggiorna le proprie MIB. Si tratta di dizionari leggibili dall'uomo che corrispondono agli OID specifici del dispositivo in questione. Il protocollo ha bisogno solo degli OID per funzionare, le MIB servono soprattutto a informare gli amministratori di rete su cosa si trova in ogni OID.

SNMP get
SNMP get è l'operazione più semplice del monitoraggio SNMP. Il gestore SNMP utilizza il comando get per recuperare informazioni dall'agente, specificando l'OID di ciò che deve essere recuperato. È possibile ottenere un OID per ogni comando SNMP get, recuperando una singola metrica su ogni sweep.
A seconda della versione del protocollo SNMP utilizzata, potrebbe essere necessaria anche una stringa di comunità per autenticarsi con l'agente. In genere, deve essere fornita. L'indirizzo dei dispositivi di destinazione è ovviamente necessario. L'agente si occuperà di recuperare i dati corretti all'OID desiderato.
Che cos'è la walk SNMP?
E se si volesse recuperare un gran numero di metriche tramite SNMP senza doverle specificare tutte? SNMP walk fa esattamente questo. Utilizza il comando SNMP GetNext per recuperare un intero sottoalbero partendo da un OID verso il basso. Tutte le variabili del sottoalbero al di sotto dell'OID specificato vengono interrogate e rinviate al gestore SNMP.
Se non viene specificato alcun OID, ma solo l'indirizzo di un dispositivo, verranno interrogate tutte le variabili appartenenti a quel dispositivo. Questo restituisce una grande quantità di dati e può essere un'operazione lenta.
Nel monitoraggio SNMP, questo è uno dei modi più utili per verificare lo stato di salute di un dispositivo o di una parte della rete. Una walk SNMP è un modo semplice e facile da automatizzare per ottenere una buona visione di uno o più dispositivi gestiti.
SNMP traps
Le SNMP traps sono il modo in cui gli agenti comunicano con il manager senza essere interrogati. Le SNMP traps consentono a un agente di notificare immediatamente al manager eventi significativi, senza attendere di essere interrogato.
L'agente può inviare traps generiche e specifiche per l'azienda. Quelle generici servono a segnalare eventi comuni, come un collegamento interrotto o ripristinato, la reinizializzazione del dispositivo o i guasti di autenticazione. Le traps specifiche per l'azienda dipendono dal fornitore e possono comprendere decine di traps diverse.
Qualunque sia il tipo di trap inviato, il manager lo ascolta e può intervenire, a seconda dello strumento di monitoraggio della rete implementato. Poiché le traps SNMP sono le più vicine a un sistema di notifica in tempo reale all'interno del protocollo, sono di grande utilità nel monitoraggio della rete per gli avvisi.
Che cos'è una community string in SNMP?
Le community string SNMP agiscono come password per l'autenticazione tra agenti e gestori SNMP. Una community string è una stringa alfanumerica che, notoriamente, era impostata su "public" per impostazione predefinita, ma questo non è più comune. In SNMP v1 e v2c, la stringa viene inviata in chiaro attraverso la rete e, se corrisponde, viene concesso l'accesso all'agente.
SNMP v3 ha introdotto la crittografia delle community string, che non vengono più inviate in chiaro sulla rete, evitando così lo spoofing. La crittografia deve però essere preconfigurata. La crittografia SNMP può rallentare il monitoraggio, in quanto comporta un carico maggiore per l'agente, ma anche per il manager. Pertanto, è necessario valutare le capacità dell'hardware sottostante.
Indipendentemente dalla versione del protocollo SNMP utilizzata, si consiglia vivamente di modificare la community string predefinita, poiché è ben nota agli aggressori. SNMP non è molto sicuro e, a meno che la sezione di rete non sia chiusa all'esterno, la configurazione di una community string personalizzata e l'abilitazione della crittografia forniscono solo un ambiente moderatamente sicuro per il monitoraggio.
Monitoraggio con SNMP
Il monitoraggio SNMP è meglio spiegato come una combinazione di agenti sui dispositivi gestiti e di uno o più manager che raccolgono e analizzano i dati ricevuti dagli agenti. I dati che possono essere recuperati tramite SNMP sono adatti per ottenere informazioni sullo stato dei dispositivi in rete e sono quindi ideali per il monitoraggio IT. La soluzione di monitoraggio funge da processore centrale che recupera i dati in modo mirato dagli agenti SNMP sui dispositivi monitorati, oppure funge da destinatario dei messaggi di evento.
Quali sono i vantaggi di SNMP?
Il punto più importante a favore dell'uso di SNMP è la sua capacità di recuperare facilmente informazioni da molti dispositivi della rete. La sua ampia diffusione nel settore nel corso degli anni rende l'implementazione di una soluzione di monitoraggio SNMP una scelta facile. Molti sistemi di monitoraggio della rete, come Checkmk, utilizzano SNMP per raccogliere informazioni. SNMP è "già presente" nella maggior parte delle reti, quindi utilizzarlo nel monitoraggio è spesso facile come attivare gli agenti.
SNMP offre ulteriori vantaggi rispetto ad altri protocolli di monitoraggio della rete. È in grado, ad esempio, di recuperare le metriche relative ai sensori di raffreddamento, tensione o temperatura. Queste metriche non sono comunemente disponibili in altri protocolli e richiedono un agente specifico. Anche con quest'ultimo, non è sempre facile ottenere questo tipo di metriche come con SNMP.
Il recupero delle informazioni tramite SNMP non richiede diritti di accesso di alto livello sul dispositivo. È sufficiente una stringa di comunità condivisa per avviare lo scambio di dati tra gli agenti e i manager. L'impostazione del monitoraggio tramite SNMP è quindi più semplice rispetto ad altre soluzioni.
Quali problemi si verificano con SNMP?
Il monitoraggio SNMP non è esente da problemi. Il monitoraggio dei dispositivi che inviano solo trappole SNMP può causare problemi, in quanto queste viaggiano come pacchetti UDP, che possono andare persi. Di conseguenza, un problema che si è verificato può passare inosservato.
Anche quando si utilizza solo il polling SNMP per il monitoraggio, non è un sistema infallibile. Gli amministratori di rete possono raccontare molte storie infernali, causate da un'implementazione errata o parziale del protocollo da parte dei produttori dei dispositivi. Il risultato è che l'agente fornisce dati errati o difettosi, oppure che la richiesta del gestore si interrompe. Per risolvere questi problemi di implementazione, gli amministratori devono spesso effettuare una messa a punto caso per caso. Una soluzione consiste nell'utilizzare uno strumento di monitoraggio che sa già quali valori sono errati nella maggior parte dei casi e può quindi ignorarli automaticamente, come nel caso di Checkmk.
Non tutti i tipi di informazioni possono essere forniti tramite SNMP. Ad esempio, le versioni del sistema operativo o gli elenchi di applicazioni sui server non sono forniti da SNMP, o lo sono solo in misura limitata. A questo punto, per raccogliere questi dati sono necessari più agenti, non solo quelli SNMP.
La risoluzione dei problemi con SNMP è raramente un processo rapido. L'esecuzione di molte richieste di walk SNMP in un ambiente con numerosi host finisce spesso per richiedere ore o per andare in tilt. Il tempo di elaborazione di alcune richieste SNMP non è dei più leggeri e rallenta notevolmente il monitoraggio della rete con questo protocollo. Un motore SNMP integrato nello strumento di monitoraggio, come quello presente in Checkmk Enterprise Edition, può ridurre il consumo di CPU per queste richieste fino alla metà.
Alcuni di questi problemi possono sembrare comuni a molte altre soluzioni di monitoraggio. Tuttavia, forse sono più gravi in SNMP, tanto che alcune aziende e amministratori lo considerano un male necessario. In effetti è stato deprecato da grandi aziende del settore IT come Microsoft e Google, e il suo futuro potrebbe non essere così roseo come qualche anno fa. Per il momento, però, in assenza di un'alternativa credibile che lo sostituisca nel prossimo futuro, SNMP rimane una parte importante del monitoraggio della rete.
FAQ
SNMP utilizza due porte diverse, UDP 161 e 162. La prima è quella in cui gli agenti ascoltano le richieste in arrivo dai gestori SNMP, mentre la seconda è la porta di ingresso. La prima è quella su cui gli agenti ascoltano le richieste in arrivo dai gestori SNMP, la seconda è la porta su cui il gestore si aspetta di ricevere le trappole SNMP. Le porte di origine in entrambi i casi possono essere qualsiasi.
Il monitoraggio agentless è un concetto di monitoraggio IT in cui non c'è un servizio o un software specifico in esecuzione sul dispositivo di destinazione per monitorarlo. Di solito si tratta dell'agente. Nel monitoraggio agentless, il dispositivo di gestione remota esegue il polling per ottenere informazioni sui vari dispositivi di una rete. Questi espongono le loro metriche senza utilizzare alcun agente, ma con protocolli specifici.
SNMP, pur avendo agenti effettivi installati sui dispositivi gestiti, è considerato in pratica un protocollo di monitoraggio agentless, poiché gli agenti sono di solito già impostati per il monitoraggio. Ciò elimina la necessità di installare e configurare l'agente, come in una vera soluzione agentless.
Il monitoraggio basato su agenti si basa sulla presenza di agenti sui dispositivi da monitorare. Questi piccoli servizi si occupano di raccogliere le metriche nel corso del tempo e di fornire un resoconto al manager. Questi agenti tolgono parte del carico ai manager, accelerando il monitoraggio in alcuni casi.
A differenza di una soluzione agentless, gli agenti devono essere installati o preinstallati su ogni dispositivo da monitorare e possibilmente anche configurati prima di essere utili.
I comandi SNMP comunemente utilizzati dagli amministratori di rete sono pochi. I più utili per il monitoraggio sono:
- SNMP get, per richiedere uno o più valori da un albero MIB.
- SNMP getnext, per richiedere il valore OID successivo in un albero MIB.
- SNMP walk, è una richiesta effettuata sul nodo radice di un sottoalbero MIB per recuperare automaticamente tutti i nodi del sottoalbero attraverso una serie di richieste get e getnext.
- SNMP bulk walk, è una richiesta di grandi dimensioni, più grande di una walk, per recuperare pezzi di alberi OID su un'entità di rete.
- SNMP table, è una richiesta simile a walk, ma produce il risultato in un formato tabellare, più facile da visualizzare.
- SNMP set, è una richiesta di modifica dei valori di un dispositivo gestito.
- SNMP traps, non è una richiesta ma una notifica da parte di un agente a un manager su un evento verificatosi.