www.SAMURAJ-cz.com 

26.04.2024 Oto Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

SNMP - Simple Network Management Protocol

Středa, 20.12.2006 15:09 | Samuraj - Petr Bouška |
Téměř každý slyšel o protokolu SNMP, o tom jak je výhodný a jednoduchý a jak je dobré jej využívat pro monitoring sítě. Ale již ne každý pořádně ví, o co se jedná a jak to funguje. Když jsem se podíval po internetu, tak jsem nenalezl žádný článek, který by stručně a jasně vysvětlil, oč se jedná. Proto jsem se o to pokusil já.

SNMP je jednoduchý, široce rozšířený a užitečný standardizovaný protokol, který slouží k získávání nebo nastavování hodnot na určitém zařízení. Obdobou je například WMI od firmy Microsoft. Podporu SNMP má velká řada zařízení, například aktivní síťové prvky, počítačová čidla, tiskárny, přístupové body nebo pomocí softwaru a ovladačů ji mohou získat osobní počítače a servery. Hodnoty můžeme získávat v pravidelném intervalu a ty pak jednoduše ukládat do databáze spolu s časem a následně vykreslit do grafu. Přehledně tak můžeme zobrazit třeba vytížení procesoru, průběh teploty nebo datový tok na portu přepínače.

Jak SNMP funguje

Protokol SNMP vyžaduje pro komunikaci dvě strany. Jednou entitou je správce (manager) a druhou agent. SNMP pracuje ve dvou režimech činnosti:

  • Správce posílá dotazy agentovi a přijímá odpovědi. Hodnoty tedy může získávat i více správců a mohou se ptát kdykoliv.
  • Agent zasílá oznámení (trapy) na adresu správce. V nějakých definovaných situacích (překročení nějaké hodnoty nebo i v pravidelném intervalu) odesílá agent jednomu správci hodnoty.

Protokol SNMP nyní existuje ve třech verzích. SNMPv1 a SNMPv2c používají pro autentizaci community string, v podstatě textové heslo. V SNMPv3 je možno využít autentizaci pomocí jména a hesla a šifrování.

SNMP používá pro komunikaci UDP protokol, díky čemuž je velmi rychlé, ale může dojít ke ztrátě (nedoručení) zasílané informace (paketu). Od verze 2 je implementována kontrola doručení, takže ke ztrátě by nemělo dojít. Standardně se používá port 161 (SNMP) na straně agenta (pro dotazy) a port 162 (SNMPTRAP) na straně serveru (pro trapy). Klient, který posílá dotaz, zvolí dynamický port, z kterého posílá dotaz na port 161. Agent odpovídá z portu 161 na dynamický port klienta. V praxi je pro každý dotaz použit jiný dynamický port.

SNMP paket

Dotaz a odpověď

verze community string PDU typ ID dotazu error status error ID OID hodnota

Příklad

1 public GET (0) 8 no error (0) 0 1.3.6.1.4.1.311.1.1.3.1.1.1 NULL

Pro trapy

verze community PDU typ enterprise agent IP gen trap spec trap čas objekt 1 hodnota 1 ...

Community string je heslo pro SNMPv1 a SNMPv2c, PDU typ je typ SNMP dotazu.

SNMP dotazy

Klasická komunikace, kdy posílám dotaz na jednu hodnotu a následně přijímám odpověď, probíhá následovně:

  • odešle se dotaz – nastaví se typ GET, zadá se OID pro zjišťovanou hodnotu, vlastní hodnota se nastaví na NULL
  • vrátí se odpověď – typ je nastaven na RESPONSE (2), OID na dotazovanou hodnotu a je vyplněna hodnota

Další možné typy dotazů jsou SNMP GET (0) – vrátí jednu hodnotu, GET-NEXT (1) - vrátí další hodnotu (vezme následující OID za zadaným). Od verze 2 GET-BULK, který vrací více hodnot najednou (například pro všechny porty přepínače). Pomocí SNMP můžeme hodnoty nejen číst, ale také zapisovat, k tomu slouží typ SET. Trapy mají trochu jiný formát paketu, jako typ je TRAP. Ještě jsou speciální typy NOTIFICATION, INFORM a REPORT.

MIB databáze – Management Information Base

