Slajd 1/22
SNMP w praktyce – operacje, MIB i OID
Cel slajdu: Przedstawienie praktycznego wymiaru protokołu SNMP: operacji protokołowych, interpretacji drzewa MIB oraz metod automatyzacji zadań telemetrycznych.

Zastosowania operacyjne protokołu SNMP w sieciach produkcyjnych

Zrozumienie teoretycznych ram protokołu SNMP znajduje rozwinięcie w praktyce inżynierskiej: bezpośrednim odpytywaniu wskaźników, obsłudze tabel interfejsów oraz budowie skryptów diagnostycznych.

  • Zakres modułu: Praktyczne operacje PDU (GET, GETNEXT, GETBULK, SET), translacja OID, diagnostyka urządzeń Cisco, MikroTik i serwerów Linux
  • Inżynieria ruchu: Wyliczanie przepustowości portów w bitach na sekundę, radzenie sobie z problemem przepełnienia liczników (Counter Wrap)
  • Skrypty i automatyzacja: Wykorzystanie powłoki Bash oraz bibliotek języka Python do masowego odpytywania i alarmowania
  • Wizualizacja i alternatywy: Od klasycznych narzędzi MRTG/RRDtool do nowoczesnych eksporterów telemetrycznych Prometheus i gNMI
Operacja protokołowa SNMP: Zdefiniowana w specyfikacji wymiana komunikatów PDU pomiędzy menedżerem a agentem mająca na celu pobranie, modyfikację lub asynchroniczne zaraportowanie wartości obiektów MIB.
Wprowadzenie do praktyki SNMP SNMP w praktyce – operacje, MIB i OID Część 3: Operacje GET/SET/BULK, trapy, odpytywanie urządzeń, skrypty ⚡ Praktyczne PDU GETBULK, snmpwalk 🛠 Sprzęt w sieci Cisco, MikroTik, Linux 🐍 Automatyzacja Bash, Python pysnmp Warsztat inżynierski diagnostyki i telemetrii sieciowej
Slajd 2/22
Spis treści prezentacji 3
Cel slajdu: Przedstawienie struktury zagadnień modułu trzeciego obejmującego warsztat operacyjny protokołu SNMP.

Układ materiału i plan wykładu

Materiał prowadzi od podstawowych operacji pobierania pojedynczych wartości, przez odpytywanie wyspecjalizowanych urządzeń i sensorów, po programistyczną automatyzację i analizę w Wireshark.

  • Blok 1: Operacje protokołu i bazy MIB: Mechanizmy GET, GETNEXT, GETBULK, operacja SET, kody błędów oraz zarządzanie plikami MIB (snmptranslate)
  • Blok 2: Telemetria urządzeń i zasobów: Monitorowanie ruchu (IF-MIB), sprzętu MikroTik i Cisco, serwerów Linux (extend), zasilaczy UPS oraz metryk CPU/RAM/dysk
  • Blok 3: Asynchroniczność i automatyzacja: Pułapki TRAP vs INFORM, snmptrapd, skrypty Bash, biblioteka pysnmp oraz skalowalność odpytywania masowego
  • Blok 4: Narzędzia, studium przypadku i audyt: Silnik RRDtool/Cacti, studium routera brzegowego, drzewo decyzyjne awarii, Wireshark i ewolucja ku gNMI
Plan dydaktyczny modułu 3: Przejście od podstaw protokołu do zaawansowanych umiejętności diagnostycznych, analitycznych i programistycznych w środowisku produkcyjnym.
Plan zagadnień prezentacji 3 Plan warsztatowy prezentacji 3 Część I: Operacje • Get, GetNext, GetBulk • Zdalny SET i błędy • snmpwalk i flagi -O • Tablica ifTable • MikroTik RouterOS • Przełączniki L2/L3 • Drukarki i UPS-MIB • snmpd extend / MIB Część II: Skrypty • Counter Wrap i 64-bit • Skrypty w Bash • Python i pysnmp • Monitoring CPU / RAM • Dyski i sensory temp. • Tablica ARP i routing • VLAN i Wi-Fi RSSI • snmptrapd i zdarzenia Część III: Warsztat • Skalowalność NMS • Wykresy MRTG i Cacti • Studium routera BGP • Skrypt alarmowy pasma • Audyt bezpieczeństwa • RESTCONF vs gNMI • Zadania laboratoryjne • Test sprawdzający
Slajd 3/22
Podstawowe operacje odpytywania: GET, GETNEXT oraz obsługa błędów
Cel slajdu: Zrozumienie mechanizmu działania elementarnych operacji pobierania danych oraz interpretacji kodów błędów protokołu SNMP.

Sekwencyjne pobieranie zmiennych i obsługa stanów wyjątkowych

Operacje GET i GETNEXT stanowią rdzeń odpytywania w SNMPv1 i są obecne we wszystkich kolejnych wersjach standardu.

  • Operacja GET (GetRequest): Wymaga podania dokładnego, pełnego OID liścia wraz z instancją (np. sysUpTime.0); pobiera ściśle określoną zmienną
  • Operacja GETNEXT (GetNextRequest): Pobiera obiekt leżący leksykograficznie bezpośrednio za wskazanym OID; umożliwia sekwencyjne przechodzenie przez drzewo bez uprzedniej znajomości instancji
  • Odpowiedź Response-PDU: Agent odsyła pobraną wartość lub kod błędu w polach error-status oraz error-index
  • Kody błędów SNMP: noError (0) – sukces; noSuchName (2) w v1 lub noSuchObject / noSuchInstance w v2c/v3; genErr (5) – wewnętrzny błąd agenta
Porządek leksykograficzny: Zasada sortowania identyfikatorów OID według kolejnych składowych numerycznych od lewej do prawej; stanowi podstawę nawigacji GETNEXT i snmpwalk po drzewie MIB.
Operacja SNMP GET Operacja GET – mechanizm żądanie-odpowiedź Manager (NMS) Klient SNMP GetRequest: [ OID: sysDescr.0, Val: Null ] GetResponse: [ OID: sysDescr.0, Val: "Linux..." ] Agent (Router) Demon snmpd:161 Przykłady wywołania snmpget w terminalu: $ snmpget -v2c -c public 192.168.53.84 sysUpTime.0 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (842910) 2:20:29.10 # Odpytanie wielu zmiennych jednocześnie w jednym PDU: $ snmpget -v2c -c public 192.168.53.84 sysName.0 sysLocation.0
Slajd 4/22
Masowe pobieranie danych: GETBULK oraz mechanizm snmpwalk
Cel slajdu: Opanowanie mechanizmu masowego odpytywania wprowadzonego w SNMPv2c oraz zrozumienie działania narzędzia snmpwalk.

Optymalizacja pobierania tabel i automatyczne trawersowanie drzewa

