Co to jest SNMP?
SNMP (Simple Network Management Protocol) to jeden z kluczowych protokołów wykorzystywanych w zarządzaniu sieciami komputerowymi. Jest szeroko stosowany do monitorowania i zarządzania urządzeniami sieciowymi, takimi jak routery, przełączniki, serwery czy drukarki. Działa w modelu klient-serwer, gdzie:
Agent SNMP: Oprogramowanie działające na urządzeniu sieciowym, które zbiera i przechowuje informacje o stanie urządzenia.
Manager SNMP: System zarządzania, który komunikuje się z agentami w celu monitorowania i zarządzania urządzeniami.
SNMP wykorzystuje porty UDP 161 (do komunikacji z agentami) i 162 (do odbierania powiadomień, takich jak pułapki SNMP).W tym wpisie omówimy podstawy SNMP, aby pomóc Ci szybko rozpocząć pracę z tym protokołem.
Podstawowe wersje SNMP
Istnieją trzy główne wersje protokołu SNMP:
- SNMPv1: Pierwsza wersja, prosta i skuteczna, ale o ograniczonych możliwościach bezpieczeństwa.
- SNMPv2c: Ulepszona wersja SNMPv1, oferująca większą funkcjonalność, ale nadal z ograniczonymi mechanizmami bezpieczeństwa.
- SNMPv3: Najnowsza wersja, która wprowadza zaawansowane mechanizmy uwierzytelniania i szyfrowania, co czyni ją najbardziej bezpieczną.
Kluczowe pojęcia w SNMP
Aby zrozumieć SNMP, warto znać kilka podstawowych pojęć:
MIB (Management Information Base): Hierarchiczna baza danych, która definiuje informacje zarządcze dostępne na urządzeniu. Każdy obiekt w MIB ma unikalny identyfikator OID (Object Identifier).
OID (Object Identifier): Unikalny identyfikator obiektu w MIB, np. liczba bajtów przesłanych przez interfejs sieciowy.
Get/Set/Trap: Operacje SNMP:
- Get: Pobiera wartość określonego OID.
- Set: Ustawia wartość określonego OID.
- Trap: Powiadomienie wysyłane przez agenta do managera o ważnych zdarzeniach.
Co można monitorować za pomocą SNMP?
SNMP pozwala monitorować szeroką gamę parametrów urządzeń sieciowych i systemów. Oto przykłady:
- Stan urządzeń sieciowych:
- Status interfejsów sieciowych (aktywny/nieaktywny).
- Liczba przesłanych i odebranych pakietów.
- Poziom użycia pasma sieciowego.
- Parametry systemowe:
- Obciążenie procesora (CPU).
- Zużycie pamięci RAM.
- Dostępna przestrzeń dyskowa.
- Uruchomione procesy i usługi:
- Monitorowanie kluczowych procesów.
- Status ważnych usług, takich jak serwery WWW czy bazy danych.
- Zdarzenia i alarmy:
- Wykrywanie błędów w sieci (np. uszkodzone pakiety).
- Powiadomienia o problemach z zasilaniem lub temperaturą urządzeń.
- Uruchomienie i konfiguracja urządzeń:
- Informacje o wersji oprogramowania urządzenia.
- Konfiguracja adresów IP i parametrów sieciowych.
Przykłady użycia SNMP
- Monitorowanie routera:
- Sprawdzanie, czy wszystkie interfejsy są aktywne.
- Monitorowanie wykorzystania pasma na każdym porcie.
- Zarządzanie serwerem:
- Obserwowanie obciążenia CPU i pamięci.
- Śledzenie zużycia przestrzeni na dyskach twardych.
- Kontrola drukarek sieciowych:
- Sprawdzanie poziomu tuszu i papieru.
- Wykrywanie błędów, takich jak zacięcia papieru.
- Monitorowanie systemów chłodzenia:
- Śledzenie temperatury w centrach danych.
- Powiadomienia o awariach wentylatorów lub klimatyzacji.
- Analiza bezpieczeństwa:
- Wykrywanie nieautoryzowanych zmian w konfiguracji urządzeń.
- Monitorowanie podejrzanych wzorców ruchu sieciowego
Narzędzia i systemy monitorowania SNMP
SNMP jest obsługiwane przez wiele narzędzi do monitorowania sieci. Oto kilka z nich:
- Nagios: Popularne narzędzie open-source do monitorowania sieci, systemów i aplikacji.
- Zabbix: Wszechstronny system monitorowania z bogatym wsparciem dla SNMP.
- PRTG Network Monitor: Komercyjne narzędzie z intuicyjnym interfejsem użytkownika.
- SolarWinds Network Performance Monitor: Zaawansowane narzędzie do monitorowania sieci z obsługą SNMP.
- SNMP Agent Simulator: Umożliwia opracowywanie, testowanie i szkolenie aplikacji do zarządzania SNMP bez konieczności zakupu i utrzymywania drogich urządzeń sprzętowych.
- LibreNMS: Open-source’owy system monitorowania z automatycznym wykrywaniem urządzeń.
Każde z tych narzędzi oferuje inne funkcje i poziomy zaawansowania, dzięki czemu możesz wybrać to, które najlepiej odpowiada Twoim potrzebom.
Symulator SNMP – Narzędzie do testowania i nauki
Symulatory SNMP, takie jak iReasoning SNMP Agent Simulator, stanowią doskonałe narzędzie dla programistów, administratorów sieci i osób uczących się protokołu SNMP. Dzięki tym aplikacjom można symulować różne wersje agentów SNMP (v1, v2c, v3) na komputerze, bez potrzeby posiadania fizycznych urządzeń sieciowych.
Symulatory pozwalają na tworzenie, testowanie i trenowanie aplikacji zarządzających siecią w kontrolowanym środowisku. Użytkownicy mogą testować różne scenariusze zarządzania siecią, diagnozować problemy i weryfikować poprawność konfiguracji, co jest szczególnie przydatne w procesie rozwoju oprogramowania lub szkoleniach. Dzięki opartej na Javie technologii, symulatory te działają na różnych platformach, takich jak Windows, Linux czy macOS, co czyni je wszechstronnym narzędziem w wielu środowiskach.
Główne funkcje:
- Wsparcie dla IPv6: Umożliwia pracę w nowoczesnych środowiskach sieciowych
- Łatwość obsługi: Intuicyjny interfejs użytkownika ułatwia konfigurację i zarządzanie symulowanymi agentami.
- Rejestrowanie i odtwarzanie urządzeń SNMP: Możliwość rejestrowania wartości węzłów MIB agenta SNMP do pliku XML za pomocą interfejsu graficznego lub wiersza poleceń. Zarejestrowane pliki danych można modyfikować w celu symulacji różnych konfiguracji.
- Obsługa wielu agentów w jednej maszynie wirtualnej Javy (JVM): Umożliwia uruchamianie wielu symulowanych agentów jednocześnie.
- Pełne wsparcie dla SNMPv1, v2c i v3 (USM i VACM): Kompletna obsługa różnych wersji protokołu SNMP.
- Wsparcie dla języka skryptowego BeanShell: Pozwala na modelowanie zachowań agentów SNMP w czasie rzeczywistym.
- Symulacja pułapek (trap) i błędów: Umożliwia testowanie reakcji na różne zdarzenia i błędy.
Konfiguracja SNMP na Ubuntu – Instrukcja krok po kroku:
Zainstaluj wymagane pakiety:
sudo apt update && sudo apt upgrade
sudo apt install snmp snmpd snmp-mibs-downloader
Skonfiguruj plik /etc/snmp/snmpd.conf:
Otwórz plik konfiguracyjny w edytorze tekstu, np.:
sudo nano /etc/snmp/snmpd.conf
Zakomentuj poniższe wartości, znakiem „#”:
#sysServices 72
#master agentx