Každá hodnotaSNMP je jednoznačně identifikována pomocí číselného identifikátoru OID - Object Identifier. OID je tvořeno posloupností čísel oddělených tečkou, tato hodnota vznikne tak, že se vezme OID nadřazeného prvku a doplní se tečka a aktuální číslo. Celá tato stromová struktura je uložena v MIB databázi. Navíc MIB databáze obsahuje jména a popisy jednotlivých hodnot (OID). MIB databáze může být doplněna o další hodnoty pomocí části struktury uložené v MIB souboru.

Příkladem OID může být třeba hodnota 1.3.6.1.2.1.2.2.1.6.1, které odpovídá textová verze z MIB databáze iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifPhysAddress.

Pro vlastní práci se SNMP nepotřebujeme MIB databázi, v SNMP paketu figuruje pouze OID, ale pokud neznáme správné OID, tak nám databáze může pomoci k jeho dohledání.

Pohled na MIB databázi

Software pro SNMP

MIB Browser je velice dobrý a užitečný program pro prohlížení MIB databáze s možností přidávání MIB souborů a dotazů na zařízení. Druhým užitečným programem je Paessler SNMP Tester, který sice neobsahuje MIB databázi, ale má zase několik funkcí navíc. Dovede provádět dotazy v SNMPv1, SNMPv2c i SNMPv3 a také má užitečnou funkci SNMP WALK pro výpis všech OID daného zařízení.

zobrazeno: 110151krát | Komentáře [38]

Autor:

Související články:

SNMP

