SNMP当前有三个版本,分别是SNMP v1、v2、v3。SNMP v1、v2有很多共同特征,但是SNMP v2在版本上得到了增强,例如额外的协议操作。SNMP v3在先前的版本的基础上增加了安全和远程配置能力。为了解决不通版本的兼容性问题,RFC3584定义了共同策略。以下针对每一个版本一一介绍:

  SNMP v1是最初实施SNMP协议。SNMP v1运行在像UDP,ip,OSI无连接网络服务(CLNS),DDP(AppTalk Datagram-delivery),IPX(Novell Internet Packet Exchange)之上,SNMP v1广泛使用成为internet上实际的网络管理协议。

  SNMP是一种简单的request/respond协议。网络管理系统发出一个请求,被管理设备返回响应。这些行为由四种协议操作组成:

  GET,GetNext,Set和Trap。Get操作使用NMS来获取agent的一个或多个对象实例。如果agent返回get操作不能提供列表所有对象实例的值,就不能提供任何值。GetNext操作是NMS用来从agent表中获取表中下一个对象实例。Set操作NMS用来设置agent对象实例的值。Trap操作用于agent向NMS通告有意义的事件。

  现在版本一不是没有自己的问题。版本一的主要问题是对消息源的验证,保护消息不会被泄露和对MIB的访问控制包括配置,状态,消息统计存储到数据库。

  SNMP v2是1993年设计的,是v1的演进版本。Get,GetNext和Set操作相同于SNMP v1。然而SNMP v2增加和加强了一些协议操作。在SNMP v2中,如果再get-request中需要多个请求值,如果有一个不存在,请求照样会被正常执行。而在SNMP v1中将响应一个错误消息。在版本一中,Trap消息和其他几个操作消息的PDU不同。v2版本简化了trap消息,使trap和其他的get和set消息格式相同。

  SNMP v2还定义了两个新的协议操作:GetBulk和Inform。GetBulk操作被用于NMS高效的获取大量的块数据,如表中一行中的多行。GetBulk将请求返回的响应消息尽量多的返回。Inform操作允许一个NMS来发送trap消息给其他的NMS,再接收响应。在SNMP v2,如果agent响应GetBulk操作不能提供list中的全部变量的值,则提供部分的结果。

  SNMP v2最后的部分是改善安全,导致了SNMP v2的各个变种。从此,实际上SNMP v2有几个不同的“SNMP v2”,那其实有好几个SNMP v2的消息格式。但更糟糕的是原来模型中的SNMP消息并没有得到挽救。从SNMP v1中的SNMP v2中的协议操作导致SNMP v2 PDU的格式也必须改变。然而,这些协议操作在所有的SNMP v2变种中都必须相同。SNMP v2各个变种之间的不同在于安全的实施。因而各个SNMP v2变种之间的PDU都有相同的格式,而总的消息格式又都不同。

  现在,在新发行的版本考虑了令v2版本恐慌的问题。SNMP v3结构增加了安全和管理能力,从而增强了其他版本功能。

  SNMP v3在前面的版本上增加了安全能力和远程配置能力,SNMP v3结构为消息安全和VACM(View-base Access Control Model)引入了USM(User-based Security Model)。这个结构支持同时使用不同的安全机制,接入控制,消息处理模型。SNMP v3 也引入了使用SNMP Set命令动态配置SNMP agent而不失MIB对象代表agent配置。

  以下针对SNMP v3配置步骤进行详细说明:

  Router:

  Route(config)#snmp-server community  RO/RW

  Route(config)#snmp-server user   v3 authen md5 < authen password> priva aes 128 

  Route(config)#snmp-server group  v3 authen/priva

  Route(config)#snmp-server host A.A.A.A inform version authen 

  Route(config)#snmp-server host A.A.A.A traps version 3 priva 

  Route(config)#snmp-server engineID remote A.A.A.A upd-port 162 

  Route(config)#snmp-server enable traps

  Layer2 Switch:

  Route(config)#snmp-server community RO/RW

  Route(config)#snmp-server user  v3 authen md5  priva des56 

  Route(config)#snmp-server group  v3 authen/priva

  Route(config)#snmp-server host A.A.A.A inform version 3 authe 

  Route(config)#snmp-server host A.A.A.A traps version 3 priva 

  Route(config)#snmp-server engineID remote A.A.A.A upd-port 162 

  Route(config)#snmp-server enable traps

  提示:IOS版本需要带加密功能。按照上面步骤顺序来配置,如果先配置了组名,后配置用户名的话,会在show run | begin snmp 里发现snmp-server group XXX v3 read notify这条命令中多了read,会出现这种情况:Solarwinds0.0版本使用snmp v3版本可以连接上交换机,但是却无法得到任何接口信息,如果要去掉read,将snmp-server group v3 auth/priva这条命令再敲一遍就行了,这样Solarwinds就能获取到交换机上的接口信息了。另外,当配置好团体名之后,交换机会默认开启v1和v2版本的组,配置好v3版本之后,记得将v1和v2版本的组去掉。