您现在的位置: IT培训 > CCIE > CCIE学习资料 > 正文

【CCIE考点Feature】SNMP

发布时间:2013-03-18 09:16:31

概述
当网络到一定规模的时候,对于网络管理员来说,要管理好这个网络,如果纯粹靠着命令行的方式去连接网络设备,去查看设备当前的状态,查看自己需要的信息,这些将变的烦琐而难以实现。在这样的环境下,很多人都在试图寻找一个网络管理软件,如果这个软件能够通过图形化的界面对设备状态进行监测,能够利用图形界面看到当前设备的各种参数,能够随时看到设备上发生的各种事件,这将大大改善管理员的工作效率。其实,这样的网络管理软件已经存在,在Cisco厂商主推荐的有CiscoWorks,CiscoWorks含有多个版本,既然一个管理软件能够图形化显示设备上的各种软硬件信息,那么在软件与设备之间就必须存在着一种交流,只有设备将自身的各种软硬件信息和状态发送给管理软件,那么管理员才能通过图形化界面看到这一切。在担任管理软件与设备之间交流的协议也就SNMP(简单网络管理协议)。
从上面可以看出,SNMP协议为两个组件在服务,这两个组件就是我们的网络设备和我们的网络管理软件,SNMP正是它们之间的桥梁。要让管理软件成功的利用图形界面为我们显示出设备的一切信息,就必须正确的理解和正确的配置SNMP。
SNMP工作在网络设备和网络管理软件这两个组件之间,SNMP将设备上的相关信息通告给管理软件,在配置SNMP时,配置了SNMP的网络设备被称为SNMP代理,而装了管理软件的主机被称为SNMP管理,也就是SNMP代理将自己的状态信息发送给SNMP管理,SNMP将其整理后,通过图形界面汇报给用户,并且SNMP管理上的相关软件被称为NMS(网络管理系统)。
在SNMP代理与SNMP管理之间,SNMP代理使用UDP 162,SNMP管理使用UDP 161。一个完整的SNMP共包含三个组件,除了以上说的SNMP代理和SNMP管理两个组件之外,还有一个组件就是MIB,这个MIB的具体内容就是,之所有SNMP管理能够图形化显示设备的一切,正是因为收到了SNMP代理发来的相关数据,而SNMP代理的所有硬件信息和软件信息,就全部存储在MIB里面。SNMP代理需要将MIB的内容发送给SNMP管理,才能对用户真正有用。
SNMP代理将MIB发送给NMS,可以使用两种数据包,这两种数据包分别是trap和informs。
他们之间的区别是,当设备上发生了各种事件之后,产生的MIB信息由SNMP代理主动向NMS发送,是不需要NMS请求的,并且在将MIB信息发送比值NMS之后,NMS即使收到了,也不需要向SNMP代理发送确认消息,也就是说SNMP代理发出去的trap是根本就不知道NMS是否收到,而自己发送完毕之后,这些MIB信息会马上删除,不会驻留在内存里面。
而informs和trap正好恰恰相反,当设备发生事件后,这些信息并不会主动向NMS通告,除非NMS发送requst来查询,然后才会发出去,但是这些已经发出去的informs在发送之后是会保留在内存里面的,当NMS收到informs之后必须向SNMP代理发送确认消息,如果不发送确认消息,SNMP代理会重复多次发送informs。从上可以看出informs具有可靠性。
网络管理员不仅可以通过NMS来查询设备上的各种信息,而且还可以通过NMS来更改设备上的配置,如果是要查询设备信息,发送的数据包被称为get,如果是要更改设备的配置,被称为set。
 
SNMP版本
SNMP协议目前为止分为3个版本,分别是version 1,version 2c,version3。
因为网络设备上配置SNMP之后,就可以利用NMS软件对设备进行查看和修改配置,但是为了安全性,所以在SNMP代理与SNMP管理之间必须存在着某种安全机制,这些安全机制,在各个版本上的实现是不一样的。
版本1:版本1在SNMP代理与SNMP管理之间提供的安全机制是使用密码的方式,只有拥有相应密码的NMS,才能够对SNMP代理进行操作,这种密码也分了级别,可以分别定义相应密码是否具有读权限或者是否同时具有读和写的权限。这样的密码被称为community。版本1不仅提供密码认证的方式,除此之外,还可以利用ACL的方式来限制只有某些主机能够对其进行访问,也就是说即使主机提供了相应的密码,同样不能够对设备进行操作,还必须IP地址是被允许的。
版本2c:版本2c的认证方式和版本1是一样的。
版本3:版本3提供的认证方式是使用用户名和密码的方式,并且密码可以是MD5加密的。
如果要让SNMP代理和SNMP管理正常的协同工作,必须将双方的版本配置一致。需要注意的是,一台已配置SNMP的设备,可以同时允许多个SNMP管理对其进行操作,那么这时就可以在设备上分别为每个SNMP管理配置各自的SNMP版本。
 
