1.1 SNMP概述

随着网络技术的飞速发展,企业中网络设备的数量成几何级数增长,网络设备的种类也越来越多,这使得企业网络的管理变得十分复杂。简单网络管理协议SNMP( Simple Network Management Protocol )可以实现对不同种类和不同厂商的网络设备进行统一管理,大大提升了网络管理的效率。
在大型网络中,设备发生故障时,由于设备无法主动上报故障,导致网络管理员无法及时感知、及时定位和排除故障,从而导致网络的维护效率降低,维护工作量大大增加。为了解决这个问题,设备制造商已经在一些设备中提供了网络管理的功能,这样网管就可以远程查询设备的状态,同样设备能够在特定类型的事件发生时向网络管理工作站发出警告。

1.2 SNMP应用场景

image.png
SNMP是广泛应用于TCP/IP网络的一种网络管理协议。SNMP提供了一种通过运行网络管理软件NMS(Network Management System)的网络管理工作站来管理网络设备的方法。

SNMP支持以下几种操作:

  1. NMS通过SNMP协议给网络设备发送配置信息。
  2. NMS通过SNMP来查询和获取网络中的资源信息。
  3. 网络设备主动向NMS上报告警消息,使得网络管理员能够及时处理各种网络问题。

1.3 SNMP架构

image.png

  1. NMS是运行在网关主机上的网络管理软件。网络管理员通过操作NMS,向被管理设备发出请求,从而可以监控和配置网络设备。
  2. Agent是运行在被管理设备上的代理进程。被管理设备在接收到NMS发出的请求后,由Agent作出响应操作。Agent的主要功能包括:收集设备状态信息、实现NMS对设备的远程操作、向NMS发出告警消息
  3. 管理信息库MIB(Management Information Base)是一个虚拟的数据库,是在被管理设备端维护的设备状态信息集。Agent通过查找MIB来收集设备状态信息。

1.3.1 SNMP定义的三类角色

在网管通过SNMP协议管理设备过程中,定义了三类角色:

  • 网管站:向被管理设备发送各种查询报文,以及接收被管理设备发送的告警
  • Agent:被管理设备上的网管进程。Agent有如下功能:
    • 接收、解析来自网管站的查询报文。
    • 根据报文类型对管理变量进行Read或Write操作,并生成响应报文,返回给网管站。
    • 根据各类协议模块对告警触发条件的定义,在达到触发条件后,如进入、退出系统视图或设备重新启动等,相应的模块通过Agent主动向网管站发送告警,报告所发生的事件。
  • 被管理设备:接受网管的管理,产生和主动上报告警。

1.4 SNMP版本

image.png

  1. SNMPv1:网管端工作站上的NMS与被管理设备上的Agent之间,通过交互SNMPv1报文,可以实现网管端对被管理设备的管理。SNMPv1基本上没有什么安全性可言。
  2. SNMPv2c:在继承SNMPv1的基础上,其性能、安全性、机密性等方面都有了大的改进。 SNMPv3是在SNMPv2基础之上增加、完善了安全和管理机制。
  3. SNMPv3:体系结构体现了模块化的设计思想,使管理者可以方便灵活地实现功能的增加和修改。SNMPv3的主要特点在于适应性强,可适用于多种操作环境,它不仅可以管理最简单的网络,实现基本的管理功能,也可以提供强大的网络管理功能,满足复杂网络的管理需求。

1.4.1 SNMPv1

image.png
SNMPv1定义了5种协议操作:

  1. Get-Request:NMS从代理进程的MIB中提取一个或多个参数值。
  2. Get-Next-Request:NMS从代理进程的MIB中按照字典式排序提取下一个参数值。
  3. Set-Request:NMS设置代理进程MIB中的一个或多个参数值。
  4. Response:代理进程返回一个或多个参数值。它是前三种操作的响应操作。
  5. Trap:代理进程主动向NMS发送报文,告知设备上发生的紧急或重要事件。

1.4.2 SNMPv2c

image.png
SNMPv2c新增了2种协议操作:

  1. GetBulk:相当于连续执行多次GetNext操作。在NMS上可以设置被管理设备在一次GetBulk报文交互时,执行GetNext操作的次数。
  2. Inform:被管理设备向NMS主动发送告警。与trap告警不同的是,被管理设备发送Inform告警后,需要NMS进行接收确认。如果被管设备没有收到确认信息则会将告警暂时保存在Inform缓存中,并且会重复发送该告警,直到NMS确认收到了该告警或者发送次数已经达到了最大重传次数。

1.4.3 SNMPv3