Pobieranie dużych tabel za pomocą pojedynczych operacji GETNEXT generowało ogromną liczbę pakietów w sieci; operacja GETBULK zrewolucjonizowała wydajność monitoringu.

  • Operacja GETBULK (RFC 3416): Umożliwia pobranie wielu kolejnych wierszy tabeli w odpowiedzi na pojedynczy pakiet zapytania menedżera
  • Parametry non-repeaters i max-repetitions: non-repeaters określa liczbę zmiennych pobieranych pojedynczo; max-repetitions definiuje ile kolejnych instancji pozostałych zmiennych agent ma odesłać
  • Działanie narzędzia snmpwalk: Automatyczna pętla wykonująca zapytania GETNEXT (lub GETBULK w snmpbulkwalk) tak długo, aż pobierze wszystkie obiekty należące do wskazanego poddrzewa OID
  • Kryterium zakończenia: Przejście do OID spoza zadanego prefiksu lub napotkanie znacznika endOfMibView
Operacja GETBULK: Wysokowydajna operacja protokołu SNMPv2c/v3 pozwalająca na masowe pobieranie całych bloków tabelarycznych w pojedynczej parze żądanie-odpowiedź.
Operacja SNMP GETBULK Operacja GETBULK – masowy transfer danych Non-Repeaters (N) • Zmienne pojedyncze (skalarne) • Pobierane dokładnie 1 raz • Np. sysUpTime.0, sysName.0 Max-Repetitions (M) • Zmienne tabelaryczne • Pobierane kaskadowo M razy • Np. kolejne 20 wierszy ifTable Porównanie wydajnościowe na łączu o opóźnieniu RTT = 20 ms: • snmpwalk (100 wierszy x GetNext): 100 RTT = 2000 ms (2 sekundy!) • snmpbulkwalk (Max-Repetitions=25): 4 RTT = 80 ms (25 razy szybciej!) Wniosek: W sieciach produkcyjnych zawsze używamy GetBulk (SNMPv2c/v3)
Slajd 5/22
Zdalna modyfikacja konfiguracji i sterowanie: operacja SET
Cel slajdu: Poznanie zasad bezpiecznego dokonywania zdalnych zmian parametrów urządzenia za pomocą operacji SNMP SET.

Zdalna zmiana stanu urządzenia i wymagania bezpieczeństwa

Chociaż SNMP jest kojarzone głównie z odczytem parametrów (monitoring), operacja SET umożliwia bezpośrednie konfigurowanie urządzeń i wykonywanie akcji sterujących.

  • Operacja SET (SetRequest): Przesłanie żądania przypisania określonej wartości do wskazanego identyfikatora OID (np. zmiana nazwy węzła sysName.0)
  • Sterowanie interfejsami: Możliwość programowego wyłączenia portu przełącznika przez ustawienie wartości ifAdminStatus.X = down(2)
  • Kody błędów operacji SET: readOnly (4) lub w v2c/v3 notWritable (17) – brak praw zapisu; wrongType (7) lub wrongValue (10) – niezgodność typu lub wartości
  • Wymóg SNMPv3: Operacja SET na produkcji jest bezwzględnie zakazana przy użyciu nieszyfrowanego SNMPv1/v2c ze względu na ryzyko przejęcia kontroli nad urządzeniem
Operacja SNMP SET: Polecenie protokołu SNMP służące do zdalnego zapisu wartości w zmiennych urządzenia nadzorowanego, o ile obiekt w bazie MIB posiada status MAX-ACCESS read-write.
Operacja SNMP SET Operacja SET – modyfikacja parametrów urządzenia Przykłady polecenia snmpset w terminalu: # 1. Zmiana kontaktu administracyjnego (typ s = string): $ snmpset -v2c -c private srv01 sysContact.0 s "admin@bezpieczna-siec.pl" # 2. Administracyjne wyłączenie portu eth1 (typ i = integer, stan down=2): $ snmpset -v2c -c private router01 ifAdminStatus.2 i 2 Ryzyko operacji SET: • Przejęcie community RW • Zdalne wyłączenie portów • Restart urządzenia Dobra praktyka NMS: • Blokada zapisu w NMS • Tylko profil read-only (RO) • Konfiguracja przez SSH/Ansible
Slajd 6/22
Zarządzanie bazami MIB w systemie Linux i translacja OID (snmptranslate)
Cel slajdu: Nauczenie się instalacji, konfiguracji oraz kompilacji zewnętrznych plików MIB producentów w środowisku serwerowym Linux.

Lokalizacja plików MIB, narzędzie snmptranslate i pakiety Net-SNMP

Aby narzędzia CLI oraz system NMS wyświetlały czytelne nazwy zmiennych zamiast surowych ciągów cyfr, w systemie muszą być zainstalowane odpowiednie definicje MIB.

  • Katalogi baz MIB: Domyślne ścieżki w systemie Linux: /usr/share/snmp/mibs/ oraz ~/.snmp/mibs/ dla użytkownika lokalnego
  • Instalacja plików MIB: Pobieranie pakietu snmp-mibs-downloader w dystrybucjach Debian/Ubuntu oraz ręczne dodawanie plików .mib od producentów sprzętu
  • Narzędzie snmptranslate: Wyszukiwanie i translacja: snmptranslate -Td IF-MIB::ifOperStatus wyświetla pełny opis obiektu, typ danych oraz dopuszczalne wartości
  • Format numeryczny vs tekstowy: Przełącznik -On wymusza zapis numeryczny (np. .1.3.6.1.2.1.2.2.1.8), a -Os format skrócony tekstowy
Kompilacja MIB: Proces parsowania i walidacji składniowej plików MIB przez oprogramowanie NMS w celu utworzenia zoptymalizowanej bazy indeksów OID.
Narzędzie snmptranslate Narzędzie snmptranslate – inspekcja drzewa MIB Zaawansowane użycie snmptranslate w terminalu # 1. Konwersja nazwy symbolicznej na numeryczny OID (-On): $ snmptranslate -On -m IF-MIB ifHCInOctets .1.3.6.1.2.1.31.1.1.1.6 # 2. Pełny opis semantyczny obiektu z pliku MIB (-Td): $ snmptranslate -Td -m SNMPv2-MIB sysUpTime SYNTAX: TimeTicks | MAX-ACCESS: read-only | STATUS: current DESCRIPTION: "The time (in hundredths of a second) since network mgmt..." # 3. Rysowanie drzewa podrzędnego w formacie tekstowym (-Tp): $ snmptranslate -Tp -m SNMPv2-MIB system +--system(1) | +-- -R-- String sysDescr(1) | +-- -R-- ObjID sysObjectID(2)...
Slajd 7/22
Pomiar przepustowości interfejsów sieciowych i obsługa licznika Counter Wrap
Cel slajdu: Opanowanie matematyki wyliczania obciążenia portów oraz zrozumienie mechaniki przepełnienia liczników na szybkich łączach.

Odpytywanie ifTable, ifXTable i zapobieganie błędom rachunku

