SNMP Nedir?
SNMP UDP ile çalışır. Mantıksal olarak "Uygulama Katmanı" seviyesindedir. Yani HTTP ile aynı seviyededir. SNMP router ve switch gibi cihazlarda genellikle kurulu gelir. Windows/Linux sunucularına kurmak gerekir. SNMP yerine Windows dünyasında WMI da kullanılır.
MIB Nedir
Açıklaması şöyle. Nesnelerin tanımlarının saklandığı veritabanı gibi düşünülebilir.
Örnek
Sıkça kullanılan sysUpTime şöyledir.
SNMP Daemon
Çalışıyorsa logları /var/log/snmpd.log dosyasından görülebilir.
Belirtilen OID'lere okuma hakkı /etc/snmp/snmpd.config dosyasında şöyle verilir.
SNMP Mesaj Tipleri
SNMP v1 ile 5 tane mesaj tipi tanımlanıyor
1. SNMP GET
SNMP Manager tarafından SNMP Agent'a bilgi istemek için gönderilir.
2. SNMP GET NEXT
SNMP Manager tarafından SNMP Agent'a MIB'deki bir sonraki bilgiyi istemek için gönderilir.
3. SNMP GET RESPONSE
SNMP Agent tarafında SNMP Manager'a SNMP GET isteğine cevap olarak gönderilir.
4. SNMP SET
SNMP Manager tarafından SNMP Agent'a bir değeri atamak için gönderilir.
5. SNMP TRAP
SNMP Agent tarafından bir olay gerçekleşince gönderilir. UDP kullanılır.
SNMP v2 ile 2 tane ilave mesaj tipi tanımlanıyor
6. SNMP INFORM
SNMP Trap UDP tabanlı olduğu için kaybolabilir. SNMP IINFORM ile SNMP Manager'ın gönderilen mesaja onay vermesi beklenir. Açıklaması şöyle
7. SNMP GETBULK
SNMP Manager tarafından SNMP Agent'a büyük miktarda veri okumak için gönderilir.
SNMP ile Uygulamaları İzlemek
SNMP sadece cihazları değil uygulamaları izlemek için de kullanılabilir. SNMP ile aynı işi gören Java'da JMX teknolojisi var.
SNMPv3
Switch cihazlarında authpriv alanı şöyle yapılabilir.
SNMP'nin Bileşenleri
SNMP bileşenleri kabaca aşağıdaki gibidir.
OID
Object Identifier anlamına gelir. SNMP ağacı üzerinde erişilmek istenen alanı gösteren sayı dizisidir. OID nokta karakteri ile başlarlar. Eğer MIB dosyası mevcutsa, numaraların açıklamasını bulmak ta mümkündür. snmp4j kullanan bir örnek:
Protocol Data Unit anlamına gelir. Gönderilen istek paketi gibi düşünülebilir. PDU ile gönderilebilen en istekler GET, GETNEXT vs. gibi şeyler olabilirler. Get isteği gönderen bir PDU örneği:
Aşağıda ise PDU'nun mesaj yapısı var.
Variablebinding
PDU ile gönderilen anahtar/değer çiftlerini içerir.
Community String
SNMP Manager ve SNMP Agent tarafından kullanılan Community string aynı olmalıdır. İki çeşit community string vardır. Read-Only ve Read-Write
Böylece hangi SNMP bilgisine kimin erişebileceğini tanımlamak için kullanılabilir, ancak bu alan SNMP 1 ve 2 için şifresiz gönderildiğinden çok güvenli değildir.
Örnek:
TimeTicks
Bazı SNMP alanlarını değeri TimeTicks olarak belirtiliyor. Açıklaması şöyle
snmpwalk komutu
Bu komut ile OID'leri dolaşmak mümkün. Örnek:
community anlamına gelir. Default olarak public'tir.
-v seçeneği
Kullanılması istenen versiyonu belirtir.
SNMP UDP ile çalışır. Mantıksal olarak "Uygulama Katmanı" seviyesindedir. Yani HTTP ile aynı seviyededir. SNMP router ve switch gibi cihazlarda genellikle kurulu gelir. Windows/Linux sunucularına kurmak gerekir. SNMP yerine Windows dünyasında WMI da kullanılır.
MIB Nedir
Açıklaması şöyle. Nesnelerin tanımlarının saklandığı veritabanı gibi düşünülebilir.
Ağaç olarak bakınca şöyledir.SNMP MIB is a database containing the managed objects which a device will expose to SNMP via an SNMP agent. The MIB appears, at least externally, to be a tree structure.
Örnek
Sıkça kullanılan sysUpTime şöyledir.
iso(1).identified-organization(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysUpTime(3).
SNMP Daemon
Çalışıyorsa logları /var/log/snmpd.log dosyasından görülebilir.
Belirtilen OID'lere okuma hakkı /etc/snmp/snmpd.config dosyasında şöyle verilir.
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
# Full access from the local host
#rocommunity public localhost
# Default access to basic system info
rocommunity public default -V systemonly
# rocommunity6 is for IPv6
rocommunity6 public default -V systemonly
Ayrıca snmd'nin hangi kaynakları izleyeceği de bu dosyada belirtilir.SNMP Mesaj Tipleri
SNMP v1 ile 5 tane mesaj tipi tanımlanıyor
1. SNMP GET
SNMP Manager tarafından SNMP Agent'a bilgi istemek için gönderilir.
2. SNMP GET NEXT
SNMP Manager tarafından SNMP Agent'a MIB'deki bir sonraki bilgiyi istemek için gönderilir.
3. SNMP GET RESPONSE
SNMP Agent tarafında SNMP Manager'a SNMP GET isteğine cevap olarak gönderilir.
4. SNMP SET
SNMP Manager tarafından SNMP Agent'a bir değeri atamak için gönderilir.
5. SNMP TRAP
SNMP Agent tarafından bir olay gerçekleşince gönderilir. UDP kullanılır.
SNMP v2 ile 2 tane ilave mesaj tipi tanımlanıyor
6. SNMP INFORM
SNMP Trap UDP tabanlı olduğu için kaybolabilir. SNMP IINFORM ile SNMP Manager'ın gönderilen mesaja onay vermesi beklenir. Açıklaması şöyle
SNMP Inform RequestThe SNMP Inform Request feature supports sending inform requests. SNMP asynchronous notifications are usually sent as SNMP traps.Traps are less reliable than informs because an acknowledgment is not sent from the receiving end when a trap is received; however, an SNMP manager that receives an inform acknowledges the message with an SNMP response PDU. If the sender does not receive a response for an inform, the inform can be sent again.
SNMP Manager tarafından SNMP Agent'a büyük miktarda veri okumak için gönderilir.
SNMP ile Uygulamaları İzlemek
SNMP sadece cihazları değil uygulamaları izlemek için de kullanılabilir. SNMP ile aynı işi gören Java'da JMX teknolojisi var.
SNMPv3
Switch cihazlarında authpriv alanı şöyle yapılabilir.
authpriv = sha + aes256 veya
authpriv = md5 + des
SNMP'nin Bileşenleri
SNMP bileşenleri kabaca aşağıdaki gibidir.
OID
Object Identifier anlamına gelir. SNMP ağacı üzerinde erişilmek istenen alanı gösteren sayı dizisidir. OID nokta karakteri ile başlarlar. Eğer MIB dosyası mevcutsa, numaraların açıklamasını bulmak ta mümkündür. snmp4j kullanan bir örnek:
/** |
41 | * OID - .1.3.6.1.2.1.1.1.0 => SysDec |
42 | * OID - .1.3.6.1.2.1.1.5.0 => SysName |
43 | * => MIB explorer will be usefull here, as discussed in previous article |
44 | */ |
45 | String sysDescr = client.getAsString( new OID( ".1.3.6.1.2.1.1.1.0" )); |
46 | System.out.println(sysDescr); |
47 | } |
OID tanımlarını gösterren SNMP Object Navigator sayfaları da var. Örnek bir tanım şöyle
Object cefcModuleOperStatus
OID 1.3.6.1.4.1.9.9.117.1.2.1.1.2
Type ModuleOperType
1:unknown
2:ok
3:disabled
...
Permission read-only
Status current
MIB CISCO-ENTITY-FRU-CONTROL-MIB
Description This object shows the module's operational state.
PDUProtocol Data Unit anlamına gelir. Gönderilen istek paketi gibi düşünülebilir. PDU ile gönderilebilen en istekler GET, GETNEXT vs. gibi şeyler olabilirler. Get isteği gönderen bir PDU örneği:
80 | PDU pdu = new PDU(); |
81 | for (OID oid : oids) { |
82 | pdu.add( new VariableBinding(oid)); |
83 | } |
84 | pdu.setType(PDU.GET); |
85 | ResponseEvent event = snmp.send(pdu, getTarget(), null ); |
PDU ile gönderilen anahtar/değer çiftlerini içerir.
Community String
SNMP Manager ve SNMP Agent tarafından kullanılan Community string aynı olmalıdır. İki çeşit community string vardır. Read-Only ve Read-Write
Böylece hangi SNMP bilgisine kimin erişebileceğini tanımlamak için kullanılabilir, ancak bu alan SNMP 1 ve 2 için şifresiz gönderildiğinden çok güvenli değildir.
Örnek:
99 | CommunityTarget target = new CommunityTarget(); |
100 | target.setCommunity( new OctetString( "public" )); |
101 | target.setAddress(targetAddress); |
102 | target.setRetries( 2 ); |
103 | target.setTimeout( 1500 ); |
104 | target.setVersion(SnmpConstants.version2c); |
TimeTicks
Bazı SNMP alanlarını değeri TimeTicks olarak belirtiliyor. Açıklaması şöyle
The TimeTicks type represents a non-negative integer which represents
the time, modulo 2^32 (4294967296 decimal), in hundredths of a second
between two epochs. When objects are defined which use this ASN.1
type, the description of the object identifies both of the reference
epochs
Örneksnmpwalk -v2c -c xx 10.xx.xxx.xxx sysUpTime
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (170158257) 19 days, 16:39:42.57
snmpwalk komutu
Bu komut ile OID'leri dolaşmak mümkün. Örnek:
snmpwalk -v 2c -c public <ip address network device>
veya tüm ağacı dolaşmak yerine belli bir OID sorgulanabilir.snmpwalk -v 2c -c public <ip address network device> <OID>
OID yerine eğer MIB dosyaları yüklü ise MIB ismi kullanılabilir.snmpwalk -v1 -c public localhost DISMAN-EVENT- MIB::sysUpTimeInstance
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (458675) 1:16:26.75
-c seçeneğicommunity anlamına gelir. Default olarak public'tir.
-v seçeneği
Kullanılması istenen versiyonu belirtir.
Teşekkürler
YanıtlaSil