解剖SNMP:
首先把SNMP解个小剖.SNMP分为SNMP管理器(服务器),SNMP代理(客户端),MIB(数据库).
SNMP管理器是用SNMP控制和监视网络主机活动的系统。最常见的是NMS。具体产品见CiscoWorks2000.
SNMP代理是被管理设备的软件部分,维护和报告设备的数据给管理系统。比如ADSL里面的SNMP客户端就是SNMP代理的一种.
MIB是用于网络管理信息的虚拟信息存储区,包括管理对象的集合。MIB模块是由SNMP MIB模块语言写成。SNMP代理包括了MIB变量,SNMP管理器可以通过Get或者Set操作来请求或者修改设备参数。管理器可以从代理读取值或者存储值到代理。代理从MIB中收集数据,MIB是设备参数和网络数据信息的仓库。老是有客户要MIB文件,其实就是个数据结构模型.
SNMP管理器》获取或者设置SNMP代理MIB值
SNMP代理》response和traps给SNMP管理器
(WhileI’m writing, gossip really takes me a lot of time. There is no need to regret about it now, just continue my network studying. Because my regret will waste my time further)
SNMP怎么运行的?
SNMP使用UDP端口161来发送和接受请求,端口162来接受被管理设备的Traps.
SNMP使用下面运行来获取数据,修改SNMP对象变量和发送通知。Get/Set/Send notification
SNMP Get: NMS用来获取SNMP对象变量。分为三种:
Get-从SNMP代理中获取精确对象
GetNext-获取下一个对象变量,指定变量的下一个,按照特定顺序。
getBulk-获取大量对象变量值,免得重复GetNext。
SNMP Set:NMS用来修改对象变量值。
SNMP notification:SNMP代理可以主动提供通知。
Traps和informs
主动通知可以以traps或inform request形式生成。Traps是用来提醒SNMP管理器网络情况的消息。Informs是包括证实SNMP管理器收到请求的traps。通知可以用来显示不当用户认证,重启,连接关闭,与邻居路由器连接中断或者其它重要事件。
Traps没有informs可靠,因为traps,接收者在收到traps后不需要发送确认。发送者不知道trap有没有收到。SNMP收到inform后,使用SNMP response PDU确认。如果发送者没有接收到response,将会重新发送inform。Traps是UDP,Informs是TCP。
通常情况下,还是选择用traps,因为informs太耗网络和路由器的资源。不像trap一样,发出去后就完事了,但是inform发出去后,必须留在内存了,直到Response或者请求时间到。Traps只发一次,inform会重发,从而增加流量。实际使用,还是要看具体情况,就像使用UDP还是TCP一样。
MIBs和RFCs
MIB模块主要是在RFC文档里面定义的。思科使用的是RFC 1213描述的MIB II变量和RFC 1215里面的SNMP Traps。
SNMP版本
SNMPv1:RFC1157,安全是基于community string
SNMPv2c:基于community string的管理框架。
以上两个版本使用community概念来建立管理器和代理之间的信任。代理配置三种community名字:read-only, read-write和trap,其实就是相当于密码的使用。
SNMPv3:定义在RFC3413到RFC3415。提供了安全访问设备,因为认证和加密了数据包。
安全性体现在:消息完整性,认证,加密
SNMPv1和SNMPv2c使用了community形式安全。
转载于:https://blog.51cto.com/muziyiwu/703038