西门子网络协议详解:SNMP协议
SNMP协议简介随着网络技术的飞速发展,企业中网络设备的数量成几何级数增长,网络设备的种类也越来越多,这使得企业网络的管理变得十分复杂。简单网络管理协议SNMP(Simple Network Management Protocol)可以实现对不同种类和不同厂商的网络设备进行统一管理,大大提升了网络管理的效率。网管系统模型SNMP包括NMS,Agent和MIB等Agent是被管理设备中的一个代理进程。MIB是一个数据库,它包含了被管理设备所维护的变量。SNMP协议栈SNMP协议位于TCP/IP参考模型的应用层SNMP通过UDP/IP进行数据传输。SNMP协议模型SNMP就是用来规定NMS和Agent之间是如何传递管理信息的应用层协议。网关站(NMS)对网络设备发送查询报文,并接收来自被网关设备的响应及陷阱(Trap)报文。代理(Agent)是运行在被管理设备上的代理进程。被管理设备在接收到NMS发出的请求后,由Agent作出响应操作。Agent的主要功能包括:收集设备状态信息、实现NMS对设备的远程操作、向NMS发送告警消息。MIB(Management Information Base)管理信息数据库(MIB)是一个信息存储库,其中包含分属不同组的许多个数据对象。MIB数据对象以一种树状分层结构进行组织,这个树状结构中的每个分枝都有一个专用的名字和一个数字形式的标识符。标识符iso.org.dod.internet.mgmt.mib-2.system.sysDescr 还可以用 1.3.6.1.2.1.1.1 来表示。SNMP版本SNMPv1支持的报文如下图SNMPv2增加了的报文如下图SNMPv3增加了的报文如下图SNMPv1/SNMP2c PDU类型SNMP 规定了 5 种协议数据单元 PDU(也就是 SNMP 报文),用来在管理进程和代理之间的交换。get-request 操作:从代理进程处提取一个或多个参数值。get-next-request 操作:从代理进程处提取紧跟当前参数值的下一个参数值。set-request 操作:设置代理进程的一个或多个参数值。get-response 操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。trap 操作:代理进程主动发出的报文,通知管理进程有某些事情发生。前面的 3 种操作是由管理进程向代理进程发出的, 后面的 2 个操作是代理进程发给管理进程的, 为了简化起见, 前面 3 个操作今后叫做 get、 get-next 和 set 操作。在代理进程端是用熟知端口 161 俩接收 get 或 set 报文,而在管理进程端是用熟知端口 162 来接收 trap 报文。SNMPv1/SNMP2c Get/Set报文格式PDU 类型包含两个字节:前一个字节为类型;后一个字节为长度。SNMPv1 Trap报文格式SNMP2c Trap报文格式SNMPv1 PDU总结SNMPv2c PDU总结SNMPv2c也采用团体名认证。在兼容SNMPv1的同时又扩充了SNMPv1的功能:它提供了更多的操作类型(GetBulk和inform操作);支持更多的数据类型(Counter32等);提供了更丰富的错误代码,能够更细致地区分错误。SNMPv3 PDU总结SNMPv3主要在安全性方面进行了增强,它采用了USM和VACM技术。USM提供了认证和加密功能,VACM确定用户是否允许访问特定的MIB对象以及访问方式。“1USM(基于用户的安全模型)USM引入了用户名和组的概念,可以设置认证和加密功能。认证用于验证报文发送方的合法性,避免非法用户的访问;加密则是对NMS和Agent之间传输的报文进行加密,以免被窃听。通过有无认证和有无加密等功能组合,可以为NMS和Agent之间的通信提供更高的安全性。“2VACM(基于视图的访问控制模型)VACM技术定义了组、安全等级、上下文、MIB视图、访问策略五个元素,这些元素同时决定用户是否具有访问的权限,只有具有了访问权限的用户才能管理操作对象。在同一个SNMP实体上可以定义不同的组,组与MIB视图绑定,组内又可以定义多个用户。当使用某个用户名进行访问的时候,只能访问对应的MIB视图定义的对象。整个SNMPv3消息可以使用认证机制,并对EngineID、contextName、PDU消息体部分进行加密。RequestID、MaxSize、Flags、SecurityModel、SecurityParameters构成SNMPv3消息头。SNMP Security Models/LevelsSCALANCE XM416 SNMP激活方式“1激活SNMP“2配置SNMP“3设置团体名“4设置Trap“5设置SNMPv3安全组“6设置SNMPv3用户组“7查看已经设置了的用户名及所属组通过OID查看器OidView查看MIB库“1OidView连接SCALANCEXM416交换机“2查看创建了的会话“3查看XM416的接口表Python代码的实现SNMPv2Get-RequestGet-Request抓取的报文分析Python代码的实现SNMPv2c GetbulkSNMPv2c Getbulk抓取的报文分析SNMPv1 Trap Python代码的实现SCALANCE X416 SNMPv1 Trap的配置SNMPv1 Trap抓取的报文分析SCALANCE X416 SNMPv3安全组的设置SNMPv3 Get-Request Python代码的实现SNMPv3 Get-Request抓取的报文分析