相应的数字表示(对象标识符OID,唯一标识一个MIB对象)为: 1.3.6.1.2.1.4.3
图2 MIB树结构 当网络管理协议在报文中使用MIB变量时,每个变量名后还要加一个后缀,以作为该变量的一个实例。如ipInReceives的实例数字表示为:1.3.6.1.2.1.4.3.0.
需要注意的是,MIB中的管理对象的OID有些需要动态确定,如IP路由表,为了指明地址202.120.86.71的下一站路由(next hop),我们可以引用这样的实例:
iso.org.dod.internet.mgmt.mib.ip. ipRouteTable.ipRouteEntry.ipRouteNextHop.202.120.86.71, 相应的数字表示为:1.3.6.1.2.1.4.21.1.7.202.120.86.71
对于这种动态对象标识的实例,由于无法转换为预先指定的Readkey名称,与飞邻的产品架构冲突(需要动态生成可变Readkey),暂不考虑支持。
SNMPv3:在安全性方面进行了增强。采用USM(基于用户--用户名和用户组)和VACM(基于视图)的安全加密控制。
报文格式:
整个消息可以所以认证机制,并对EnginID、ContextName、PDU消息体部分进行加密。 RequestID、MaxSize、Flags、SecurityModule、SecurityParameters构成SNMPv3的消息头 主要字段意思:
SecurityParameter:安全参数包括以下字段。 AuthoritativeEngineID:消息交换中权威SNMP的snmpEngineID,用于SNMP实体的识别、认证和加密。该取值在Trap、Response、Report中是源端的snmpEngineID,对Get、GetNext、GetBulk、Set中是目的端的snmpEngineID。
AuthoritativeEngineBoots:消息交换中权威SNMP的snmpEngineBoots。表示从初次配置时开始,SNMP引擎已经初始化或重新初始化的次数。
AuthoritativeEngineTime:消息交换中权威SNMP的snmpEngineTime,用于时间窗判断。
UserName:用户名,消息代表其正在交换。NMS和Agent配置的用户名必须保持一致。
AuthenticationParameters:认证参数,认证运算时所需的密钥。如果没有使用认证则为空。
PrivacyParameters:加密参数,加密运算时所用到的参数,比如DES CBC算法中形成初值IV所用到的取值。如果没有使用加密则为空。
encrypte:加密的。 2、下面根据实际操作,用Wireshark抓取的报文来讲解SNMPv3协议的工作的过程:
说明:192.168.2.110是NMS的ip地址,192.168.2.1是Agent的ip地址
(1)由于SNMPv3进行数据交互的过程中要进行加密和认证,所以NMS首先要从Agent获取AuthoritativeEngineID(标识一个SNMP实体)、AuthoritativeEngineBoots和AuthoritativeEngineTime(同步NMS和Agent时间,保证消息接收的时效性,同时也是用来进行数据认证和加密的参数),如下图2:
图2 (2)Agent回复NMS请求的参数,回复报文如下图3: 图 3 (3)NMS继续向Agent获取AuthoritativeEngineBoots和AuthoritativeEngineTime参数,如下图4: 图4 (4)Agent对NMS的请求进行响应,如下图5: 图5 (5)下面开始正常数据操作,如下图6: (6)Agent向NMS响应数据请求,如下图7,传输的数据都进行了加密,可见SNMPv3的安全性: 图7 |