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 来表示。
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 类型包含两个字节:前一个字节为类型;后一个字节为长度。
SNMPv3 PDU 总结
SNMPv2c也采用团体名认证。在兼容SNMPv1的同时又扩充了SNMPv1的功能:它提供了更多的操作类型(GetBulk和inform操作);支持更多的数据类型(Counter32等);提供了更丰富的错误代码,能够更细致地区分错误。
整个SNMPv3消息可以使用认证机制,并对EngineID、ContextName、PDU消息体部分进行加密。RequestID、MaxSize、Flags、SecurityModel、SecurityParameters构成SNMPv3消息头。
SNMP Security Models/Levels
SCALANCE XM416 SNMP激活方式
1、激活SNMP
2、配置SNMP
3、设置团体名
4、设置Trap
5、设置SNMPv3安全组
6、设置SNMPv3用户组
7、查看已经设置了的用户名及所属组
通过OID 查看器OidView查看MIB库
1、OidView连接SCALANCE XM416交换机
2、查看创建了的会话
3、查看XM416的接口表
Python代码的实现SNMPv2 Get-Request
Get-Request 抓取的报文分析
Python代码的实现 SNMPv2c Getbulk
SNMPv2c Getbulk抓取的报文分析
SNMPv1 Trap Python代码的实现
SCALANCE X416 SNMPv1 Trap的配置
SNMPv1 Trap 抓取的报文分析
SCALANCE X416 SNMPv3 安全组的设置
SNMPv3 Get-Request Python代码的实现
SNMPv3 Get-Request 抓取的报文分析