MIB
设备的所有信息都包含在MIB中,接口信息在MIB中共分三类:
1:ifIndex(ifEntry 1) (接口索引),  是接口在MIB中的区分唯一性的方法,这个值是大于0的。查看可使用命令:show snmp mib ifmib ifindex
2:ifAlias(ifXEntry 18) (接口别名),是用户给接口定义的名称,方便识别,在接口下description 定义。 snmp ifmib ifalias long命令用来扩展最长可用字符为256(默认64)。
别名是在show interfaces 时才看到。
3:ifName (ifXEntry 1)(接口名),即接口的原名,
所有信息在MIB中存储时,以词汇表的顺序编排,(即字典上A-Z)
所有软硬件在MIB库里,都有与自己相关联的标识,而这些标识,并不是永久不变的,有的可能因为重启后,就改变了,也可以通过配置使其固定不变。方法可以使用命令
snmp mib persist ,如果要保存,使用write mib-data 写入NVRAM。
让接口在MIB里固定使用某个信息,全局命令snmp mib persist circuit 来完成。
 
Event MIB(MIB事件)
MIB认为设备上的软硬件在多大的范围内变化可被认为是事件发生,这些采集方法可分为三种:
Absolute Sampling ,绝对采集也就是定义绝对变化多少之后 ,认为是事件
Delta Sampling  相对采集 定义从多少到多少这样一个变化范围,认为是事件
Changed Sampling
变化采集,只要变化便认为是事件,多用于硬件状态。
这些参数,对配置RMON时有用。
 
配置
注:没有一条特定的开启SNMP的命令,全部以snmp-server 打头的命令便开启了SNMP。
1.配置SNMP v1和V2
(1)配置ACL,通过此ACL,可以限制相应的IP才能访问SNMP代理:
r1(config)#access-list 10 permit 10.1.1.2        定义源IP为10.1.1.2的才能访问
(2)配置密码(即community)
说明:这个密码必须定义,并且需要说明通过这个密码,能够执行什么样的操作,操作分为读和读写。并且后面可以跟上ACL作源IP限制。
r1(config)#snmp-server community cisco rw 10   
注:源IP为ACL 10的主机通过密码cisco具有读写权限。
 
(3)配置trap(也可用informs代理)
说明:设备在默认情况下,许多事件是不进行记录的,如果要记录,就需要打开相应的事件记录功能。
r1(config)#snmp-server enable traps bgp
注:配置为记录BGP的事件,如果traps后面不跟参数,就为开启所有事件记录功能。
(4)配置对SNMP管理的trap(须已配置trap,否则无效)
说明:当配置完trap之后,相应的事件并不会对SNMP管理进行反馈,还必须手工指明对哪些主机进行反馈什么样的事件。在这里,对SNMP管理反馈的事件必须全局已配,而且还可以在此配置对相应主机要求的密码,SNMP版本等信息。
r1(config)#snmp-server host 10.1.1.100 version 2c cisco bgp
注:配置主机10.1.1.100使用密码cisco,并且向主机发送BGP事件信息,而且SNMP版本为2c。
某些trap不需要开,因为本身就是开启的,如果需要开启对接口状态的监控(即up和down状态的监控),需要使用如下命令:
r1(config)#snmp trap link-status  (此命令因IOS不同而命令有所不同)
(5)配置关闭系统功能
说明:通过NMS默认情况下不能对设备进行重启操作,如需开启重启的权限,需要额外配置:
r1(config)#snmp-server system-shutdown
(6)配置接口与MIB绑定:
 r1(config)#snmp-server ifindex persist
(7)配置MIB所有信息均绑定:
 r1(config)#snmp mib persist
 r1#write mib-data
说明:虽然没有一条特定的命令来开启SNMP服务,但有特定的命令可以关闭所有SNMP服务:
 r1(config)#no snmp-server
2.查看信息:
(1)查看SNMP总信息:
 r1#sh snmp
(2)查看与SNMP管理之间的会话
 r1#sh snmp sessions
(3)查看MIB所有软硬件信息
 r1#sh snmp mib:
(4)查看所有MIB中接口的信息(此信息对RMON有用)
 r1#sh snmp mib ifmib ifindex