image.png
SNMPv3的实现原理和SNMPv1/SNMPv2c基本一致,主要的区别是SNMPv3增加了身份验证和加密处理。

  1. NMS向Agent发送不带安全参数的Get请求报文,向Agent获取安全参数等信息。
  2. Agent响应NMS的请求,向NMS反馈所请求的参数。
  3. NMS向Agent发送带安全参数的Get请求报文。
  4. Agent对NMS发送的请求消息进行认证,认证通过后对消息进行解密,解密成功后,向NMS发送加密的响应

1.5 SNMP配置

image.png

  • snmp-agent命令用来使能SNMP代理
  • 执行snmp-agent sys-info version [ [ v1 | v2c | v3 ] * | all ]命令可以配置SNMP系统信息
  • 执行snmp-agent trap enable命令,可以激活代理向NMS发送告警消息的功能,这一功能激活后,设备将向NMS上报任何异常事件。另外,还需要指定发送告警通告的接口,本示例中指定的是与NMS相连的GigabitEthernet 0/0/1接口。

image.png

  • 执行display snmp-agent sys-info命令,可以查看系统维护的相关信息,包括设备的物理位置和SNMP版本。

1.5.1 配置SNMPv1

配置SNMPv1功能后,网管和设备之间将使用SNMPv1进行通信。为了保证网管和设备之间的正常通信,需要配置网管侧和Agent侧,本节只介绍Agent侧的配置,网管侧的配置请参考网管的操作手册。
用户希望通过网管统一管理网络设备时,需要部署SNMP协议,保证网管和被管理设备间的正常通信。当用户的网络规模较小,网络设备较少,且网络设备环境本身比较安全时(比如校园网、小型企业网),可以选择使用SNMPv1保证网管和设备间的通信。

在配置设备使用SNMPv1与网管通信之前,配置路由协议,使路由器和网管站之间可达。
  1. snmp-agent password min-length xx 配置SNMP密码的最小长度
  2. snmp-agent 启动SNMP Agent服务
  3. snmp-agent sys-info version v1
  4. snmp-agent community { read | write } cipher xx 配置设备的读写团体名
  5. snmp-agent sys-info { contact xx | location xx } 配置设备管理员的联系方法和位置
  6. snmp-agent extend error-code enable 使能SNMP扩展错误码功能
  7. snmp-agent trap enable 使能发送Trap报文
  8. snmp-agent trap enable feature-name feature-name trap-name trap-name 使能向网管发送指定特性下的某条告警信息
可以使用snmp-agent community complexity-check disable命令关闭团体名复杂度检查功能,但是为了保证系统安全性,建议开启此功能。

HUAWEI对团体名复杂度的要求如下:
- 最小长度为8个字符
- 至少包含2种字符,包括:大写字母、小写字母、数字、特殊字符。
使用**snmp-agent trap enable**命令打开所有模块的告警开关,或者使用**snmp-agent trap enable feature-name**打开某个告警开关时:
- 如果需要一次性关闭所有打开的告警开关,需使用**snmp-agent trap disable**关闭所有打开的告警开关。
- 如果需要一次性恢复所有的告警开关至缺省状态,需使用**undo snmp-agent trap enable**或者**undo snmp-agent trap disable**命令恢复所有的告警开关至缺省状态。
- 如果需要关闭其中某一个告警开关时,可以使用**undo snmp-agent trap enable feature-name**命令一次关闭一个告警开关。
- 如果需要一键式清除某一特性的所有告警开关的相关配置,可以使用**clear configuration snmp-agent trap enable**命令将该特性的所有告警开关的配置清除。

image.png

1.5.2 配置SNMPv2c

配置SNMPv2c功能后,网管和设备之间将使用SNMPv2c进行通信。为了保证网管和设备之间的正常通信,需要配置网管侧和Agent侧,本节只介绍Agent侧的配置,网管侧的配置请参考网管的操作手册。用户希望通过网管统一管理网络设备时,需要部署SNMP协议,保证网管和被管理设备间的正常通信。
当用户的网络规模较大,有多台网络设备,对网络安全性要求不高或者网络环境本身比较安全(比如VPN网络),但业务比较繁忙,有可能发生流量拥塞时,可以选择使用SNMPv2c保证网管和设备间的通信。

image.png
配置SNMPv2c的基本功能

配置SNMP的基本功能后,网管即可与被管理设备间进行基本的监控和管理操作,比如GET和SET相关数据,被管理设备主动向网关发送告警。
  1. snmp-agent password min-length xx //配置SNMP密码的最小长度
  2. snmp-agent //启动SNMP Agent服务
  3. snmp-agent udp-port xx //修改SNMP Agent侦听的端口号
  4. snmp-agent sys-info version v2c //配置SNMP的协议版本
  5. snmp-agent community {read|write}ciper 团体名 [mib-view xx | acl xx] //配置设备的读写团体名
  6. snmp-agent sys-info {contact xx| location xx} //配置设备管理员的联系方式和位置