Następnie zakomentuj „agentaddress” i dodaj nową wartość portu 161:
#agentaddress 127.0.0.1,[::1]
#agentaddress udp:161,udp6:[::1]:161

Kolejne wartości zakomentuj i dodaj „rocommunity”:
#view systemonly included .1.3.6.1.2.1.1
#view systemonly included .1.3.6.1.2.1.25.1
#rocommunity public default -V systemonly
#rocommunity6 public default -V systemonly
rocommunity public


# rouser: a SNMPv3 read-only access username
#rouser authPrivUser authpriv -V systemonly

Zapisz plik i uruchom usługę.
sudo systemctl restart snmpd
sudo systemctl enable snmpd
Upewnij się, że port 161 UDP jest otwarty na zaporze:
sudo ufw allow 161/udp
sudo ufw reload
Przejdź do Zabbix, następnie „monitoring” / „Hosts”:

W prawym górnym rogu kliknij na „Create host”:

Następnie nadaj nazwę hosta („Host name”) i w „Template”, wybierz „Linux by SNMP”:

W „Host groups”, wybierz „Linux servers”, kliknij „Add”, następnie „SNMP”:

Sprawdź adres IP maszyny Ubuntu, komendą „ip a”:

Zmień adres IP z 127.0.0.1 na swój adres IP, skopiuj wartość „{$SNMP_COMMUNITY}”:

W tym samym oknie przejdź do zakładki „Macros”, w „Macro” wklej wartość „{$SNMP_COMMUNITY}” i wpisz wartość „public” w „Value”:

Kliknij „add”, po chwili na liście hostów pojawi się „linux-SNMP”, poczekaj chwilę i odświeżaj stronę Zabbixa aż SNMP zmieni kolor na zielony:

Działa! Komunikacja została nawiązana, możesz kliknąć w „Graphs” i sprawdzać napływające dane:

Monitorowanie pfSence dzięki SNMP za pomocą Zabbix – Instrukcja krok po kroku:
W panelu konfiguracyjnym pfSence, przechodzimy do „Services / SNMP”:

Włączamy SNMP Deamon oraz SNMP Trap. Podajemy adres IP Zabbixa, ustawiamy w SNMP Trap String „public”:

Schodzimy na sam dół, wybieramy „Bind Interfaces” / „All” i zapisujemy, „Save”:

Przechodzimy do panelu głównego Zabbix, przechodzimy do „Monitoring” / „Hosts” i w prawym górnym rogu, klikamy „Create host”:


W „Host name”, wpisujemy nazwę nowego hosta, ustawiłem „pfsence” (możesz oczywiście, wpisać coś innego). „Template” wpisz „pfs”, wyświetli się szablon tak jak na screenie, zaznacz go. W „Host groups”, wpisz np. firewall i naciśnij „Enter” (ustawisz tym sposobem nową grupę). Kolejnym krokiem jest ustawienie „Interfaces”. Klikasz „Add”:

Po kliknięciu „Add”, wybiesz „SNMP”:

Podajesz IP address pfSence, w sekcji „SNMP community”, wpisz „public” (ta nazwa musi się zgadzać z ustawioną wcześniej nazwą SNMP Deamon oraz SNMP Trap). Po ustawieniu Hosta, klikamy „Add”:

Na liście Hostów pojawia się utworzony profil „pfsence”.

Po dłuższej chwili odśwież przeglądarkę, czekaj aż ikona „SNMP”, zmieni kolor na zielony:

Zaczekaj kilka minut, by dane miały czas na propagację. Po upływie tego czasu, możesz podejrzeć napływające dane w „Graps”:

Po kliknięciu, naszym oczom, ukazują się napływające dane. Komunikacja z pfSence po SNMP została nawiązana poprawna w Zabbix:

Zapraszam na nasze kursy Zabbix i SNMP:
https://grupadm.pl/product/snmp-expert
https://grupadm.pl/product/architekt-zabbix