Liczniki bajtów i pakietów w SNMP są monotonicznie rosnącymi liczbami całkowitymi; wyliczenie prędkości wymaga analizy przyrostu wartości w funkcji czasu.

  • Liczniki bajtów: ifInOctets (ruch przychodzący) oraz ifOutOctets (ruch wychodzący); rejestrują surową liczbę bajtów na poziomie warstwy MAC
  • Problem Counter Wrap (32-bit): Wartość maksymalna licznika 32-bitowego wynosi 4 294 967 295 bajtów (~4,29 GB); na łączu 10 Gb/s licznik przekręca się co ~3,4 sekundy!
  • Rozwiązanie – liczniki 64-bitowe: Standard IF-MIB definiuje obiekty ifHCInOctets oraz ifHCOutOctets w tabeli ifXTable, które na łączu 10 Gb/s przepełnią się dopiero po kilkudziesięciu latach
  • Algorytm wykrywania przekręcenia: Jeśli C2 < C1, system NMS musi skorygować wzór: Delta = (MaxVal - C1) + C2 + 1, aby uniknąć fałszywych wartości ujemnych
Counter Wrap (Przekręcenie licznika): Zjawisko osiągnięcia przez rejestr sprzętowy wartości maksymalnej 2^32-1 (lub 2^64-1) i ponownego rozpoczęcia zliczania od zera.
Problem Counter Wrap Zjawisko przepełnienia licznika (Counter Wrap) Prędkość łącza Transfer na sekundę Czas zawinięcia (32-bit) Status NMS 10 Mbps 1.25 MB/s ok. 57 minut Bezpieczny 100 Mbps 12.5 MB/s ok. 5.7 minuty Graniczny (300 s) 1 Gbps 125 MB/s zaledwie 34 sekundy! Błędne wykresy 10 Gbps 1.25 GB/s ok. 3,4 sekundy! Całkowity paraliż Rozwiązanie inżynierskie: Standard IF-MIB (RFC 2863) • Liczniki 64-bitowe: ifHCInOctets / ifHCOutOctets (typ Counter64) • Przy pełnym nasyceniu łącza 10 Gbps licznik 64-bitowy zawinie się po... 468 latach!
Slajd 8/22
Odpytywanie routerów MikroTik RouterOS i przełączników zarządzalnych L2/L3
Cel slajdu: Przedstawienie specyfiki telemetrii SNMP na urządzeniach MikroTik oraz przełącznikach dostępowych i dystrybucyjnych Cisco/HP.

Metryki specyficzne dla producentów i mapowanie interfejsów

Urządzenia sieciowe poza standardową gałęzią MIB-II udostępniają dedykowane struktury w poddrzewie enterprises, reprezentujące specyficzne cechy sprzętu.

  • MikroTik Enterprise MIB (.1.3.6.1.4.1.14988): Odczyt napięcia zasilania (mtxrHlVoltage), temperatury procesora (mtxrHlTemperature) oraz parametrów sieci bezprzewodowej
  • Przełączniki zarządzalne L2/L3: Monitorowanie stanu portów fizycznych, prędkości negocjacji (auto-negotiation), błędów ramkowania CRC oraz odrzuconych pakietów (ifInDiscards)
  • Identyfikacja interfejsów: Porty fizyczne (np. ether1, GigabitEthernet0/1) mają inne indeksy ifIndex niż interfejsy logiczne (np. bridge, vlan10, lo); konieczna weryfikacja przez ifDescr lub ifName
  • Monitorowanie zasilania PoE: Odczyt poboru mocy w watach dla każdego portu dostarczającego zasilanie do kamer IP i punktów dostępowych Wi-Fi
Prywatna gałąź Enterprise OID: Przestrzeń poddrzewa .1.3.6.1.4.1 zarezerwowana dla konkretnego producenta sprzętu, zawierająca parametry specyficzne dla jego rozwiązań.
Telemetria MikroTik RouterOS Odpytywanie routera MikroTik RouterOS Prywatne OID MikroTik (.1.3.6.1.4.1.14988) # 1. Odczyt napięcia zasilania płyty (w jednostkach 0.1 V): $ snmpget -v2c -c public 192.168.53.84 .1.3.6.1.4.1.14988.1.1.3.8.0 INTEGER: 242 (co oznacza 24.2 V na wejściu DC) # 2. Odczyt temperatury procesora (w jednostkach 0.1 °C): $ snmpget -v2c -c public 192.168.53.84 .1.3.6.1.4.1.14988.1.1.3.11.0 INTEGER: 480 (co oznacza 48.0 °C po przeskalowaniu ×0.1) # 3. Odczyt mocy sygnału klientów Wi-Fi (RSSI): $ snmpwalk -v2c -c public 192.168.53.84 .1.3.6.1.4.1.14988.1.1.1.2.1.3 mtxrWlRtabStrength = -62 dBm (siła sygnału RSSI) Plik definicji: MIKROTIK-MIB.txt (kod IANA PEN = 14988)
Slajd 9/22
Odpytywanie serwerów Linux oraz rozszerzenia agenta snmpd (extend/exec)
Cel slajdu: Poznanie zaawansowanych możliwości agenta Net-SNMP w Linuksie, w tym integrowania własnych skryptów telemetrycznych za pomocą dyrektywy extend.

Natywne metryki jądra Linux i niestandardowe sensory skryptowe

Demon snmpd w systemie Linux potrafi nie tylko udostępniać standardowe parametry systemowe, ale może pełnić rolę bramy telemetrycznej dla dowolnych skryptów administratora.

  • Natywne metryki Linuksa: Standard UCD-SNMP-MIB (gałąź .1.3.6.1.4.1.2021); średnie obciążenie systemu (load average: laLoad.1, laLoad.2, laLoad.3), zużycie pamięci (memTotalReal, memAvailReal)
  • Dyrektywa extend w snmpd.conf: Składnia: extend <nazwa> <ścieżka_do_skryptu>; agent uruchamia skrypt przy zapytaniu i zwraca kod wyjścia oraz tekst
  • Dostęp do wyniku przez SNMP: Wynik skryptu trafia do gałęzi NET-SNMP-EXTEND-MIB::nsExtendObjects (.1.3.6.1.4.1.8072.1.3.2); możliwość pobrania tekstu lub kodu błędu
  • Zastosowania dyrektywy extend: Monitorowanie statusu replikacji baz danych MySQL/PostgreSQL, liczby oczekujących aktualizacji apt, temperatury dysków NVMe (smartctl)
