目录
1.1 网络管理概述
网络管理通常包含4个要素:
- 被管理节点:需要进行管理的设备。
- 代理(Agent):跟踪被管理设备状态的软件或硬件。
- 网络管理工作站(Manager):与在不同的被管理节点中的代理通信,并且显示这些代理状态的设备。
- 网络管理协议:网络管理工作站和代理用来交换信息的协议。
目前TCP/IP网络中应用最为广泛的网络管理协议是简单网络管理协议SNMP(Simple Network Management Protocol)。
1.2 基于SNMP的网络管理
介绍了基于SNMP的网络管理体系结构的主要组成部分、相互关系和通信方式。
基于SNMP的网络管理体系结构中包含4个主要组成部分:
- 网络管理站NMS(Network Management Station):NMS通常是一个独立的设备,运行网络管理应用程序。网络管理应用程序至少能够提供一个人机交互界面,网络管理员通过它完成绝大多数网络管理工作。
- SNMP代理器(Agent):Agent是驻留在被管理设备的一个软件模块,主要负责接收和处理来自NMS的请求报文,并形成响应报文,返回给NMS;在一些紧急情况下,它会主动发送Trap报文,通知NMS。
- SNMP协议:SNMP协议属于TCP/IP网络的应用层协议,用于在NMS和被管理设备间交互管理信息。
- 管理信息库MIB(Management Information Base)MIB是一个被管理对象的集合,是NMS同Agent进行沟通的桥梁,可以使网管软件和设备进行标准对接。每一个Agent都维护这样一个MIB库,NMS可以对MIB库中对象的值进行读取或设置。
图1-1 基于SNMP网络管理的示意图
从图1-1可以了解网络管理中涉及到的几个主要组成部分的相互关系,它们之间的通信方式描述如下:
- NMS通过SNMP协议与设备的Agent通信,完成对MIB的读取和修改操作,从而实现对网络设备的监控与管理。
- SNMP是NMS与Agent之间通信的载体,通过其协议数据单元PDU(Protocol Data Unit)完成信息交换。SNMP并不负责数据的实际传输,数据交换的任务是通过UDP等传输层协议来完成的。
- Agent是设备上的代理进程,主要工作包括与NMS通信,对设备中的MIB库进行维护,以管理和监控设备中的各个模块。
- MIB保存设备中各个模块的信息。通过对MIB信息的读写操作来完成对设备的监控和维护。
1.3 SNMP介绍
1.3.1 SNMP版本
SNMP协议的版本包括:SNMPv1、SNMPv2c、SNMPv3。
SNMPv1和SNMPv2c都是使用基于共同体名的认证。NMS通过共同体名列表控制对设备的访问权限,而代理(Agent)并不核实发送者是否使用了授权的共同体名,同时,SNMP消息未采用加密传输,因此在认证和私有性方面缺乏安全保障。
SNMPv2c在SNMPv1的基础上进行了增强,增强的功能包括:支持更多的操作、支持更多的数据类型、提供更丰富的错误处理码和多种传输协议的支持。
SNMPv3定义了包含SNMPv1、SNMPv2所有功能在内的体系框架和包含验证服务和加密服务在内的全新安全机制。
SNMPv3的安全性主要体现在数据安全和访问控制上。
SNMPv3提供消息级的数据安全,它包括以下三种情况:
- 数据完整性:数据不会在未被授权方式下修改,数据顺序的改动也不会超出许可范围。
- 数据来源验证:确认所收到的数据来自哪个用户。SNMPv3定义的安全性是基于用户的,它验证的是生成消息的用户,而不是具体生成消息的应用程序。
- 数据核实性检查:当NMS或Agent接收到消息时,对消息的生成时间进行检查,如果消息时间与系统当前时间的差超出了指定的时间范围,该消息就不被接受。这可以防止消息在网络传输过程中被恶意更改,或收到并处理恶意发送的消息。
SNMPv3的访问控制是基于协议操作的安全性检查,控制对被管理对象的访问。
1.3.2 SNMP协议单元
SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用于NMS与Agent的交互。如图1-2所示。
图1-2 SNMP的报文操作示意图
各种报文的操作如下:
- get-request:从代理进程处提取一个或多个参数值。
- get-next-request:从代理进程处提取紧跟当前参数值的下一个参数值。
- set-request:设置代理进程的一个或多个参数值。
- get-response:返回的一个或多个参数值。这个操作是由代理进程发出的,它是对前面3种操作的响应。
- trap:代理进程主动发出的报文,通知管理进程有某些事件发生。
前面3种操作由NMS向Agent发出,后面2种操作由Agent向NMS发出。
1.3.3 SNMP报文处理过程
Agent通过UDP端口161接收来自NMS的Request报文。
Agent接收到报文后,其基本处理过程如下:
- 解码:依据ASN.1抽象语法标记(Abstract Syntax Notation One)基本编码规则,生成用内部数据结构表示的报文。如果此过程出现错误导致解码失败,则丢弃该报文,不做进一步处理。
- 比较SNMP版本号:将报文中的版本号取出,与本Agent支持的SNMP版本号比较。如果不一致,则丢弃该报文,不做进一步处理。
- 团体名验证:将报文中的团体名取出,此团体名由发出请求的网管站填写。如与Agent所在设备认可的团体名不符,则丢弃该报文,不做进一步处理,同时产生一个Trap报文。SNMPv1提供较弱的安全措施,在版本3中这一功能被加强。
- 提取PDU:从通过验证的ASN.1对象中提出协议数据单元PDU。如果失败,丢弃报文,不做进一步处理。
- 处理PDU:根据不同的PDU,SNMP协议实体进行不同的处理。得到管理变量在MIB树中对应的节点,从相应的模块中得到管理变量的值,形成Response报文,编码发回网管站。
- 网管站得到响应报文后,经过同样的处理,最终显示结果。
1.4 MIB介绍
介绍了MIB的作用、存储和引用方式、MIB的分类以及如何加载MIB。
MIB是一个被管理对象的集合,它定义被管理对象的一系列属性,包括
- 对象的名字
- 对象的访问权限
- 对象的数据类型
管理信息结构SMI(Structure of Management Information)规定了被管理的对象应该如何定义和组织,它定义了一系列MIB可以使用的数据类型,比如Counter、Gauge等。
MIB指明了网络元素所维护的变量,即能够被NMS查询和设置的信息,给出了一个网络中所有可能的被管理对象的集合的数据结构。
1.4.1 MIB树结构
MIB以树状结构进行存储,树的叶子节点表示管理对象,它可以通过从根节点开始的一条惟一路径来识别,这也就是OID(Object Identifier)。
图1-3 MIB树结构示意图
OID是由一些系列非负整数组成,用于唯一标识管理对象在MIB树中的位置。由SMI来保证OID不会冲突。
MIB文件一旦发布,OID就和被定义的对象绑定,不能修改。MIB节点不能被删除,只能将它的状态置为“obsolete”,表明该节点已经被废除。
在图1-3的树形结构中,mgmt对象可以标识为:{ iso(1) org(3) dod(6) internet(1) mgmt(2) },简单标记为:1.3.6.1.2,这种标识就叫做OID。
NMS通过OID引用Agent中的对象。
1.4.2 MIB分类
MIB可以分为公有MIB和私有MIB两种。
- 公有MIB:一般由RFC定义,主要用来对各种公有协议进行结构化设计和接口标准化处理。例如:OSPF-MIB(RFC1850)/BGP4-MIB(RFC1657)都是典型的公有MIB。大多数的设备制造商都需要按照RFC的定义来提供SNMP接口。
- 私有MIB:是公有MIB的必要补充,当公司自行开发私有协议或者特有功能时,可以利用私有MIB来完善SNMP接口的管理功能,同时对第三方网管软件管理存在私有协议或特有功能的设备提供支持。
1.4.3 MIB加载
MIB加载分为单个MIB文件加载和批量MIB文件加载,下面以MG-SOFT MIB Browser加载MIB为例进行介绍。
单个MIB文件加载
- 运行MG-SOFT MIB Browser,在MIB Browser窗口中单击“Run MG-SOFT MIB Compiler”按钮。图1-4 MIB Browser窗口
- 在MIB Compiler窗口中单击“Compile MIB file”按钮,选择MIB编译功能。图1-5 MIB编译窗口
- 选择需要编译的MIB文件。图1-6 选择需要编译的MIB文件
- 编译MIB文件。选中要编译的MIB文件后,单击“打开”按钮,开始编译MIB文件,编译成功后显示信息如图1-7所示。图1-7 MIB编译成功信息
- 保存编译成功的MIB文件,MIB文件会保存到默认路径。图1-8 MIB文件保存
- 加载MIB文件。单击“MIB”页签,在下面的“MIB Modules”页签中选择要加载的MIB文件,单击右键,选择“Load”。图1-9 加载MIB文件
- 在“Loaded MIB modules”窗口中可以看到已经被成功加载的MIB文件。图1-10 MIB文件加载成功
批量MIB文件加载
- 运行MG-SOFT MIB Browser,在MIB Browser窗口中单击“Run MG-SOFT MIB Compiler”按钮。图1-11 MIB Browser窗口
- 在MIB Compiler窗口中单击“Compile multiple MIB files”按钮,选择MIB批量编译功能。图1-12 批量MIB编译窗口
- 选择需要批量编译的MIB文件。图1-13 选择需要批量编译的MIB文件
- 编译MIB文件。选中要批量编译的MIB文件目录后,单击“OK”按钮,开始批量编译MIB文件。
- 保存编译成功的MIB文件,MIB文件会保存到默认路径。
- 加载MIB文件。单击“MIB”页签,在下面的“MIB Modules”页签中选择要批量加载的MIB文件,单击右键,选择“Load”。图1-14 批量加载MIB文件
- 在“Loaded MIB modules”窗口中可以看到已经被成功批量加载的MIB文件。图1-15 MIB文件批量加载成功