请根据网络需要选择下面的命令配置设备发送告警和错误码的目的IP地址:

  • 如果是IPv4网络,请根据需要选择配置Trap方式告警或Inform方式告警 | Trap方式告警和Inform方式告警的区别如下:
    - 被管理设备发送Trap方式告警时,不需要告警主机回应确认信息。
    - 被管理设备发送Inform方式告警时,需要网管回应确认消息,在超时时间范围内没有收到网管的回应消息时,被管理设备将重新发送该告警,直至发送的告警个数达到配置的重复发送最大次数。
    被管理设备发送Inform告警时,同时记录告警日志,方便网管故障或链路故障恢复后,网管能够同步故障时间内产生的告警。
    因此,Inform告警相比Trap方式告警更加可靠,但由于重传机制的存在,可能导致设备需要缓存大量的告警信息,占用设备内存资源。
    建议用户在网络比较稳定时选择Trap方式告警;在设备资源充足且网络不太稳定的环境下,选择配置Inform方式告警。 | | —- |

配置向网管发送Trap告警

  • 配置向网管发送告警可以设定发送指定的告警,方便用户定位重要的问题,指定发送告警的相关参数,可以增加告警发送的可靠性。

    1. snmp-agent trap enable //使能发送Trap报文
    2. snmp-agent trap enable feature-name xx trap-name xx //使能向网管发送指定特性下的某条告警信息
    3. snmp-agent trap source 接口 //指定发送Trap的源端接口
    4. snmp-agent trap source-port xx //修改发送Trap的源端口号
    5. snmp-agent trap type {base-trap|entity-trap} //配置上送网管的告警信息格式

    配置向网管发送Inform告警

  • 使能了SNMP代理功能的路由器可产生两种告警:Trap告警和Inform告警。Trap消息通知网管该网络出了状况,Inform告警通知网管网络出了状况并要求网管回复确认。Inform告警将不断发送网管直到收到确认消息。因此,Inform比Trap更可靠。

    1. snmp-agent trap enable //使能发送Trap报文
    2. snmp-agent trap enable feature-name xx trap-name xx //使能向网管发送指定特性下的某条告警信息
    3. snmp-agent inform {timeout xx | resend-times xx | pending xx} //设置等待Inform确认消息的超时时间、Inform重传次数、未确认的Inform最大个数
    4. //如果网络不太稳定,应适当增大超时时间,并增加Inform的重传次数和未确认的Inform最大个数
    5. snmp-agent notification-log enable //使能告警日志功能
    6. snmp-agent notification-log {global-ageout xx | global-limit xx} //配置告警日志的老化时间和日志缓冲区中最多能保存的告警日志条数

    配置SNMP防攻击功能

  • undo snmp-agent blacklist ip-block disable //使能IP地址黑名单功能


1.5.3 配置SNMPv3

网管管理设备主要体现在两方面:

  • 网管主动管理设备,进行GetRequest、GetNextRequest、GetResponse、GetBulk、SetRequest操作,获取需要的数据并进行相应设置。
  • 网管被动接收被管理设备发送的Trap或Inform告警,根据告警定位和处理设备故障。

image.png

  1. snmp-agent password min-length xx //配置SNMP密码的最小长度
  2. snmp-agent //启动SNMP Agent服务
  3. snmp-agent udp-port xx //修改SNMP Agent侦听的端口号
  4. snmp-agent sys-info version v3 //配置SNMP的协议版本
  5. snmp-agent group v3 xx {authentication|privacy|noauthentication}[read-view xx|write-view xx|notity-view xx] //配置SNMP用户组
用户可以选择的认证加密模式如下:
- 不配置authenticationprivacy参数或配置noauthentication参数:不认证不加密。适用于网络环境安全,且管理员比较固定的情况下。
- 配置authentication参数:只认证不加密。适用于网络环境安全,但管理员个数多,管理员对设备交叉操作比较频繁的情况下。通过认证可以限制拥有权限的管理员才可以访问该设备。
- 配置privacy参数:既认证又加密。适用于网络环境不太安全,管理员交叉操作多的情况下。通过认证和加密既可以限制特定的管理员访问设备,并且使网络数据以加密形式发送,避免网络数据被窃取,造成关键数据泄露。


希望网管在指定视图下具有只读权限时(比如级别比较低的管理员),使用read-view参数。 希望网管在指定视图下具有读写权限时(比如级别比较高的管理员),使用write-view参数。当希望过滤不相关告警并配置被管理设备只向网管发送指定MIB节点的告警信息,使用notify-view参数。如果配置了该参数,只有notify-view视图下的MIB节点的告警会发送到网管。