暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

网络设备监控之snmp协议

IT那活儿 2023-04-19
2092
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!



SNMP协议



SNMP即简单网络管理协议,是监视网络设备(包括路由器、交换机、防火墙)性能的通用方法。通过SNMP管理站点,可以查看网络设备性能的图表。

一套完整的SNMP系统主要包括:

  • 管理信息库(MIB)

  • 管理信息结构(SMI)

  • SNMP报文协议

管理信息库MIB--被管理的设备资源都表示成一个对象,MIB是被管理对象的集合,定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网络管理系统)和Agent之间的沟通桥梁

管理信息结构SMI)--定义了SNMP框架所用信息的组织、组成和标识,奠定了描述MIB对象和描述协议如何交换信息的基础。




SNMP版本



v1、v2c、v3,功能是依次递增的,用的最多的是V2版本

1. SNMPv1
是 SNMP 协议的最初版本,提供最小限度的网络管理功能。
SNMPv1 的 SMI 和 MIB 都比较简单,且存在较多安全缺陷。SNMPv1采用团体名认证。团体名的作用类似于密码,用来限NMS对Agent的访问。
如果 SNMP 报文携带的团体名没有得到 NMS/Agent 的认可,该报文将被丢弃。SNMPV1 是一种简单的请求/响应协议,网络管理系统发出一个请求,管理器则返回一个响应。
2. SNMPv2c
SNMPv1一样也采用团体名认证。兼容SNMPv1的同时又扩充了功能,提供了更多的操作类型(GetBulk--批量获取操作等),支持更多的数据类型(Counter32等),提供了更丰富的错误代码,能够更细致地区分错误。SNMPV2添加和增强了有关协议操作。
3. SNMPv3
主要在安全性方面进行了增强,它采用了 USM(基于用户的安全控制模型)和 VACM(基于视图的访问控制模型) 技术。USM 提供了认证和加密功能,VACM 确定用户是否允许访问特定的 MIB 对象以及访问方式。
SNMP可以做什么:
  • 端口出现问题时可以发送警告信息;
  • 以图形方式显示网络错误;
  • 以图表的方式显示网络设备的带宽使用情况,可按端口,数据流向等分类。




SNMP的运行过程



SNMP设备包含了一个配置好的SNMP代理。网络管理系统(NMS)会与每个网络设备上的SNMP代理进行对话。

网络设备上的AGENT从UDP端口161接收的串行化请求报文,经解码、团体名验证、分析得到管理变量在MIB树中对应的节点,从相应的模块中得到管理变量的值,再形成响应报文,编码发送返回。请求端得到响应报文后,再经同样的处理来显示结果。
处理过程分为四步:
  • 第一步:解码生成用内部数据结构表示的报文,解码依据ASN.1的基本编码规则。
  • 第二步:取出报文中的版本号,如果与Agent支持的SNMP版本一致则继续第三步,不一致则丢弃该报文,不做进一步处理。
  • 第三步:取出报文中的团体名,团体名由请求端填写。若团体名相符则继续第四步,若不相符则丢弃该报文,不做进一步处理,同时产生一个陷阱报文。
  • 第四步:从通过验证的ASN.1对象中提取协议数据单元PDU,若成功则处理PDU,结果并生成一个报文,该报文的发送目的地址应与收到报文的源地址一致;如果失败,丢弃报文,不做进一不处理。
常用的SNMP配置命令:
  • snmp-agent sys-info contact
    设置管理员的标识及联系方法,contact可自定义。
  • snmp-agent sys-info location
    设置交换机的位置信息,初始一般没有设置。
  • snmp-agent community read test
    设置SNMP Community,使用Community连接网络设备时,只可以读取其SNMP信息,test也可以自定义。
  • snmp-agent community write private
    设置SNMP Community,使用Community连接网络设备时,不仅可以读取其SNMP信息,还可以将值写入SNMP的MIB对象,实现对设备进行配置。Private同样可自定义。
  • snmp-agent sys-info version all

    设置网络设备支持的SNMP协议,有v1,v2c,v3这3个版本,设置all则同时支持这3个版本,也可设置其中一个版本。




snmpwalk工具



snmpwalk是SNMP的一个工具,使用SNMP的GETNEXT请求查询指定OID(SNMP协议中的对象标识)入口的所有OID树信息。常用snmpwalk获取支持SNMP的网络设备信息,snmpwalk可以收集交换机、路由器的cpu、内存、端口流量等信息

1. 使用snmpwalk需要安装net-snmp-utils软件包
2. Snmpwalk命令格式
snmpwalk -v 2c -c community  网络设备IP地址 + OID(对象标示符)
注:-v指SNMP版本,-c 指SNMP读密码或团体名,即客户端snmp.conf里所设置)
3. snmpwalk的用法
1)取得端口数量
snmpwalk -v 2c -c community IP ifNumber
snmpwalk -v 2c -c community IP ifIndex

2)查看端口管理状态和操作状态
snmpwalk -v 2c -c community IP ifAdminStatus
snmpwalk -v 2c -c community IP ifOperStatus

3)获取网卡信息
snmpwalk -v 2c -c community IP ifDescr
snmpwalk -v 2c -c community IP ifType

4)查看端口输入输出字节数
snmpwalk -v 2c -c community IP ifinOctets
snmpwalk -v 2c -c community IP ifoutOctets

5)获取内存和CPU使用率
snmpwalk -v 2c -c community IP OID
4. snmp输出项说明
  • ifType 端口的类型;
  • ifDescr 端口类型的描述 有GigabitEthernet、FastEthernet等;
  • ifMtu 可传输数据包的最大字节数;
  • ifinOctets 端口输入的字节数;
  • ifoutOctets 端口输出的字节数;
  • ifIndex 桥接端口对应的端口;
  • ifSpeed 端口速率;
  • ifPhysAddress  端口的数据链路地址;
  • ifAdminStatus  端口的管理状态,即端口的配置状态;
  • ifOperStatus 端口的操作状态,即实际工作状态,若端口没有插线则状态为“down”;
  • ifLastChange 端口最后更新成当前操作状态的时刻;
  • ifInUcastPkts 通过上层协议传递到子网的单播报文数;
  • ifInNUcastPkts 传递给上层网络协议的非单报文数;
  • ifInDiscards 被丢弃的输入报文数,并且这些报文不会被传递给上层网络协议;
  • ifInErrors 流入的错误报文数,由于错误使得这些报文不会被传递给上层网络协议;
  • ifInUnknownProtos 由于未知或不支持的网络协议而丢弃的输入报文的数量;
  • ifOutUcastPkts 需要发送给一个网络单播地址的报文数,包括丢弃的或未发送的报文数;
  • ifOutNUcastPkts需要发送给一个非单播地址的报文数,包括丢弃的或未发送的报文数;
  • ifOutDiscards  由于某种与特定错误条件无关的原因,而不能发送的报文数;
  • ifOutErrors 由于错误而不能发送的报文数量;
  • ifOutQLen 网络设备上的输出报文队列长度;
  • ifSpecific  MIB引用定义,指向一个用于实现该网络端口的特定介质类型;
  • atIfIndex 指向每个特定映射;
  • atPhysAddress 介质相关的物理地址(是一个有效的IP地址);
  • atNetAddress 介质相关物理地址所关联的IP地址。

END


本文作者:方 威(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论