更多文章请移步:www.yanjun.pro
--------------- 最后编辑时间:2022年7月19日 ---------------
1、SNMP协议概述
SNMP(简单网络管理协议)一般在对网络设备的监控中使用相对较多。简单网络管理包含两部分:管理进程和被管理设备,管理进程和被管理端得通信方式有以下三种:
- 被管理端向管理端发送数据
- 管理端向被管理端请求获取数据
- 管理端向被管理端请求改变数据
基于 TCP/IP 的网络管理由以下三部分组成:
- 管理信息库(MIB),包含所有代理进程的可被查询和修改的参数
- 管理信息结构(SMI):关于 MIB 的一套公用结构和标识符号
- 简单网络管理协议(SNMP):管理进程和代理进程之间的通信协议
2、SNMP协议的工作方式
SNMP工作在 OSI 模型的应用层(第七层),主要支持以下几种基本操作:
- Get:NMS 使用该操作从 Agent 获取一个或多个参数值
- GetNext:NMS 使用该操作从 Agent 获取一个或多个参数的下一个参数值
- Set:NMS 使用该操设置 Agent 的一个或多个参数值
- Response:Agent 返回一个或多个参数值,该操作是前面三种操作的响应
- Trap:Agent 主动发出的操作,通知 NMS 有某些事情发生
其中 Trap 使用 UDP 协议的 162 号端口发送报文,其余操作使用 UDP 协议的 161 号端口发送报文,因此同一台设备,既可以做 Agent 也可以做 NMS
3、SNMP协议工作原理
3.1、SNMP V1 和 SNMP V2 实现机制
SNMP V1 和 SNMP V2 的实现机制基本相同,只是 SNMP V2 丰富了错误代码,以及新增了 GetBulk操作,因此,此处使用 SNMP V1 做介绍
3.1.1、Get 操作
NMS 从被管理设备 MIB 中获取 sysName 的值,community(团体名称,可以理解为密码) 为 public 进行 read 操作,流程如下:
- NMS 给 Agent 发送 Get 请求,请求报文会对以下主要字段进行设置: version 字段的值为 1,community 字段的值为 public,PDU (协议数据单元,也就是 SNMP 报文)的 variable bindings 中的 Name1 字段的值为 sysName.0
- Agent 给 NMS 发送 Get 响应,说明是否获取成功,如果获取成功,则返回 Response PDU 的 variable bindings 中 Value1 字段的值就是设备的名字;如果获取失败,则在 Error status 字段中填上出错的原因,在 Error index 字段上填上出错的位置信息
3.1.2、GetNext 操作
NMS 从被管理设备 MIB 中获取 sysName 的下一个节点 sysLocation 的值,community 为 public 进行 read 操作,流程如下:
- NMS 给 Agent 发送 GetNext 请求,请求报文会对以下主要字段进行设置: version 字段的值为 1,community 字段的值为 public,PDU 的 variable bindings 中的 Name1 字段的值为 sysName.0
- Agent 给 NMS 发送 GetNext 响应,说明是否获取成功,如果获取成功,则返回 Response PDU 的 variable bindings 中 Value1 字段的值为 sysName.0 的下一个节点 sysLocation.0 中 Value1 字段中的值;如果获取失败,则在 Error status 字段中填上出错的原因,在 Error index 字段上填上出错的位置信息
3.1.3、Set 操作
NMS 需要将被管理设备 MIB 节点中 sysName 的值修改为 newName,则使用 community 为 private 进行 write操作
- NMS 给 Agent 发送 Set 请求,请求报文会对以下主要字段进行设置: version 字段的值为 1,community 字段的值为 private,PDU 的 variable bindings 中的 Name1 字段的值为 sysName.0,Value1 字段的值为 newName
- Agent 给 NMS 发送 Set 响应,说明设置成功,如果设置成功,则 Response PDU 的 variable bindings 中 Value1 字段的值为 newName;如果设置失败,则在 Error status 字段中填上出错的原因,在 Error index 字段上填上出错的位置信息
3.1.4、Trap
当设备发生某些异常或者变化时,Agent 会主动发送 Trap 报文给 NMS文章来源:https://www.toymoban.com/news/detail-443042.html
3.2、SNMP V3 实现机制
SNMP V3 的实现机制和 SNMP V1、SNMP V2c 基本相同,主要区别在于 SNMP V3 增加了认证、加密和解密的处理,这里以 SNMP V3 的 Get 操作进行介绍文章来源地址https://www.toymoban.com/news/detail-443042.html
- NMS(网络管理系统) 首先发送不带任何认证和加密参数的 Get 请求,将 Flags 字段设置为 0x4,以获取 contextEngineID、contextame、AuthoritativeEngineID、AuthoritativeEngineBoots、AuthoritativeEngineTime等参数相关参数的值
- agent 解析消息,发送 report 报文,并携带上述相关参数的值
- NMS 再次给 agent 发送 Get 请求,请求报文的 version 字段的值被置为 3,将在上一步获取到的值填入到相应的字段中,PDU 的 variable bindings 中的 Name1 字段的值为 sysName.0,并根据配置的认证算法计算出 authenticationParameters,根据配置的加密算法计算出 privacyParameters,并使用配置的加密算法对 PDU 数据进行加密
- agent 对消息进行认证,认证通过后对 PDU 报文进行解密,
到了这里,关于SNMP监控方式简介与实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!