概述
当网络到一定规模的时候,对于运维人员来说,需要维护好这个网络, 如果纯粹靠着命令行的方式去连接网络设备,去查看设备当前状态, 查看自己需要的信息,这些将变的烦琐而难以实现。在这种情况下,很多人都在试图寻找一种网络管理软件, 如果这种软件能够通过图形化的界面对设备状态进行监测,能够利用图形界面看到当前设备的各种参数,能够随时看到设备上发生的各种事件,这将大大减少运维人员的工作量提升工作效率。其实,这类的网络管理软件已经存在,而且不少,如国外知名软件厂商HP的Network Node Manageri( 简称NNMi)、十八摸的Tivoli、Solarwinds等,以及各路设备商自己开发网管软件如思科的DNA、瞻博的junos Space、H3C的iMC、华为的eSight等。
既然一个管理软件能够图形化显示设备上的各种软硬件信息,那么在软件与设备之间就必须存在着一种能够互相理解的交流语言,只有设备将自身的各种软硬件信息和状态发送给管理软件或者管理软件主动去向设备查询对方的各种软硬件信息和状态,那么管理软件才能把设备的信息数据以图形化的形式展现给运维人员,让运维人员了解网络的当前状况。在担任管理软件与设备之间交流的协议也就 SNMP(简单网络管理协议)。
从上面可以看出,SNMP分为两个组件在运行,这两个组件就是我们的网络设备和我们的网络管理软件,SNMP正是它们之间的桥梁。要让管理软件成功的利用图形界面为我们显示出设备的一切信息,就必须正确的理解和正确的配置SNMP。
SNMP工作在网络设备和网络管理软件这两个组件之间,SNMP将设备上的相关信息通告给管理软件,在配置SNMP时,配置了SNMP的网络设备被称为SNMP代理,而装了管理软件的主机被称为SNMP管理,也就是SNMP代理将自己的状态信息发送给SNMP管理,SNMP将其整理后,通过图形界面汇报给用户,并且SNMP管理上的相关软件一般被称为NMS(网络管理系统)。
在SNMP代理与SNMP管理之间,SNMP代理使用UDP162,SNMP管理使用UDP161。一个完整的SNMP共包含三个组件,除了以上说的SNMP代理和SNMP管理两个组件之外,还有一个组件就是MIB即管理信息库(Management Information Base),之所有SNMP管理能够图形化显示设备的一切,正是因为收到了SNMP代理发来的相关数据,而SNMP代理的所有软硬件状态信息,就全部存储在MIB里面。SNMP代理需要将MIB的内容发送给SNMP管理或者SNMP管理主动去查询MIB里的信息,最终才能将这些信息数据展现给用户。
SNMP代理将MIB发送给NMS,可以使用两种报文,这两种报文分别是snmptrap和snmpinform。
snmptrap和snmpinform的区别就是,当设备上的某些状态发生了变化或者某些状态超过了某个阀值的时候,产生的MIB信息由SNMP代理使用snmptrap报文主动向NMS发送,这种情况下是不需要NMS请求的,并且在snmptrap信息发送之后,NMS即使受到了,也不需要向SNMP代理发送确认消息,也就是说SNMP代理发出去的snmptrap是根本就不知道NMS是否收到,而自己发送完毕之后,这些MIB信息会马上删除,不会驻留在内存里。
而snmpinform和snmptrap正好恰恰相反,当设备发生状态变化后,这些状态变化描述信息并不会主动向NMS通告,除非 NMS发送snmprequst来查询,然后才会发出去,但是这些已经发出去的snmpinforms在发送之后是会保留在内存里面的,当NMS收到snmpinforms之后必须向SNMP代理发送确认消息,如果不发送确认消息,SNMP代理会重复多次发送 snmpinform,从上可以看出snmpinforms具有可靠性。
网络管理员不仅可以通过NMS来查询设备上的各种信息,而且还可以通过NMS来更改设备上的配置,如果是要查询设备信息,发送的数据包被称为get,如果是要更改设备的配置,被称为set。
SNMP 版本
SNMP协议目前为止分为3个版本,分别是version1,version2c,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版本。