网络自动化运维教程
上QQ阅读APP看书,第一时间看更新

2.3.2 SNMP

简单网络管理协议(Simple Network Management Protocol,SNMP)是专门设计用于在IP网络中管理网络节点的一种标准协议,它是一种应用层协议。网络管理员可以利用网络管理站(Network Management Station,NMS)在网络上的任意节点完成信息查询、信息修改和故障排查等工作,提升工作效率。同时,其可以屏蔽不同产品之间的差异,实现不同种类和厂商的网络设备之间的统一管理。所有支持SNMP的网络设备,网络管理员都可对其进行统一管理。SNMP不仅能够加强网络管理系统的效能,还可以用来对网络中的资源进行管理和实时监控。SNMP传输层使用用户数据报协议(User Datagram Protocol,UDP),管理端的默认端口为UDP 162,主要用来接收代理的消息,如Trap告警消息等。代理端使用UDP 161端口接收管理端下发的消息。

SNMP框架体系由多个功能相对独立的子系统或应用程序集合而成,因而可以方便管理,其典型架构如图2-2所示。在基于SNMP的网络中,NMS是网络管理(简称网管)中心,在它之上运行管理进程,对网络设备进行管理和监控。每个被管理设备都需要运行代理进程。管理进程和代理进程利用SNMP报文进行通信。被管理设备是网络中接受NMS管理的设备。

代理进程运行于被管理设备上,用于维护被管理设备的信息数据并响应来自NMS的请求,把管理数据汇报给发送请求的NMS。NMS和被管理设备的信息交互分为两种:一种是NMS通过SNMP给被管理设备发送修改配置信息请求或查询配置信息请求,被管理设备上运行的代理进程根据NMS的请求消息做出响应;另一种是被管理设备主动向NMS上报告警信息(Trap),以便网络管理员及时发现故障。

每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件,也可以是在硬件、软件(如路由选择协议)上配置的参数集合。SNMP规定通过管理信息库(Management Information Base,MIB)去描述可管理实体的一组对象。MIB是数据库,指明了被管理设备所维护的变量(即能够被代理进程查询和设置的信息)。MIB定义了被管理设备的一系列属性,包括对象标识符(Object Identifier,OID)、对象的状态、对象的访问权限和对象的数据类型等。MIB包含网络中所有可能的被管理对象的集合。因为其结构与树相似,所以MIB又被称为对象命名树。

图2-2 SNMP典型架构

MIB是NMS同代理进程进行沟通的“桥梁”,可以使网管软件和设备进行标准对接。每一个代理进程都维护一个MIB,NMS可以对MIB中对象的值进行读取或设置。MIB定义被管理对象的一系列属性,包括对象的名称、对象的访问权限以及对象的数据类型。

MIB以树状结构存储数据,树的叶子节点表示管理对象,它可以通过从根节点开始的一条唯一路径来标识,这条路径也就是OID。MIB树如图2-3所示。

OID是由一系列非负整数组成的,用于唯一标识管理对象在MIB树中的位置。MIB文件一旦发布,OID就和被定义的对象绑定,不能修改。MIB节点不能被删除,只能将它的状态置为“obsolete”,表明该节点已经被废除。

NMS通过OID引用代理进程中的对象。如在图2-3所示的树中,mgmt对象可以标识为{iso(1)org(3)dod(6)internet(1)mgmt(2)},简单标记为1.3.6.1.2,这种标识就叫作OID。

图2-3 MIB树

SNMP的发展经历了SNMPv1、SNMPv2c和SNMPv3,这是一个不断完善、改进的过程。SNMPv1是SNMP的最初版本,容易实现且成本低。因为该版本缺少大量读取数据的能力,并且没有足够的安全机制,所以适合规模较小、设备较少和安全性要求不高或本身就比较安全的网络,如校园网和小型企业网等。SNMPv2c扩展了SNMPv1的功能,增加了GetBulk和inform操作,但是该版本仍然没有足够的安全机制。SNMPv2c适合规模较大、设备较多和安全性要求不高或本身就比较安全,但业务比较繁忙,有可能发生流量拥塞的网络。鉴于SNMPv2c在安全性方面没有得到改善,因特网工程任务组(Internet Engineering Task Force,IETF)又发布了SNMPv3,SNMPv3提供了基于用户的安全模型(User-based Security Model,USM)的认证加密和基于视图的访问控制模型(View-based Access Control Model,VACM)功能。该版本适用于各种规模的网络,尤其是对安全性要求较高,只有合法的管理员才能对网络设备进行管理的网络。

NMS通过SNMPv3向被管理设备下发查询和设置操作指令,并接收操作响应信息,同时监听被管理设备发送的告警信息。SNMPv3的基本操作命令如表2-1所示。

表2-1 SNMPv3的基本操作命令

SNMPv1和SNMPv2c使用团体名(community,可以理解为密码)进行安全认证,团体名在网络中以明文传输,容易泄露。同时,大多数网络产品出厂时设定只读团体名的默认值为“Public”,读写团体名的默认值为“Private”。许多网络管理人员从未修改过该默认值,存在安全风险。

SNMPv3较SNMPv1和SNMPv2c在安全性方面做了提升。SNMPv3定义了3个安全级别:1级为privacy(鉴权且加密),2级为authentication(只鉴权),3级为noauthentication(不鉴权不加密)。SNMPv3将拥有相同安全级别的用户划分了用户组,同时定义了视图控制用户访问的MIB节点集合。

用户的安全级别必须大于等于用户组的安全级别,即如果用户组的安全级别是1级,则用户的安全级别必须是1级,如果用户组的安全级别是2级,则用户的安全级别可以是1级或者2级。

SNMPv3还采用了USM和VACM,提升了安全性。USM可提供身份验证和数据加密服务。身份验证指的是代理进程或NMS接到信息时首先必须确认信息是否来自有权限的NMS或代理进程,并且信息在传输过程中未被改变。数据加密是指通过对称密钥系统,NMS和代理进程共享同一密钥并对数据进行加密和解密。VACM用于对用户组实现基于视图的访问控制,用户必须先配置一个视图,并指明权限。用户可以在配置用户、用户组或者团体名的时候加载这个视图,以达到限制读写操作、告警的目的。

华为设备上SNMP的基本配置命令如下。