Dyrektywa extend (Net-SNMP): Mechanizm rozszerzania bazy agenta snmpd pozwalający na wywołanie dowolnego polecenia systemowego i udostępnienie jego wyjścia pod unikalnym adresem OID.
Dyrektywa extend w snmpd Własne metryki przez dyrektywę extend w snmpd 1. Konfiguracja w /etc/snmp/snmpd.conf: # Definicja polecenia o nazwie 'smart_nvme': extend smart_nvme /usr/local/bin/check_nvme_temp.sh # Skrypt check_nvme_temp.sh wypisuje na stdout: "42" sudo systemctl restart snmpd 2. Odpytanie nowej zmiennej przez NMS: # Odpytanie gałęzi nsExtendOutput1Line w NET-SNMP-EXTEND-MIB: $ snmpget -v2c -c public srv01 'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."smart_nvme"' NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."smart_nvme" = STRING: 42 Adres numeryczny OID: .1.3.6.1.4.1.8072.1.3.2.3.1.1.10.115.109.97.114.116... = "42"
Slajd 10/22
Nadzór nad zasilaczami UPS (UPS-MIB), drukarkami i sensorami środowiskowymi
Cel slajdu: Przedstawienie standardów telemetrycznych stosowanych w zasilaczach awaryjnych UPS, urządzeniach peryferyjnych i infrastrukturze Data Center.

Specjalistyczne bazy MIB: zasilanie, środowisko i peryferia

Ciągłość pracy sieci LAN zależy bezpośrednio od zasilania gwarantowanego; standard UPS-MIB zapewnia wgląd w stan baterii i jakość zasilania sieciowego.

  • Standard UPS-MIB (RFC 1628): Gałąź .1.3.6.1.2.1.33; odczyt stanu baterii (upsBatteryStatus), szacowanego czasu podtrzymania (upsEstimatedMinutesRemaining), temperatury akumulatorów
  • Pomiary wejścia i wyjścia UPS: Napięcie sieciowe (upsInputVoltage), częstotliwość (upsInputFrequency), aktualne obciążenie torów wyjściowych w procentach (upsOutputPercentLoad)
  • Printer-MIB (RFC 3805): Gałąź .1.3.6.1.2.1.43; monitorowanie poziomu tonerów/tuszów w procentach, liczników wydrukowanych stron oraz kodów zacięcia papieru
  • Sensory klimatyzacji i środowiska: Odpytywanie czujników w szafach rack przez SNMP; progi alarmowe dla temperatury (> 27°C) i wilgotności (< 30% lub > 70%)
Standard RFC 1628 (UPS-MIB): Znormalizowana przez IETF baza MIB definiująca obiekty do zarządzania i monitorowania zasilaczy bezprzerwowych (Uninterruptible Power Supplies).
Standard UPS-MIB RFC 1628 Nadzór nad zasilaczem UPS (RFC 1628) Bateria i akumulatory • upsBatteryStatus (normal/low) • upsEstimatedMinutesRemaining Szacowany czas pracy [minuty] Klucz do procedury shutdown Parametry zasilania AC • upsInputVoltage (napięcie wej.) • upsOutputPercentLoad (obciążenie %) upsOutputSource (normal/battery) Detekcja zaniku zasilania sieci Odczyt parametrów UPS w terminalu: $ snmpget -v2c -c public ups01 upsEstimatedMinutesRemaining.0 UPS-MIB::upsEstimatedMinutesRemaining.0 = INTEGER: 42 minut $ snmpget -v2c -c public ups01 upsOutputPercentLoad.0 UPS-MIB::upsOutputPercentLoad.0 = INTEGER: 34 % obciążenia mocy
Slajd 11/22
Monitorowanie parametrów systemowych: procesora, pamięci RAM, pamięci masowej i sysUpTime
Cel slajdu: Zestawienie procedur telemetrycznych dla kluczowych zasobów obliczeniowych i pamięciowych w serwerach i urządzeniach sieciowych.

Wielopłaszczyznowa diagnostyka zasobów węzłów systemowych

Przeciążenie procesora lub brak pamięci operacyjnej na routerze prowadzi do gubienia pakietów i zrywania sesji routingu dynamicznego.

  • Utylizacja CPU: Śledzenie obciążenia procesora w ujęciu 1-minutowym i 5-minutowym; rozróżnienie pomiędzy czasem użytkownika (user), jądra (system) a obsługą przerwań (interrupts)
  • Gospodarka pamięcią RAM: Pamięć wolna (free), buforowana (buffers) oraz pamięć podręczna stron (cached); w Linuksie realna dostępna pamięć to suma free + cached/buffers
  • Przestrzeń dyskowa i partycje: Odpytywanie tabeli hrStorageTable; wyliczanie zajętości w bajtach: Zajętość = hrStorageUsed * hrStorageAllocationUnits
  • Czas pracy i detekcja restartów: Nagły spadek licznika sysUpTime.0 oznacza nieoczekiwany restart urządzenia (np. zanik zasilania, błąd jądra kernel panic); wyzwalacz alertu krytycznego
Wskaźnik hrProcessorLoad: Liczbowy parametr z bazy HOST-RESOURCES-MIB wyrażający średnie obciążenie danego rdzenia procesora w procentach w ciągu ostatniej minuty.
Monitorowanie CPU przez SNMP Porównanie OID obciążenia procesora (CPU) Cisco IOS / IOS-XE .1.3.6.1.4.1.9.9.109.1.1.1.1.8.1 (cpmCPUTotal5minRev) MikroTik RouterOS .1.3.6.1.2.1.25.3.3.1.2.1 (hrProcessorLoad per rdzeń) Linux (UCD-SNMP) .1.3.6.1.4.1.2021.11.11.0 (ssCpuIdle - bezczynność %) Windows Server .1.3.6.1.2.1.25.3.3.1.2 (HOST-RESOURCES-MIB) Matematyka utylizacji CPU w systemie Linux: Zużycie CPU [%] = 100 - ssCpuIdle.0 Lepsza metoda: delta liczników ssCpuRawUser, ssCpuRawSystem, ssCpuRawIdle Różnica: Uśrednianie sprzętowe vendorów a surowe jiffy jądra Linuksa
Slajd 12/22
Inspekcja stanu sieci: tablice ARP, tablice routingu IP oraz identyfikacja VLAN
Cel slajdu: Opanowanie odczytu i analizy tablic warstwy L2 i L3 urządzenia za pomocą zapytań SNMP.

Odwzorowanie adresacji IP do MAC oraz analiza ścieżek routingu

Dostęp do tablic routingu i tablic translacji adresów ARP przez SNMP umożliwia systemowi NMS automatyczną inwentaryzację urządzeń i wykrywanie konfliktów IP.

  • Tablica ARP (ipNetToMediaTable / ipAddressTable): Obiekt .1.3.6.1.2.1.4.22; mapowanie adresów logicznych IP na fizyczne adresy MAC wraz z indeksem portu
  • Zastosowanie w bezpieczeństwie: Wykrywanie pojawienia się nieznanych adresów MAC w sieci LAN, identyfikacja prób zatruwania tablicy ARP (ARP Poisoning/Spoofing)
  • Tablica routingu IP (ipRouteTable / inetCidrRouteTable): Odczyt sieci docelowych, masek podsieci, bram domyślnych (next-hop) oraz metryk tras routingu
  • Identyfikacja VLAN (Q-BRIDGE-MIB): Mapowanie numerów VLAN (802.1Q) do poszczególnych portów fizycznych przełącznika w trybach access i trunk
