目录
8.2 关键功能亮点 (接收第三方SNMP Trap信息等)
本文地址:https://blog.csdn.net/bandaoyu/article/details/125440208?spm=1001.2014.3001.5501,
本文大部分摘抄自:https://blog.csdn.net/sunrj_niu/article/details/124213758
零、简略
监测管理网络设备的工具。
SNMP="Simple Network Management Protocol"="简单网络管理协议",应用层协议,传输层一般采用UDP。
SNMP网络架构组成:NMS(网络管理站)、Agent(代理)、MIB(管理信息库)
Agent(代理)运行在被管理的网络节点上。NMS(网络管理站)负责收集维护各个SNMP 元素的信息(NMS主动向Agent请求,或Agent主动SNMP trap 上传),能请求/上传哪些内容去MIB中读取(MIB定义了设备中的被管理对象)。
管理站向代理申请MIB中定义的数据,代理识别后,将管理设备提供的相关状态或参数等数据转换为MIB定义的格式,应答给管理站,完成一次管理操作。
一个SNMP管理的网络由3部分构成:
- 网络管理系统(NMS,Network-management systems)
- 被管理的设备(managed device)
- 代理者(agent)。
- 物理实体角度架构如下所示:
SNMP采用UDP 161端口接收和发送请求,162端口接收trap
一、SNMP简单概述
1.1、什么是Snmp
SNMP="Simple Network Management Protocol"="简单网络管理协议"。
SNMP协议简单可靠 ,成为目前众多厂商的网管协议。
SNMP网络架构组成:NMS(网络管理站)、Agent(代理)、MIB(管理信息库)
SNMP管理站是一个中心节点,负责收集维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员;
而SNMP代理是运行在各个被管理的网络节点之上,负责统计该节点的各项信息,并且负责与SNMP管理站交互,接收并执行管理站的命令,上传各种本地的网络信息。
SNMP管理站和SNMP代理之间是松散耦合,MIB是NMS(网管系统)和Agent之间的沟通桥梁。他们之间的通信是通过UDP协议完成的。
一般情况下,SNMP管理站通过UDP协议向SNMP代理发送各种命令,当SNMP代理收到命令后,返回SNMP管理站需要的参数。但是当SNMP代理检测到网络元素异常的时候,也可以主动向SNMP管理站发送消息,通告当前异常状况。
SNMP的工作方式:
管理员需要向设备获取数据,所以SNMP提供了【读】操作;
管理员需要向设备执行设置操作,所以SNMP提供了【写】操作;
设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了【Trap】操作。
1.2、为什么需要SNMP?
- 网络设备数量增多;
- 网络设备盖地域大,实时监控和故障排查变困难。
- 网络设备种类多,不同设备厂商提供的管理接口(如命令行接口)各不相同。
SNMP应运而生:
- 网络管理员可以利用SNMP平台在网络上的任意节点完成信息查询、信息修改和故障排查等工作,工作效率得以提高。
- 屏蔽了设备间的物理差异,实现对不同设备的统一管理,管理成本低。
- 设计简单、运行代价低,SNMP采用“尽可能简单”的设计思想,运行SNMP给设备造成的影响和代价都被最小化。
1.3、SNMP的基本组件
SNMP基本组件
- 网络管理系统NMS(Network Management System)
- 代理进程(Agent)
- 被管对象(Managed Object)
- 管理信息库MIB(Management Information Base)
如图所示他们共同构成SNMP的管理模型,在SNMP的体系结构中都起着至关重要的作用。
NMS
NMS 在网络中扮演管理者角色,是一个采用 SNMP 协议对网络设备进行管理/监视的系统,运行在 NMS 服务器上。
NMS 可向设备上的 Agent 发出请求,查询或修改一个或多个具体的参数值。也可以接收 Agent 主动发送的 Trap 信息,以获知被管理设备当前的状态。
Agent
Agent 是被管理设备中的一个代理进程,用于维护被管理设备的信息数据并响应来自 NMS 的请求。Agent 接收到 NMS 的请求信息后,通过 MIB 表完成相应指令后,并把操作结果响应给 NMS。
当设备发生故障或者其它事件时,设备会通过 Agent 主动发送信息给 NMS,向NMS报告设备当前的状态变化。
MIB
管理信息库MIB:
任何一个被管理的资源称为被管理的对象,MIB是被管理对象的集合。
MIB定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。
每个SNMP设备(Agent)都有自己的MIB,NMS可以对MIB库中的对象的值进行读取或者设置。MIB也可以看作是NMS(网管系统)和Agent之间的沟通桥梁。它们之间的关系如图1所示
- MIB是一个按照层次结构组织的树状结构,称为MIB树
- 每个被管对象对应树形结构的一个叶子节点,称为一个object,拥有唯一的数字标识符
- 网管通过读写MIB中的被管对象实现对设备的管理
MIB数据对象以一种树状分层结构进行组织,这个树状结构中的每个分枝都有一个专用的名字和一个数字形式的标识符。
结构树的分枝实际表示的是数据对象的逻 辑分组。而树叶,有时候也叫节点(node),代表了各个数据对象。在结构树中使用子树表示增加的中间分枝和增加的树叶。
使用这个树状分层结构,MIB浏览器能够以一种方便而且简洁的方式访问整个MIB数据库。MIB浏览器是这样一种工具,它可以遍历整棵MIB结构树,通常 以图形显示的形式来表示各个分枝和树叶对象。可以通过其数字标识符来查找MIB中的数据对象,这个数字标识符号从结构树的顶部(或根部)开始,直到各个叶 子节点(即数据对象)为止。
这种访问方式和文件系统的组织方式一致。两者的主要区别在于文件系统中的路径名可以以绝对也可以以相对方式表示,而MIB数据 对象只能以绝对方式表示,不能使用相对方式。
每一个节点都有一个对象标识符(OID)来唯一的标识,每个节点用数字和字符两种方式显示,其中对象标识符OID是由句点隔开的一组整数,也就是从根节点 通向它的路径。一个带标号节点可以拥有包含其它带标号节点作为它的子树,如果没有子树它就是叶子节点,它包含一个值并被称为对象。比如网络设备名的oid 是.1.3.6.1.2.1.1.5.0,其值为设备名称的字符串。
网络资源被抽象为对象进行管理。但SNMP中的对象是表示被管资源某一方面的数据变量。对象被标准化为跨系统的类,对象的集合被组织为管理信息库 (MIB)。MIB作为设在代理者处的管理站访问点的集合,管理站通过读取MIB中对象的值来进行网络监控。管理站可以在代理者处产生动作,也可以通过修改变量值改变代理者处的配置。
通过 MIB,可以完成以下功能:
◆ Agent 通过 get 消息查询 MIB,可以获知设备当前的状态信息。
◆ Agent 通过 set 消息修改 MIB,可以设置设备的状态参数。
Management object
Management object 指被管理对象。每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件(如一块接口板),也可以是某些硬件,软件(如路由选择协议)及其的配置参数的集合。
1.4、SNMP 和 UDP
SNMP采用UDP协议在管理端和agent之间传输信息。 SNMP采用UDP 161端口接收和发送请求,162端口接收trap,执行SNMP的设备缺省都必须采用这些端口。SNMP消息全部通过UDP端口161接收,只有Trap信息采用UDP端口162。
1.5、Snmp版本
SNMP 目前共有 3 个版本,分别为 v1、v2 和 v3,说明如下:
SNMP v1:是 SNMP 协议的最初版本,在 1988 年被制定,并被 Internet 体系结构委员会(IAB)采纳作为一个短期的网络管理解决方案。不过依然是众多厂家实现SNMP基本方式。
SNMP v2:是 1992 年发布的 SNMP 的第二个版本。它修订了第一版,并且在性能、安全、机密性和管理者之间通信等方面进行了大量改进。通常被指是基于community的SNMP V2。Community实质上就是密码。
SNMP v3:是目前最新的版本。它是 2004 年制定的,协议编号为 RFC3411-RFC3418(STD0062)。它为提升协议的安全性,增加了认证和密文传输功能,它对网络管理最大的贡献在于其安全性
SNMP v3实现原理SNMP v1、 SNMP v2基本一致,主要区别在于SNMP v1、 SNMP v2通过只读团体名、只读团体名连接,而SNMP v3通过鉴权和加密连接,增加了身份验证和加密处理。
SNMPv1、SNMPv2c与SNMPv3三者之间有什么区别?
二、Snmp有关的基本概念
2.1、代理和管理站的模型
Snmp分2种角色:SNMP管理站(manager,我们的本机127.0.0.1)和SNMP代理(agent, 我们要操作的机器,比如 192.168.1.144)。
管理站指的是运行了可以执行网络管理任务软件的服务器,通常被称作为网络管理工作站(NMS),NMS负责采样网络中agent的信息,并接受agent的trap。
代理是实际网络设备中用来实现SNMP功能的部分。代理在UDP的161端口接收NMS的读写请求消息,管理站在UDP的162端口接收代理的事件通告消息。
所以,一旦获取设备的访问权限(community,默认为public),就可以访问设备信息、改写和配置设备参数。由于采用UDP协议,不需要在代理和管理站之间保持连接。
2.2、SNMP的操作命令
SNMP协议之所以易于使用,这是因为它对外提供了三种用于控制MIB对象的基本操作命令。它们是:Get、Set 和 Trap。
Get:管理站读取代理者处对象的值。它是SNMP协议中使用率最高的一个命令,因为该命令是从网络设备中获得管理信息的基本方式。
Set:管理站设置代理者处对象的值。它是一个特权命令,因为可以通过它来改动设备的配置或控制设备的运转状态。它可以设置设备的名称,关掉一个端口或清除一个地址解析表中的项等。
Trap: 代理者主动向管理站通报重要事件。它的功能就是在网络管理系统没有明确要求的前提下,由管理代理通知网络管理系统有一些特别的情况或问题 发生了。如果发生意外情况,客户会向服务器的162端口发送一个消息,告知服务器指定的变量值发生了变化。通常由服务器请求而获得的数据由服务器的161 端口接收。Trap 消息可以用来通知管理站线路的故障、连接的终端和恢复、认证失败等消息。管理站可相应的作出处理。
2.3、SNMP 报文
SNMP消息由"版本号"、"SNMP共同体名"和"协议数据单元(PDU)"构成,数据包的长度不是固定的。
版本识别符(version identifier):确保SNMP代理使用相同的协议,SNMP代理会直接抛弃与自己协议版本不同的数据报。
团体名(Community Name):基本的安全机制,网络管理员访问SNMP管理代理时的身份验证。类似于密码,默认值为 public。团体名(Community name)是管理代理的口令,管理员被允许访问数据对象的前提就是网络管理员知道网络代理的口令。如果把配置管理代理成可以执行Trap命令,当网络管理 员用一个错误的分区名查询管理代理时,系统就发送一个autenticationFailure trap报文。
协议数据单元(PDU):SNMP消息中的数据区
PDU的5种协议数据单元:
SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。
- get-request 请求查询
- get-next-request 请求查询
- set-request 设置
- get-response 对前边的三种报文进行响应
- trap上报告警
前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的
---》