Protokol SNMP (Simple Network Management Protocol) je velice užitečný pro správu počítačové sítě.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

  1. [1] Tulinko

    Je to pecka článek o SNMP!!;-)Dost mi pomohl!!:-)

    Úterý, 06.02.2007 08:16 | odpovědět
  2. [2] Samuraj

    odpověď na [1]Tulinko: Děkuji, takovýhle komentář vždy potěší :-). Samotnému mě dalo práci pořádně pochopit, jak SNMP funguje a přitom je to tak jednoduché ;-).

    Úterý, 06.02.2007 10:42 | odpovědět
  3. [3] Tulinko

    My musíme mít totiž o tom takou jako by seminární práci!!A každý si musel vybrat jeden z protokolů, tak jsem si vybral SNMP!!:-) a mám to už hotové, tak teď jen čekám na vyhodnocení!!:-)tak děkuji za dobré zpracování na této stránce!!;-)

    Čtvrtek, 08.02.2007 11:03 | odpovědět
  4. [4] Jech flash-dc.net

    Článek mi také pomohl .. díky .. a přídám si tě mezi RSS :).

    Úterý, 13.03.2007 23:14 | odpovědět
  5. [5] Tomick

    Moc pekně popsané, konečně jsem to pochopil :) Dík

    Sobota, 02.06.2007 15:52 | odpovědět
  6. [6] Čochtan

    Výborný článek. Díky moc.

    Čtvrtek, 31.01.2008 22:20 | odpovědět
  7. [7] Frantisek Urbanek

    Zajimalo by mne, zda a jak se daji resit kolize v MIB databazich, pokud nejaky vyrobce zarizeni ma stejne cislo OID jako jiny. Musim pak nejak resit od jakeho agenta mam tuto zpravu? Diky.

    Úterý, 28.10.2008 15:01 | odpovědět
  8. [8] Samuraj

    odpověď na [7]Frantisek Urbanek: Kolize by nastávat neměli a já se s žádnými nesetkal. Ale i kdyby se objevili, tak to není žádný problém. MIB databáze slouží spíše pro referenci a pro formát návratových (a hlavně výčtových) hodnot. Pokud posílám na nějaké zařízení dotaz s nějakým OID, tak prostě dostanu odpověď a je mi jedno, že jiné zařízení má pod tímto OID jiné hodnoty.

    Středa, 29.10.2008 16:48 | odpovědět
  9. [9] Frantisek Urbanek

    Diky za odpoved. Myslel jsem to (ciste teoreticky) tak, ze pokud mam nejake zarizeni, kde treba monitoruju zatizeni CPU pomoci OID 1.2.3.4.5 a nekdo mi to zarizeni vymeni a tam bude pro 1.2.3.4.5 treba pocet odeslanych paketu, tak se nebudu stacit divit ;-)

    Pátek, 31.10.2008 10:34 | odpovědět
  10. [10] cowee

    Díky moc, radim se k tem, co o SNMP vedeli kulovy a diky tobe tomu tak jiz neni ;-)

    Úterý, 04.11.2008 13:41 | odpovědět
  11. [11] Chulda

    odpověď na [9]Frantisek Urbanek: Kazdy vyrobce ma vlastni OID, takze ke kolizim by nemelo dojit. A ani neni moc duvod, proc pouzivat cizi MIBku jinym zpusobem. U beznych zarizeni jsem se s tim jeste nesetkal.

    Úterý, 11.11.2008 15:02 | odpovědět
  12. [12] Filip Merhaut

    Výborný článek :-)

    Středa, 26.11.2008 12:26 | odpovědět
  13. [13] noe

    Diky za supr clanek! :-)

    pekny obrazek paketu je na : http://www.rane.com/note161.html

    Neděle, 30.11.2008 13:42 | odpovědět
  14. [14] Samuraj

    odpověď na [13]noe: Pěkný popis.

    Já nejradši pro rozebrání paketu používám Wireshark, kterým si zachytím komunikaci a pak si můžu paket pěkně prohlédnout na skutečných datech.

    Neděle, 30.11.2008 14:07 | odpovědět
  15. [15] David

    Ahoj, super clanek. Ja bych potřeboval v Linuxech na jednom PC mít nainstalovaného managera a na druhém PC agenta a monitorovat z PC s agentem třeba teplotu procesoru a ten by mi to posílal na PC kde je nainstalovaný manager. Musím něco v agentovy nastavovat aby mi tyto informace posílal po síti nebo se nastavuje v managerovy ip adresa dotazovaného PC a OID. A ještě bych poprosil o informaci jestli agent i manager jsou součástí jednoho balíčku(a musim pak akorát neják speifikovat ktreý PC je manager) nebo se instalují každý jednotlivě(popřípadě jestli by jste mi napsal název demona, který pracuje jako agent a demona , ktery pracuje jako manager pro linux)? Díky moc za odpověď

    Neděle, 30.11.2008 19:44 | odpovědět
  16. [16] Samuraj

    odpověď na [15]David: Na začátek. Nepracuji s Linuxem, takže mohu poradit pouze jak to chodí pod Windows (ale obecně to bude podobné). To, čeho chcete dosáhnout, je možné, ale ...

    Ve Windows (stanice/server) je pro zprovoznění SNMP agenta potřeba doinstalovat komponenty. Jsou to dvě služby (daemon) SNMP Service a SNMP Trap Service. SNMP Service nakonfigurujeme (nastavíme autentizaci a které části SNMP povolíme). Podle typu stanice/server a služeb se automaticky zprovozní určité MIB (skupiny běžných OID), na které pak počítač odpovídá nebo může odesílat trapy (to jsem nikdy nezkoušel). Podrobnosti se dají nalézt u MS (nebo stačí vyzkoušet, některá běžná OID).

    Složitější je druhá strana, tedy SNMP správce. Asi ani nemůže existovat nějaká univerzální služba, protože existuje ohromné množství variant, co a jak chceme dělat. Pro testování načítání hodnot můžeme použít MIB Browser nebo NetSNMP. Pro pouhé ukládání nebo zobrazování hodnoty na webové stránce můžeme použít jednoduchý skript nebo malý prográmek v PHP. Ale pro serióznější práci potřebujeme nějaký monitorovací nástroj, který pak zobrazuje i grafy nebo reaguje na načtené hodnoty. Příkladem takových programů je Cacti, Nagios, HP SIM a další. Při konfiguraci ve správci je třeba znát IP agenta, OID, autentizační údaje.

    Pondělí, 01.12.2008 09:53 | odpovědět
  17. [17] GrayLite

    Přesně popis jak má bejt....stručnej a výstižnej! Díky moc za tenhle článek :-)

    Čtvrtek, 19.02.2009 18:11 | odpovědět
  18. [18] Lazna

    Prave jsem na jednu Win masinu nainstaloval balik net-snmp a pokousim se vycitat vytizeni procesoru. Jsem ale uplne zmatenej z MIB a OIDs.

    Pochopil jsem z toho, ze net-snmp pouziva jakysi UCDavis podstrom a napriklad vytizeni procesoru by melo byt na vetvi ".1.3.6.1.6.3.16.1.5.2.1.6.6.95.110.111.110.101.95.1.2" ale to mi vraci v MibBrowseru stale cislo 1 a v snmpget.exe jakousi chybu

    c:>snmpget -v2c -c public 10.0.1.9 .1.3.6.1.6.3.16.1.5.2.1.6.6.95.110.111.110.101.95.1.2

    Unlinked OID in HOST-RESOURCES-MIB: host ::= { mib-2 25 }

    Undefined identifier: mib-2 near line 9 of C:/usr/share/snmp/mibs/hostmib.mib

    SNMP-VIEW-BASED-ACM-MIB::vacmViewTreeFamilyStatus."_none_".1.2 = INTEGER: active(1)

    Jak se da zjistit, ktere OID vydava hodnotu vyuziti procesoru? Surfoval jsem po strankach MS, ale neco mi rika, ze net-snmp implementace si bude brat od systemu data a muze je cpat do sveho stromu, ktery se muze od toho MS stromu lisit. Na Wiki projektu net-snmp jsem tez zadny se znam OIDs pro Windows port nenasel...

    Mozna by to jeste chtelo clanecek na tema MIBs a OIDs..

    L:

    Pondělí, 23.02.2009 17:06 | odpovědět
  19. [19] Samuraj

    odpověď na [18]Lazna: NetSNMP jsem vždy používal pouze jako klienta a ne jako server. Na stránkách jsem našel, že tam nějaký daemon je, ale nevím jaké informace dokáže ze systému získat. Standardně se ale používá SNMP služba od MS, které je přímo ve Windows.

    MIB databáze = OID strom, jeho základní struktura je dána standardizační organizací, takže se "nemůže" lišit. Nejpoužívanější podstrom je .1.3.6.1 (iso.org.dod.internet). Pod ním se nachází určité společné podstromy, které mají pomoci získávat stejné hodnoty z různých systémů stejnou cestou. Další podstromy jsou přiděleny přímo jednotlivým výrobcům, které používají pro své proprietární účely.

    Najít OID pro určitou hodnotu není jednoduché. Obecně nám k tomu MIB soubory výrobce nebo přímo MIB databáze, v které se ale nedá zrovna jednoduše hledat. Takže většinou je lepší hledat na netu, ale ani to není jednoduché.

    Zatížení procesoru z Windows (MS služba) by mělo být na OID .1.3.6.1.2.1.25.3.3.1.2 (host device processorLoad). MIB je třeba www.oidview.com/mibs/0/HOST-RESOURCES-MIB.html. Myslím, že jsem kdysi četl, že Windows to za určitých podmínek nezobrazují správně.

    Pondělí, 23.02.2009 18:21 | odpovědět
  20. [20] david

    Super článek, díy moc. Avšak mám dotaz, potřeboval bych monitoring celé sítě, resp. aby šlo vidět nejlépe v grafech jaká stanice vysílala, přjímala, kolik přenesla a v jaký čas a pokud možno kam. Neznáte někdo něco takového?

    Neděle, 19.07.2009 22:00 | odpovědět
  21. [21] Samuraj

    odpověď na [20]david: Nejlépe by to asi splňovala technologie NetFlow (i když záleží na detailech, do kterých chcete jít). O NetFlow snad taky něco napíšu nebo stačí kouknout na webu.

    Pondělí, 20.07.2009 08:17 | odpovědět
  22. [22] david

    Ahá děkuju za odpověď, teď jen zjistit, žda-li cisco ASA 5505 nebo 5510 tuto technollogii podporuje, věřím že ano

    Pondělí, 20.07.2009 18:57 | odpovědět
  23. [23] Samuraj

    odpověď na [22]david: NetFlow se používá hlavně na routerech. Takže spíš bych to hledal na centrálním prvku, kterým routujete VLANy.

    Úterý, 21.07.2009 08:07 | odpovědět
  24. [24] david

    VLANy routujeme právě přes ASU 5505. Zkusím se podívat zda-li podporuje netflow. Děkuji

    Čtvrtek, 23.07.2009 08:09 | odpovědět
  25. [25] david

    Musím říci, že se trafic značně snížil tím, že jsem zrušil telnet a nyní mi chodí třeba i 500 reportů denně o snažení připojení k portu 23. Přece jen telnet je slaběji zabezpečen než SSH.

    Čtvrtek, 23.07.2009 08:13 | odpovědět
  26. [26] za

    na monitoring site neni potreba netflow, staci kupr ASUS 500gp router v nema nahrany DD-WRT firmware a aplikace wallwatcher (z asus-u se posila kompletni log prenosu skrze nej - rozumej ne obsah ale pouze kdo s kym na jakem portu ;) a loguje se to do databaze :) cisco je trosku jinde s cenou ;)

    Sobota, 09.01.2010 10:06 | odpovědět
  27. [27] Josef Semrad

    Moc děkuji za detailní vysvětlení SNMP komunikaci. Moc děkuji za pomoc a poporu.

    Čtvrtek, 21.07.2011 10:07 | odpovědět
  28. [28] Daxxim

    odpověď na [20]david: zkuste Zenoss

    Neděle, 18.12.2011 18:09 | odpovědět
  29. [29] Voda

    Pěkný článek, jen jsem se tu nedozvěděl, jaký je rozdíl mezi objektem OID a instancí OID. Náš vyučující na sítě to chce v testu vědět, ale nikde jsem o tom nic nenašel. Mě jako programátorovi připadá objekt a instance úplně stejné...

    Středa, 08.02.2012 13:24 | odpovědět
  30. [30] Michal

    Chvály bylo dost, ale i tak se k ní musím přidat. Pěkně a jednoduše napsáno. Málo kde se najde něco napsané jak pro blbce, aby to pochopil každý.

    Ale trochu kritiky - míchají se tu pojmy: Agent, Klient, správce, server. Trochu jsem se v tom ztrácel a hledal jsem co jsou sysnonyma.

    Pondělí, 14.01.2013 19:06 | odpovědět
  31. [31] Samuraj

    odpověď na [30]Michal: Díky :-).

    SNMP využívá klasický princip klient-server. Na klientovi běží agent a na serveru manager. Trochu matoucí může být, že tradičně zjišťujeme informace ze serverů, ale z pohledu SNMP o nich mluvíme jako o klientech.

    Úterý, 15.01.2013 15:34 | odpovědět
  32. [32] Dinamit

    Perfektní článek. V několika řádcích řečeno vše :o) Hodně mi pomohl. Díky

    Pátek, 08.02.2013 11:08 | odpovědět
  33. [33] Michal Mada

    DAkujem za mnohe clanky, snazim sa vyucovat siete na jednej strednej skole a niektore veci mi dost pomohli

    Sobota, 08.02.2014 16:19 | odpovědět
  34. [34] PO

    Chtěl bych se zeptat, jaký se dá použít software na sbírání SNMP od UPS ? Potřeboval bych monitorovat baterii, teplotu, popřípadě ještě nějaké další informace přes s´tový kabel.Všechny UPS jsou připojené na síti. Ať už placený či ne. Děkuji za případné info

    Středa, 26.02.2014 11:49 | odpovědět
  35. [35] Petr

    Oodpověď na [34]PO: : Na Linuxu doporučuji Network UPS Tools (NUTS) - upsstats.

    Úterý, 11.03.2014 13:19 | odpovědět
  36. [36] Jaroslav Crha

    Dobrý den,

    mám dotaz, mám nainstalovaný ovladač tiskárny Xerox, který přes protokol SNMP posílá na tiskárnu get-request 1.3.6.1.2.1.25.3.2.1.5.1 a tím neustále probouzí ventilátor na CPU v tiskárně. Když vypnu správu tisku tak přestane toto posílat, tiskárna nehučí, ale já nemohu tisknout. Po opětovném zapnutím, začne opět tiskárnu každou minutu pingovat jestli tam je. Mám Win7. Lze nějakým způsobem zasáhnout a snížit alespoň počet dotazů na minimum? Kde a jak to nastavím? Peerblock mi SNMP protokol nezablokuje, nevíte třeba jakým programem tuto síťovou komunikaci zablokovat? Windows firewall i SNMP protokol jsem vypnul, ale pakety z meho počítače chodí dál.

    mail na mě je jaroslav.crha(zavináč)post.cz

    Čtvrtek, 16.01.2020 17:50 | odpovědět
  37. [37] Ruda

    odpověď na [34]PO: Zabbix

    Úterý, 20.07.2021 14:36 | odpovědět
  38. [38] Ruda

    Ahoj, odkazy na MIB jsou detus. Nebo chtějí podporu, MIB jsou až 10 let staré. Nemáte někdo aktuální zdroje?

    Úterý, 20.07.2021 14:57 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách