Sledování sítě - SNMP, MRTG

Jan Orel, xorel(at)fi.muni.cz



SNMP - Simple Network Managment Protocol

SNMP je protokol sloužící ke spravování síťových prvků, vyvíjí se od roku 1988 a stal se de facto standardem pro management sítě. Kvůli jednoduchému návrhu je pro výrobce snadno implementovatelný. Navíc odděluje architekturu mamagmentu od samotného hardwaru, což umožňuje podporu velkého množství vyrobců.

SNPM protokol je typu klient-server.
Server - neboli agent je démon, běžící na každém monitorovaném zařízení v síti (switch, hub, router, server, ...). Má lokální informace o svém stavu a zpřístupňuje je klientům - managerům.
Manager je proces pomocí kterého může správce komunikovat s agenty a např. zjišťovat provoz na síti, konfigurovat parametry síťových rozhraní atd. Data mají agenti uložená v MIB.

MIB - Managment Information Base

MIB má stromovou strukturu, každý uzel stromu se nezýva objekt, nese nějakou dílčí informaci. Každý objekt musí mít jméno, syntaxi a kódování. Jméno (OID - object identifier) ho jednoznačně identifikuje, v podstatě jde o cestu od kořene k objektu v MIB stromu.

Příkladem může být objekt: atInput který říká kolik AppleTalk paketů přešlo přes dané síťové rozhraní. Objekt je identifikován jménem: iso.identified-organization.dod.internet.private.enterprise.cisco.temporary variables.AppleTalk.atInput nebo ekvivalentně číselnou hodnotou 1.3.6.1.4.1.9.3.3.1. Pomocí příkazu snmptranslate je možné překládat jméno z MIB stromu na jeho číselnou hodnotu. Např:

		% snmptranslate system.sysUpTime.0
		.1.3.6.1.2.1.1.3.0
	
nebo naopak
		% snmptranslate -On .1.3.6.1.2.1.1.3.0
		system.sysUpTime.0
	

Syntaxe objektu definuje datový typ nesené informace, může se jednat o jednoduchý typ např. integer (scalar object) nebo tabulku (tabular object). Kódování říká jak je informace v objektu uzpůsobená k přenosu mezi stroji. Struktura MIB je popsána v RFC 2013, bývá označována jako MIB-II. Definice MIB-II vychází z SMI, má 10 základních skupin: system, interfaces, at, ip, icmp, tcp, udp, egp, transmission, snmp. Syntaxe použitá v SNMP se nazývá Abstract Syntax Notation One - ASN.1

SNMP Protocol

Klienti (managers) mají k dispozici několik příkazů k získávání informací od agnetů: Get - požadavek na informaci, agent odpovídá Get-response. Get-next agent v odpovědi zahrne náseldníka požadovaného objektu, pokud existuje, a jeho hodntu. Set - změna hodnoty objetku. Trap - asynchronní zpráva od agenta, bez předchozího požadavku, agent tak například může hlasit chyby.

Každý agent přísluší do nějaké komunity, manager může být součástí více komunit, každá SNMP zpráva obsahuje číslo své verze, jméno komunity a data.

Bezpečnost

Ve verzích SNMPv1 a v2 je implementována bezpečnost jen na té úrovni, že v každá zpráva obsahuje v plain textu jméno komunity. Ve verzi 3 je možné použít autentizaci, řízení přístupu i přenášet data šifrovaně - podpora DES, AES a MD5, SHA1 prot zajištění integrity dat.

Konfigurace

Aktuální verze net-snmp je 5.2.1 a je dostupná na www.net-snmp.org Hlavní konfigurační soubor je možné vygenerovat pomocí příkazu snmpconf -g basic_setup po zodpovězení několika otázek. Nebo nakonfigurovat ručně:
		
		#    1) přiřazení community k security
		#       sec.name       source        community
		com2sec notConfigUser  default       public
		com2sec labUser        10.0.0.01/16  public
		com2sec anyThoe        10.0.30.1/8   thoe

		#    2) přiřazení security ke skupině
		#       groupName      securityModel securityName
		group   notConfigGroup v1            notConfigUser
		group   labGroup       v2c           labUser
		group   ThoeGroup      v2c           anyThoe

		#    3) přiřazení views 
		#       name           incl/excl     subtree         mask(optional)
		view    systemview     included       .1.3.6.1.2.1.1
		view    mib2           included       .iso.org.dod.internet.mgmt.mib-2
		view    all            included       .1
		 
		#    4) přiřazení prav přístupu ke skupině
		#       group          context sec.model sec.level prefix read       write  notif
		access  notConfigGroup ""      any       noauth    exact  systemview none   none
		access  labGroup       ""      any       noauth    exact  mib2       none   none
		access  ThoeGroup      ""      2c        noauth    exact  all        all    none

	

MRTG - Multi Router Traffic Grapher

MRTG je nástroj generující grafický výstup z dat získaných SNMP, původně sloužil jen k monitorování zaítžení sítě, ale můžeme ho použít např. k zjištění zatížení procesru atp. Jako parametr se předá konfigurační soubour. Pro vygenerovani konfiguračního soubrou můžeme použít utilitu

		cfgmaker <community string>@<hostname>
	
Detailní popis konfigurace lze nalézt zde

Nagios

Nagios slouží k monitorování služeb v sítí, pravidelným dotazováním na ně. Pokud se objeví problém, démon o tom může podat zpráv správcům prostřednictvím e-mailu, sms atd, také může zpřístupňovat informace přes web.

Podrobný popis konfigurace lze nalézt zde.

Scotty

Scotty je softwarový balík, ktery umožňje vyvíjet software pro management sítě, pužívá Tool Command Language, což je intermpretovaný jazyk použivaný na platrofmách Unix, Windows a Apple. Může používat násl. protokoly : SNMP (SNMPv1, SNMPv2c, SNMPv2u including access to MIB definitions), ICMP, DNS, HTTP, SUN RPC, NTP, UDP.

Odkazy