SNMP监控方式简介与实战

更多文章请移步: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

3.2、SNMP V3 实现机制

SNMP V3 的实现机制和 SNMP V1、SNMP V2c 基本相同,主要区别在于 SNMP V3 增加了认证、加密和解密的处理,这里以 SNMP V3 的 Get 操作进行介绍

  • 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 报文进行解密,
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值