导图社区 SNMP简单网络管理协议
个人笔记。SNMP简单网络管理协议(Simple Network Management Protocol),用于网络设备的管理。包括网络管理系统NMS(Network Management System),SNMP Agent,管理信息库MIB(Management Information Base),被管对象Management object,Get,GetNext,GetBulk,Response,Set,Trap,inform。
编辑于2023-08-18 19:37:35 山西SNMP 简单网络管理协议
SNMP的基本概念
简单网络管理协议 Simple Network Management Protocol。
位于应用层,属于应用层协议,在传输层依靠UDP协议进行传输。
用于网络设备的管理。主要用在局域网中对设备进行管理,应用最为广泛的是对路由器交换机等网络设备的管理,当然不仅限于网络设备。
网络设备数量成几何级数增加,网络设备种类多种多样,不同设备厂商提供的管理接口(如命令行接口)各不相同,这使得网络管理变得愈发复杂。为解决这一问题,SNMP应运而生,SNMP作为广泛应用于TCP/IP网络的网络管理标准协议,提供了统一的接口,从而实现了不同种类和厂商的网络设备之间的统一管理。
SNMP提供最基本的功能集,适合小型、快速、低价格的环境使用。
组网图
在组网中配置SNMP协议,首先需要在管理端配置SNMP管理程序NMS,同时在被管理设备端配置SNMP的Agent。
SNMP的“利用网络管理网络”的好处
网络管理员可以利用SNMP平台在网络上的任意节点完成信息查询、信息修改和故障排查等工作,工作效率得以提高。
屏蔽了设备间的物理差异,SNMP仅提供最基本的功能集,使得管理任务与被管理设备的物理特性、网络类型相互独立,因而可以实现对不同设备的统一管理,管理成本低。
设计简单、运行代价低,SNMP采用“尽可能简单”的设计思想,其在设备上添加的软件/硬件、报文的种类和报文的格式都力求简单,因而运行SNMP给设备造成的影响和代价都被最小化。
SNMP系统由4部分组成
四者关系图
网络管理系统NMS(Network Management System)
NMS是网络中的管理者,是一个采用SNMP协议对网络设备进行管理/监视的系统,运行在NMS服务器上。
NMS可以向设备上的SNMP Agent发出请求,查询或修改一个或多个具体的参数值。
NMS可以接收设备上的SNMP Agent主动发送的SNMP Traps,以获知被管理设备当前的状态。
SNMP Agent
SNMP Agent是被管理设备中的一个代理进程,用于维护被管理设备的信息数据并响应来自NMS的请求,把管理数据汇报给发送请求的NMS。
SNMP Agent接收到NMS的请求信息后,通过MIB表完成相应指令后,并把操作结果响应给NMS。
当设备发生故障或者其它事件时,设备会通过SNMP Agent主动发送SNMP Traps给NMS,向NMS报告设备当前的状态变化。
被管对象 Management object
Managed object指被管理对象。每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件,也可以是在硬件、软件(如路由选择协议)上配置的参数集合。
管理信息库MIB(Management Information Base)
MIB是一个数据库,指明了被管理设备所维护的变量。MIB在数据库中定义了被管理设备的一系列属性:对象的名称、对象的状态、对象的访问权限和对象的数据类型等。MIB也可以看作是NMS和SNMP Agent之间的一个接口,通过这个接口,NMS对被管理设备所维护的变量进行查询/设置操作。
Agent通过修改MIB,可以设置设备的状态参数。
Agent通过查询MIB,可以获知设备当前的状态信息。
MIB是以树状结构进行存储的。树的节点表示被管理对象,它可以用从根开始的一条路径唯一地识别,这条路径就称为OID对象标识符(object identifier),如system的OID为1.3.6.1.2.1.1,interfaces的OID为1.3.6.1.2.1.2。
MIB示意图
对网络管理有用的管理信息
静态信息:包括系统和网络的配置信息,例如路由器的端口数和端口编号,工作站的标识和CPU类型等,这些信息不经常变化。
动态信息:与网络中出现的事件和设备的工作状态有关,例如网络中传送的分组数,网络连接的状态等。
统计信息:即从动态信息推导出的信息,例如平均每分钟发送的分组数,传输失败的概率等。
SNMP协议分为三个版本
SNMPv1
SNMPv1是SNMP协议的最初版本,提供最小限度的网络管理功能。
SNMP V1中定义了5种类型的PDU(PDU具体见之后的章节): Get GetNext Response(GET和SET操作的响应信息) Set(设置一个或多个参数值) Trap(将设备产生的告警或事件上报)
SNMPv1安全性较差,使用团体字(community) 来作为身份认证信息。当Agent接收到与其一样的团体字的管理端消息后才会进行消息应答。 SNMPv1整个消息采用明文传送,通过wireshark/tcpdump等抓包工具可看到明文。
SNMPv2c
SNMPv2c在SNMPv1版本的基础上引入了GetBulk和Inform操作,支持更多的标准错误码信息,支持更多的数据类型(Counter64、Counter32)。
SNMP V2C定义了7种类型的PDU: Get GetNext GetBulk(GetBulk操作所对应的基本操作是GetNext,通过对Non repeaters和Max repetitions参数的设定,高效率地从Agent获取大量管理对象数据) Response Set Trap inform(相当于Trap的升级版,但是Trap消息发出去之后不会收到响应消息,而inform消息在发出之后能收到响应消息)
SNMP V2C也采用团体字认证。 SNMP V2C整个消息也采用明文传送。
SNMPv3
SNMPv3主要在安全性方面进行了增强,提供了基于USM(User Security Module)的认证加密和基于VACM(View-based Access Control Model)的访问控制。USM提供了认证和加密功能,VACM确定用户是否允许访问特定的MIB对象以及访问方式。 V3数据消息采用密文传送,通过wireshark/tcpdump等抓包工具不可见其实际的内容。
SNMP V3中沿用了V2c中7种类型的PDU,增加了report(当消息不能解密时发送该消息)。
SNMP查询(3种)
SNMP查询是指NMS主动向SNMP Agent发送查询请求。SNMP Agent接收到查询请求后,通过MIB表完成相应指令,并将结果反馈给NMS。
查询操作共有三种
Get操作:NMS使用该操作从SNMP Agent中获取一个或多个参数值。
GetNext操作:NMS使用该操作从SNMP Agent中获取一个或多个参数的下一个参数值。
GetBulk操作(SNMPv1版本不支持):基于GetNext实现,相当于连续执行多次GetNext操作。在NMS上可以设置被管理设备在一次GetBulk报文交互时,执行GetNext操作的次数。
图示
查询操作的工作原理
不同版本的SNMP查询操作的工作原理基本一致,唯一的区别是SNMPv3版本增加了身份验证和加密处理。下面以SNMPv2c版本的Get操作为例介绍SNMP查询操作的工作原理。
假定NMS想要获取被管理设备MIB节点sysContact的值,使用可读团体名为public,过程如下:
1. NMS向SNMP Agent发送Get请求报文。报文中各字段的设置如下:版本号为所使用的SNMP版本;团体名为public;PDU中PDU类型为Get类型,绑定变量填入MIB节点名sysContact。
2. SNMP Agent 首先对报文中携带版本号和团体名进行认证,认证成功后,SNMP Agent根据请求查询MIB中的sysContact节点,得到sysContact的值并将其封装到Response报文中的PDU,向NMS发送响应;如果查询不成功,SNMP Agent会向NMS发送出错响应。
SNMP设置(1种)
SNMP设置是指NMS主动向SNMP Agent发送对设备进行Set操作的请求。SNMP Agent接收到Set请求后,通过MIB表完成相应指令,并将结果反馈给NMS。
SNMP设置操作只有一种Set,NMS使用该操作可设置SNMP Agent中的一个或多个参数值。
图示
Set操作的工作原理
不同版本的SNMP Set操作的工作原理基本一致,唯一的区别是SNMPv3版本增加了身份验证和加密处理。下面以SNMPv3版本的Set操作为例介绍SNMP Set操作的工作原理。
假定NMS想要设置被管理设备MIB节点sysName的值为HUAWEI,过程如下:
1. NMS向Agent发送不带安全参数的Set请求报文,向SNMP Agent获取Context EngineID、Context Name和安全参数(SNMP实体引擎的相关信息)。
2. SNMP Agent响应NMS的请求,并向NMS反馈请求的参数。
3. NMS再次向SNMP Agent发送Set请求,报文中各字段的设置如下:
版本:SNMPv3
报文头数据:指明采用鉴权、加密方式。
安全参数:NMS通过配置的算法计算出鉴权参数和加密参数。将这些参数和获取的安全参数填入相应字段。
PDU:将获取的Context EngineID和Context Name填入相应字段,PDU类型设置为Set,绑定变量填入MIB节点名sysName和需要设置的值HUAWEI,并使用已配置的加密算法对PDU进行加密。
4. SNMP Agent首先对报文中携带版本号和团体名进行认证,认证成功后,SNMP Agent根据请求设置管理变量在管理信息库MIB中对应的节点,设置成功后向NMS发送响应;如果设置不成功,Agent会向NMS发送出错响应。
SNMP的Traps(2种)
SNMP Traps是指SNMP Agent主动将设备产生的告警或事件 上报给NMS,以便网络管理员及时了解设备当前运行的状态。
Traps有两种方式
Trap:SNMP Agent通过Trap向NMS发送告警或事件后,NMS不需要回复进行确认
Inform(SNMPv1版本不支持):SNMP Agent通过Inform向NMS发送告警或事件后,NMS需要回复InformResponse进行确认
SNMP端口号
SNMP报文是普通的UDP报文,协议中规定有两个默认端口号
端口号161
NMS发送Get、GetNext、GetBulk和Set操作请求以及SNMP Agent响应这些请求操作时,使用该端口号。
Agent端使用UDP 161,接收管理端下发的消息如SET/GET指令
该端口号支持用户配置,但是需要保证NMS发送请求报文使用的端口号与SNMP Agent响应请求报文使用的端口号要一致。
端口号162
SNMP Agent向NMS发送Trap或Inform时,使用该端口号。
管理端使用UDP 162,接收Agent的消息如TRAP告警消息
该端口号支持用户配置,但是需要保证SNMP Agent发送Trap或Inform的端口号与NMS监听Trap或Inform的端口号要一致。
SNMP的安全性
v1 不安全
v2 比较安全
v2c 不安全
v3 很安全。v3提供了基于USM(User Security Module)的认证加密和基于VACM(View-based Access Control Model)的访问控制。USM提供了认证和加密功能,VACM确定用户是否允许访问特定的MIB对象以及访问方式。且v3数据消息采用密文传送。
v1和v2c用community来进行认证,相当于一个密码(有2个community,只读的是“public”,读写的是“privacy”)。 但是community是明文传输,一抓包就露馅了。所以v1和v2c也就只能在专用管理网里面用用了。