Tablica ipNetToMediaTable: Znormalizowana struktura MIB-II zawierająca aktualne wpisy pamięci podręcznej protokołu ARP, wiążące adresy IP z adresami warstwy łącza danych (MAC).
Tablica ARP w SNMP Odczyt tablicy ARP przez SNMP (ipNetToMediaTable) Odpytanie tablicy ARP routera w terminalu: $ snmpbulkwalk -v2c -c public 192.168.53.84 ipNetToMediaPhysAddress ipNetToMediaPhysAddress.2.192.168.53.50 = STRING: 00:1a:b8:16:29:5a ipNetToMediaPhysAddress.2.192.168.53.97 = STRING: b8:27:eb:41:88:12 Struktura OID: [ kolumna ] . [ ifIndex ] . [ adres IPv4 ] = [ adres MAC ] Typ wpisu ARP: • ipNetToMediaType: dynamic(3) - z protokołu ARP static(4) - wpis statyczny Zastosowanie NMS: • Inwentaryzacja IP/MAC (IPAM) • Wykrywanie obcych stacji • Lokalizacja urządzeń w sieci
Slajd 13/22
Asynchroniczna obsługa zdarzeń: pułapki TRAP, komunikaty INFORM i snmptrapd
Cel slajdu: Zrozumienie praktycznej konfiguracji odbioru, weryfikacji i filtrowania powiadomień asynchronicznych w systemie Linux.

Przetwarzanie zdarzeń czasu rzeczywistego w infrastrukturze NMS

Zamiast czekać na cykliczne odpytanie, urządzenie natychmiast wysyła pułapkę w momencie wykrycia awarii; poprawna konfiguracja serwera gwarantuje natychmiastową reakcję NOC.

  • SNMPv2-Trap vs Inform: Pułapka v2c Trap jest wysyłana 'na ślepo' przez UDP; komunikat INFORM wymaga potwierdzenia przez menedżera, co zapobiega utracie alertów na łączach zawodnych
  • Zdarzenie linkDown: Wysłanie pułapki natychmiast po fizycznym rozłączeniu kabla; pakiet zawiera ifIndex, ifAdminStatus oraz aktualny stan ifOperStatus
  • Konfiguracja nadawania w MikroTik: /snmp set trap-community=public trap-version=2 trap-generators=interfaces,temp-exception trap-target=192.168.1.100
  • Korelacja w snmptrapd: Połączenie odbiornika z demonem rsyslog lub przekazanie do silnika skryptowego celem wysłania powiadomienia e-mail/SMS/Webhook
Obsługa pułapek (Trap Handling): Architektura programowa serwera NMS odbierająca datagramy UDP na porcie 162, weryfikująca poświadczenia i wyzwalająca procedury alarmowe.
SNMP TRAP vs INFORM i konfiguracja RouterOS Konfiguracja zdarzeń w MikroTik RouterOS i model TRAP/INFORM [admin@MikroTik-GW] > /snmp (Konfiguracja pułapek) # 1. Konfiguracja wysyłki pułapek ze wskazaniem serwera i interfejsów: /snmp set enabled=yes \ trap-target=192.168.53.50 trap-community=v3-mon trap-version=2 \ trap-generators=interfaces,start-trap \ trap-interfaces=ether1,sfp-sfpplus1 # 2. Porównanie mechanizmów powiadamiania (RFC 3416): • SNMP TRAP: Agent -> NMS [UDP 162] (brak potwierdzenia, ryzyko utraty pakietu) • SNMP INFORM: Agent -> NMS [InformRequest] ; NMS -> Agent [Response-PDU / ACK] (w razie braku ACK agent dokonuje retransmisji po upływie czasu timeout) # 3. Testowanie wysyłki INFORM z konsoli Linuksa do odbiornika: $ snmpinform -v2c -c public 192.168.53.50 0 linkUp ifIndex.1 i 1 Weryfikacja w RouterOS: /snmp print (weryfikacja stanu licznika trap-sent)
Slajd 14/22
Automatyzacja monitoringu SNMP w skryptach powłoki Bash
Cel slajdu: Nauczenie się tworzenia wydajnych skryptów wiersza poleceń w powłoce Bash do automatycznej diagnostyki i nadzoru łącz.

Integracja narzędzi Net-SNMP z potokami i poleceniami Linuksa

Skrypty powłoki Bash stanowią najszybszy sposób na zautomatyzowanie powtarzalnych zadań diagnostycznych oraz integrację SNMP z lokalnymi systemami powiadomień.

  • Wycinanie wartości z odpowiedzi: Użycie parametrów -Oqv (Output: Quick + Value only) w poleceniach snmpget eliminuje nazwy zmiennych i typy danych, zwracając czystą wartość
  • Przykładowy skrypt nasycenia łącza: Pobranie licznika ifHCInOctets, odczekanie sleep 10, ponowne pobranie, obliczenie różnicy i wyświetlenie prędkości w Mb/s
  • Detekcja awarii łączy: Skrypt odpytujący w pętli status ifOperStatus.X; w przypadku napotkania wartości różnej od 1 (up) natychmiastowe wysłanie alertu
  • Obsługa wielu węzłów: Pętla iterująca po pliku tekstowym z listą adresów IP routerów i przełączników; błyskawiczny audyt wersji oprogramowania na setkach urządzeń
Opcja -Oqv (Net-SNMP): Przełącznik formatowania wyjścia poleceń CLI usuwający przedrostki OID oraz oznaczenia typów danych ASN.1, zwracający wyłącznie surową wartość zmiennej.
Skrypty powłoki Bash i SNMP Automatyzacja diagnostyki w skrypcie Bash Skrypt Bash: check_ports.sh #!/bin/bash TARGET="192.168.53.84"; COMM="public" # Pobranie listy portów i ich stanów za pomocą snmpwalk: snmpwalk -v2c -c "$COMM" -Oq "$TARGET" ifOperStatus | while read -r line; do IDX=$(echo "$line" | awk -F'.' '{print $2}' | awk '{print $1}') STATUS=$(echo "$line" | awk '{print $2}') NAME=$(snmpget -v2c -c "$COMM" -Oqv "$TARGET" "ifName.$IDX") if [ "$STATUS" = "down" ]; then echo "[ALARM] Port $NAME (indeks $IDX) ma stan DOWN!" fi done
Slajd 15/22
Programistyczna integracja SNMP w języku Python z bibliotekami wyspecjalizowanymi
Cel slajdu: Poznanie zasad budowy zaawansowanych aplikacji telemetrycznych w języku Python z wykorzystaniem bibliotek pysnmp oraz puresnmp.

Tworzenie dedykowanych sond telemetrycznych w środowisku Python

Dla złożonych systemów analitycznych skrypty powłoki są niewystarczające; język Python oferuje natywne biblioteki asynchroniczne do równoległego odpytywania tysięcy węzłów.

  • Biblioteka pysnmp: Dojrzała, kompletna implementacja stosu SNMPv1/v2c/v3 w czystym Pythonie; pełna obsługa modeli USM, VACM oraz asynchronicznych operacji asyncio
  • Biblioteka puresnmp: Nowoczesna, lekka i szybka biblioteka w standardzie Python 3 zoptymalizowana pod kątem prostych zapytań i wysokiej wydajności
  • Struktura zapytania w Pythonie: Utworzenie obiektu silnika (SnmpEngine), zdefiniowanie poświadczeń (CommunityData / UsmUserData), wskazanie celu (UdpTransportTarget) oraz obiektu OID
  • Zastosowania zaawansowane: Automatyczne zasilanie baz danych szeregów czasowych (InfluxDB/Prometheus), parsowanie niestandardowych tabel i integracja z botami Slack/Telegram
Biblioteka pysnmp: Otwartoźródłowy moduł języka Python realizujący pełną specyfikację SNMPv1-v3 bez konieczności instalowania zewnętrznych pakietów systemowych C/C++.
Automatyzacja Python pysnmp (asyncio) Automatyzacja w języku Python (biblioteka pysnmp) Skrypt asynchroniczny Python: snmp_query.py (pysnmp 7.x) import asyncio from pysnmp.hlapi.asyncio import * async def main(): engine = SnmpEngine() errInd, errStat, errIdx, varBinds = await get_cmd( engine, CommunityData('public', mpModel=1), # 1 = SNMPv2c await UdpTransportTarget.create(('192.168.53.84', 161), timeout=2), ContextData(), ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysDescr', 0)) ) if not errInd and not errStat: for vb in varBinds: print(f"{vb[0].prettyPrint()} = {vb[1].prettyPrint()}") engine.close_dispatcher() asyncio.run(main())
Slajd 16/22
Skalowalność odpytywania masowego i strojenie parametrów wydajnościowych
Cel slajdu: Zrozumienie barier wydajnościowych przy odpytywaniu setek urządzeń oraz opanowanie technik strojenia parametrów sieciowych SNMP.

Optymalizacja cyklu odpytywania i unikanie wąskich gardeł

W dużych sieciach korporacyjnych serwer NMS musi odpytać dziesiątki tysięcy portów w czasie krótszym niż interwał odpytywania (np. 300 sekund).

  • Architektura wielowątkowa (Distributed/Parallel Polling): Podział puli urządzeń pomiędzy niezależne procesy robocze lub dedykowane serwery odpytujące (poller nodes)
  • Strojenie parametru timeout: Domyślny czas oczekiwania (np. 5 sekund) jest zbyt długi w sieciach lokalnych; skrócenie do 1-2 sekund zapobiega blokowaniu kolejki
  • Limit retransmisji (retries): Ograniczenie liczby powtórzeń zapytania (np. z 5 do 2); zapobiega zalewaniu sieci pakietami ponawianymi w przypadku rzeczywistej awarii węzła
  • Agregacja zmiennych w PDU: Umieszczenie wielu identyfikatorów OID w jednym zapytaniu GET/GETBULK drastycznie zmniejsza liczbę generowanych pakietów IP
Cykl odpytywania (Poll Cycle Duration): Całkowity czas potrzebny systemowi NMS na odpytanie wszystkich zarejestrowanych węzłów i interfejsów; musi być bezwzględnie krótszy niż interwał pomiarowy.
Skalowalność SNMP Poller Lag Architektura skalowalnego odpytywania (Poller Lag) Model jednowątkowy • 500 urządzeń x 1 sekunda • Czas cyklu: 500 sekund • Przekroczenie okna 300 s! Zjawisko Poller Lag Pula wątków (Worker Pool) • 32 równoległe procesy robocze • Kolejka zadań w Redis • Czas cyklu: zaledwie 18 s! Skalowalność do 10 000 węzłów Metody optymalizacji wielkich instalacji NMS: 1. Rozproszone pollery (Distributed Polling) w oddziałach firmy 2. Adaptacyjny timeout: 1 s dla LAN, 3 s dla łączy satelitarnych/WAN 3. Spine Poller (napisany w C) w Cacti zamiast interpretera PHP
Slajd 17/22
Klasyczne mechanizmy wizualizacji: silnik RRDtool, MRTG oraz Cacti
Cel slajdu: Przedstawienie historii i zasad działania klasycznych narzędzi wizualizacji metryk sieciowych, stanowiących fundament dla nowożytnych systemów NMS.

Ewolucja wykresów telemetrycznych od MRTG do Cacti

Zanim powstały zintegrowane platformy NMS, standardem rynkowym było łączenie skryptów SNMP z biblioteką RRDtool i interfejsem webowym Cacti.

  • MRTG (Multi Router Traffic Grapher): Pierwsze masowo wdrożone narzędzie (1995, Tobias Oetiker) generujące statyczne strony HTML z wykresami PNG w cyklu 5-minutowym
  • Powstanie silnika RRDtool: Wydzielenie z MRTG uniwersalnego mechanizmu cyklicznych baz danych o stałym rozmiarze pliku na dysku (pliki .rrd)
  • System Cacti: Rozbudowany panel LAMP (Linux, Apache, MySQL, PHP) stanowiący graficzną nakładkę na RRDtool; automatyzacja generowania wykresów z szablonów
  • Znaczenie historyczne: Choć Cacti ustępuje nowoczesnym systemom auto-discovery, architektura RRDtool pozostaje sercem wielu współczesnych platform (w tym LibreNMS)
MRTG: Historyczny pierwowzór graficznego monitoringu sieci, który spopularyzował cykliczne wykresy obciążenia portów oparte na protokole SNMP i 5-minutowych próbkach.
System Cacti i silnik Spine Architektura systemu Cacti i pollerów telemetrii 1. Konfiguracja • Baza MySQL/MariaDB • Szablony urządzeń • Drzewo Graph Tree 2. Silnik odpytujący • cmd.php (skrypt PHP) • Spine (demon w C) • Wątki POSIX pthreads 3. Składowanie i UI • Pliki baz RRDtool • Generowanie PNG/SVG • Interfejs WWW PHP Porównanie pollerów Cacti: cmd.php vs Spine Cecha architektoniczna cmd.php (Domyślny) Spine (Zalecany produkcyjnie) Język implementacji Skrypt interpretowany PHP Skompilowany kod w C Wielowątkowość Jednowątkowy / procesowy Wielowątkowy (pthreads) Wydajność (10 000 OID) Czas wykonania > 300 s (lag) Czas wykonania < 15 s Spine eliminuje opóźnienia pollerów (poller overrun) w sieciach szkieletowych.
Slajd 18/22
Kompleksowe studium przypadku: ciągły monitoring routera brzegowego
Cel slajdu: Przeanalizowanie kompletnego scenariusza wdrożenia monitoringu SNMP na krytycznym routerze brzegowym przedsiębiorstwa.

Projekt i realizacja polisy telemetrycznej dla węzła Edge

Router brzegowy styka sieć korporacyjną z Internetem; jego awaria odcina całą organizację, co wymaga bezwzględnego nadzoru nad pełnym spektrum metryk.

  • Krok 1: Wdrożenie SNMPv3 authPriv: Utworzenie dedykowanego użytkownika z szyfrowaniem AES-128; zablokowanie dostępu z zewnątrz na zaporze ogniowej
  • Krok 2: Nadzór nad łączami WAN: Odpytywanie liczników ifHCInOctets / ifHCOutOctets portu WAN; progi alarmowe: ostrzeżenie przy 80% pasma, błąd przy 95%
  • Krok 3: Rejestracja błędów i odrzuceń: Śledzenie ifInErrors oraz ifInDiscards; wzrost wskazuje na problemy fizyczne światłowodu lub przepełnienie buforów
  • Krok 4: Środowisko i stabilność: Ciągły odczyt mtxrHlTemperature (lub hrProcessorLoad) oraz sysUpTime; integracja z wysyłką powiadomień InformRequest
Węzeł brzegowy (Edge Router): Router zlokalizowany na styku infrastruktury wewnętrznej przedsiębiorstwa z siecią operatora telekomunikacyjnego (ISP), podlegający najwyższym rygorom niezawodności.
Audyt routera brzegowego Procedura audytu routera brzegowego krok po kroku 1. Identyfikacja sysDescr.0 Wersja OS sysUpTime.0 Czas stabilności SNMPv2-MIB 2. Wydajność CPU 1m / 5m cpmCPUTotal Pamięć RAM hrStorageTable Zasoby węzła 3. Optyka DDM Moc Rx / Tx Wkładki SFP+ Błędy CRC ifInErrors / FCS Warstwa fizyczna 4. Sesje BGP bgpPeerState Stan 6 = Estab Czas sesji bgpEstablished BGP4-MIB # 1. Sprawdzenie stanu sesji BGP do operatora nadrzędnego (ISP) $ snmpwalk -v2c -c secret 195.187.245.1 bgpPeerState BGP4-MIB::bgpPeerState.195.187.245.2 = INTEGER: established(6) # 2. Odczyt mocy optycznej portu uplink 10G SFP+ (RouterOS CCR) $ snmpget -v2c -c secret 195.187.245.1 1.3.6.1.4.1.14988.1.1.19.1.1.10.1 iso.3.6.1.4.1.14988.1.1.19.1.1.10.1 = INTEGER: -4720 # -4.72 dBm (Prawidłowy)
Slajd 19/22
Metodyka rozwiązywania problemów i drzewo diagnostyki SNMP
Cel slajdu: Wykształcenie algorytmicznego podejścia do diagnozowania awarii komunikacji SNMP w środowiskach wieloproducentowych.

Procedura krok po kroku i drzewo decyzyjne awarii

Gdy serwer NMS zgłasza brak odpowiedzi od węzła, inżynier musi metodycznie wykluczyć usterki warstwy fizycznej, sieciowej, filtrów zapory oraz samej usługi agenta.

  • Krok 1: ICMP Echo Check: Czy urządzenie odpowiada na ping? Jeśli nie => awaria warstwy L1-L3 lub awaria zasilania; jeśli tak => problem w warstwie aplikacji
  • Krok 2: Skanowanie portu UDP 161: Test narzędziem nmap (nmap -sU -p 161 <IP>); weryfikacja czy port jest open czy open|filtered
  • Krok 3: Test uproszczonego zapytania: Wykonanie snmpget dla sysDescr.0 z domyślnym timeoutem; wykluczenie błędów zapytania o nieistniejący OID
  • Krok 4: Inspekcja uprawnień i ACL: Weryfikacja czy w konfiguracji urządzenia adres IP stacji NMS znajduje się na liście dozwolonych źródeł (access-list / allowed-addresses)
Drzewo decyzyjne diagnostyki: Sformalizowany algorytm logiczny prowadzący inżyniera od ogólnych objawów awarii do precyzyjnej identyfikacji przyczyny źródłowej (RCA).
Drzewo diagnostyki problemów Algorytm rozwiązywania błędu: Timeout: No Response Krok 1: L3 ICMP Ping? Routing IP? Krok 2: L4 Port UDP 161? Zapora / ACL? Krok 3: Auth Community OK? USM v3 Auth/Priv? Krok 4: MIB/VACM Widok VACM? OID istnieje? Objawy, przyczyny i polecenia diagnostyczne Brak odpowiedzi na Ping (L3): Problem z trasą IP, interfejs w stanie down. Polecenie: ping -c 3 $IP oraz traceroute $IP. Ping działa, brak odpowiedzi SNMP (L4 / Firewall): Blokada UDP 161 na firewallu lub liście ACL w routerze. Test: nc -z -v -u $IP 161 lub nmap -sU -p 161 $IP. Błędna społeczność (Community String) / Ciche odrzucenie: Agent nie odsyła błędu, lecz po cichu upuszcza pakiet (Silent Drop)! Weryfikacja pliku konfiguracyjnego agenta. Odpowiedź noSuchName / noSuchObject: Agent działa poprawnie, lecz dany OID nie jest zaimplementowany w MIB producenta lub wykluczony w VACM.
Slajd 20/22
Audyt bezpieczeństwa, plan adresacji OID i nowoczesna telemetria strumieniowa
Cel slajdu: Przedstawienie zasad audytu bezpieczeństwa protokołu SNMP w sieci LAN oraz kierunków ewolucji w stronę telemetrii gNMI i interfejsów REST API.

Audyt podatności SNMP i perspektywy rozwoju telemetrii

Protokół SNMP wymaga okresowych audytów bezpieczeństwa pod kątem wycieku haseł community oraz planowania migracji ku nowoczesnym standardom telemetrii.

  • Narzędzia audytu bezpieczeństwa: Skanery podatności (np. onesixtyone, snmpwalk) do szybkiego testowania słowników domyślnych haseł community
  • Projektowanie planu adresacji OID: Ustrukturyzowane zarządzanie prywatną przestrzenią Enterprise OID w organizacji przy tworzeniu własnych agentów telemetrycznych
  • Nowoczesne interfejsy REST / JSON: Urządzenia nowej generacji udostępniają interfejsy RESTCONF oraz HTTPS API, eliminując binarny narzut kodowania ASN.1
  • Telemetria strumieniowa gNMI: Strumieniowanie metryk bezpośrednio do baz TSDB; model 'Push' zapewnia natychmiastowe wykrywanie fluktuacji bez obciążania procesora zapytaniami
Audyt bezpieczeństwa SNMP: Zespół czynności weryfikacyjnych mających na celu wykrycie otwartych portów SNMPv1/v2c z domyślnymi poświadczeniami oraz braków w regułach zapory.
Telemetria gNMI vs SNMP Telemetria strumieniowa gNMI vs SNMP w centrach danych Model Pull: Protokół SNMP • Serwer NMS cyklicznie odpytuje węzeł • Zapytanie GET -> Odpowiedź RESPONSE • Ziarnistość pomiaru: 1 - 5 minut • Brak detekcji mikro-burstów Ograniczenie wydajnościowe CPU przełącznika Model Push: Telemetria gNMI • Przełącznik strumieniuje dane do kolektora • Trwały strumień gRPC over HTTP/2 • Ziarnistość: sub-sekundowa (np. 100 ms) • Subskrypcja On-Change (tylko zmiany) Sprzętowa akceleracja w układach ASIC Kluczowe innowacje technologii gNMI / OpenConfig • Serializacja Protocol Buffers (protobuf): Ekstremalnie kompaktowy, binarny format danych Google. • Subskrypcja On-Change: Brak zbędnych zapytań o porty, na których nic się nie dzieje – przesyłane są tylko zmiany. • Wykrywanie zjawiska microburst: Umożliwia rejestrację przeciążeń buforów kolejkowych trwających milisekundy. Zastosowanie: Sieci szkieletowe Hyperscale, klastry sztucznej inteligencji (AI/ML) i DC 400G/800G.
Slajd 21/22
Praktyka warsztatowa i analiza pakietowa w programie Wireshark
Cel slajdu: Opanowanie praktycznej analizy nagłówków i zawartości pakietów SNMP na poziomie bitowym w programie Wireshark.

Warsztat laboratoryjny: dekompozycja ramek PDU w Wireshark

Bezpośrednia analiza zrzuconego ruchu sieciowego (pcap) pozwala precyzyjnie zrozumieć strukturę komunikatów SNMP, mechanizmy żądanie-odpowiedź oraz enkapsulację.

  • Filtrowanie ruchu w Wireshark: Filtr protokołu snmp lub filtr portów transportowych udp.port == 161 || udp.port == 162
  • Dekompozycja pakietu SNMPv2c: Analiza nagłówka IP, nagłówka UDP (port źródłowy ulotny, port docelowy 161), wersji protokołu, ciągu community oraz struktury GetRequest-PDU
  • Inspekcja pól PDU: Odczyt pola request-id (parowanie zapytania z odpowiedzią), error-status, error-index oraz listy powiązanych zmiennych (variable-bindings)
  • Weryfikacja szyfrowania SNMPv3: Potwierdzenie, że nagłówek msgFlags ma ustawione bity auth i priv, a pole msgData jest ciągiem zaszyfrowanych bajtów
Analiza pakietowa (Packet Sniffing): Przechwytywanie i dekompozycja surowych ramek transmisyjnych w celu szczegółowej diagnostyki błędów protokołu na poziomie warstw OSI.
Analiza pakietów w Wireshark Warsztat 3: Dekapsulacja pakietów SNMPv2c vs v3 w Wireshark Pakiet SNMPv2c (Otwarty tekst) • UDP Port: Dst: 161 (snmp) • Community: "public" (Jawne hasło!) • data: get-request (0) • variable-bindings: 1 item 1.3.6.1.2.1.1.1.0 (Widoczne dla sniffera) Pakiet SNMPv3 (AuthPriv: AES) • msgVersion: 3 • msgFlags: 0x03 (authPriv) • msgAuthoritativeEngineID: 80001f88... • encryptedPDU: 48 b9 a1 f3 e2... Całkowita poufność i integralność HMAC Praktyka laboratoryjna w Wireshark • Filtr przechwytywania: port 161 or port 162. • Konfiguracja deszyfrowania SNMPv3: Edit -> Preferences -> Protocols -> SNMP. • Wprowadzenie: Nazwa użytkownika, Hasło Auth (SHA-256), Hasło Priv (AES-256) pozwala Wiresharkowi odszyfrować pakiet. Ćwiczenie demonstruje, dlaczego SNMPv1/v2c nie wolno stosować w niezaufanych sieciach.
Slajd 22/22
Słownik pojęć, pytania kontrolne i zadania sprawdzające
Cel slajdu: Usystematyzowanie terminologii modułu trzeciego, podsumowanie wiadomości oraz weryfikacja umiejętności za pomocą pytań kontrolnych.

Leksykon pojęciowy i pytania sprawdzające wiedzę

Zwieńczenie modułu praktycznego; student powinien swobodnie operować narzędziami Net-SNMP, rozumieć różnice między operacjami PDU oraz umieć wyliczać przepustowość łączy.

  • Pytania teoretyczne: 1. Czym różni się operacja GETNEXT od GETBULK? 2. W jaki sposób wzór na przepustowość uwzględnia interwał czasowy pomiaru? 3. Jakie ryzyko niesie pozostawienie otwartego portu z prawami SNMP SET?
  • Zadania w terminalu Linux: 1. Wykonaj snmpbulkwalk na tablicę ifDescr; 2. Przetłumacz OID za pomocą snmptranslate -Td; 3. Napisz jednolinijkowiec w Bashu pobierający sysUpTime
  • Słownik pojęć: PDU, Varbind, Counter Wrap, GETBULK, max-repetitions, snmpd extend, UPS-MIB, ifXTable, ifHCInOctets
  • Literatura zalecana: Dokumentacja Net-SNMP (net-snmp.org); RFC 3416 (SNMP Protocol Operations); RFC 2863 (The Interfaces Group MIB)
Gotowość operacyjna: Połączenie znajomości teorii MIB/OID z biegłością w posługiwaniu się narzędziami konsolowymi stanowi fundament do pracy z zaawansowanymi systemami NMS.
Pytania kontrolne Pytania kontrolne sprawdzające wiedzę techniczną Pytanie 1: Liczniki Counter Wrap Dlaczego na łączu 10 Gbps liczniki 32-bitowe są bezużyteczne? Odpowiedź: Przepełniają się w 3.4 s, co uniemożliwia wyliczenie delty przy standardowym interwale 300 s. Pytanie 2: SNMP TRAP vs INFORM Czym różni się TRAP od INFORM i jak zapewniona jest niezawodność? Odpowiedź: TRAP to UDP bez ACK. INFORM (RFC 3416) wymaga ACK (Response-PDU) i ponawia próby. Pytanie 3: Przewaga gNMI Jaka jest główna zaleta gNMI nad SNMP w centrach danych? Odpowiedź: Strumieniowanie Push z sub-sekundową ziarnistością i detekcją mikro-burstów przez Protobuf. Pytanie 4: Śledzenie portu po MAC Jakie tablice należy odpytać, aby powiązać MAC z ifDescr? Odpowiedź: dot1dTpFdbTable (MAC -> BridgePort), dot1dBasePortIfIndex (BridgePort -> ifIndex) i ifDescr.