SNMP

Protokół do monitorowania i zarządzania urządzeniami sieciowymi, takimi jak routery, switche czy drukarki.

SNMP (Simple Network Management Protocol) to standardowy protokół do monitorowania i zarządzania urządzeniami sieciowymi — routerami, switchami, serwerami, drukarkami, UPS-ami, a nawet klimatyzacją w serwerowni. Dzięki niemu jeden system monitoringu może odpytać setki urządzeń i zapytać je o to samo: ile masz wolnej pamięci, jak obciążony jest interfejs, czy wentylator jeszcze żyje. Działa głównie po UDPport 161 do zwykłych zapytań i 162 do tzw. trapów, czyli alarmów wysyłanych z urządzenia samoczynnie.

Jak to działa

W modelu SNMP masz dwie role: agenta (oprogramowanie na monitorowanym urządzeniu) i managera (system, który odpytuje agentów). Manager wysyła GET, agent odsyła wartość. Wszystkie dane, jakie urządzenie udostępnia, są opisane w MIB (Management Information Base) — to słownik mówiący, co oznacza dana metryka. Każda pojedyncza wartość ma swój OID (Object Identifier), czyli numeryczny adres typu 1.3.6.1.2.1.1.3.0 (akurat ten zwraca uptime urządzenia).

Operacje, które warto znać: GET (pobierz jedną wartość), GETNEXT i GETBULK (przejdź po drzewie OID), SET (zmień coś na urządzeniu) oraz TRAP/INFORM (urządzenie samo krzyczy, że coś się stało). Wersje protokołu mają znaczenie: v1 i v2c uwierzytelniają się jawnym community stringiem (często domyślnie public), a dopiero v3 dodaje realne uwierzytelnianie i szyfrowanie.

Przykład z praktyki

Chcesz zobaczyć, co urządzenie w ogóle udostępnia? Z pakietu net-snmp odpalasz na przykład:

snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.2.1

To przejdzie przez całe drzewo standardowego MIB-2 i wypluje setki wartości. W realnym świecie najczęściej nie odpytujesz ręcznie — robi to za Ciebie Zabbix, LibreNMS, PRTG czy Cacti, które na podstawie SNMP rysują wykresy obciążenia łącza i wysyłają alert, zanim klient zdąży zadzwonić.

Na co uważać

  • Domyślne community stringi (public/private) to klasyk audytów — zostawione na produkcji oddają mapę całej sieci komukolwiek.
  • v1/v2c nie szyfrują niczego — community string lata po sieci czystym tekstem. Jeśli zależy Ci na bezpieczeństwie, używaj v3.
  • UDP gubi pakiety — pojedynczy nieodebrany trap nie wróci. Do krytycznych alarmów rozważ INFORM, który wymaga potwierdzenia.
  • GETBULK na ogromnym drzewie potrafi zarżnąć słaby switch — nie polluj urządzenia setkami zapytań na sekundę.

Pojęcia powiązane: MIB, OID, trap, community string, UDP, NetFlow (do analizy ruchu), syslog (do logów) oraz nowsze podejścia jak telemetria streamingowa i protokół NETCONF.