SNMP简单网络协议

本文内容来自《20211223-H3C SecPath [L100][L1000][L5000][ADE插卡]负载均衡产品 产品文档(V7)-6W400.chm》

0 背景介绍

工作中遇到了要为设备配置SNMP,并通过监控系统来实现SNMP监控设备的需求,借此机会系统学习下SNMP简单网络协议。需要被配置的设备是H3C L5060负载均衡设备

1 SNMP简介

1.1 SNMP网络架构

如下图所示,SNMP网络架构由三部分组成,NMS(Network Management System,网络管理系统),Agent和MIB(Management Information Base,管理信息库)。

NMS是SNMP网络的管理者,可以通过SNMP协议获取Agent上的参数值,方便网络管理员完成网络管理工作。

Agent是被管理者,接受来自NMS的SNMP报文。某些情况下,Agent也会主动向NMS发送告警消息。

MIB是被管理对象的集合。NMS管理设备的时候,通常会关注设备的一些参数,比如接口状态、CPU利用率等,这些参数就是被管理对象,在MIB中成为节点。MIB定义了节点之间的层次关系以及对象的一系列属性,以MIB文件的形式存在。被管理设备都有自己的MIB文件,在NMS上编译这些MIB文件,就能生成该设备的MIB。NMS根据访问权限对MIB节点进行读/写操作,从而实现对Agent的管理。

1.2 MIB和MIB视图

MIB以树状结构进行存储。树的每个节点都是一个被管理对象,它用从根开始的一条路径唯一地识别(OID)。如所示,被管理对象B可以用一串数字{1.2.1.1}唯一确定,这串数字是被管理对象的OID(Object Identifier,对象标识符)。

MIB视图是MIB的子集合,将团体名/用户名与MIB视图绑定,可以限制NMS能够访问的MIB对象。当用户配置MIB视图包含某个MIB子树时,NMS可以访问该子树的所有节点;当用户配置MIB视图不包含某个MIB子树时,NMS不能访问该子树的所有节点

1.3 SNMP基本操作

SNMP提供以下基本操作:

  • Get操作:NMS使用该操作查询Agent MIB中节点的值。

  • Set操作:NMS使用该操作配置Agent MIB中节点的值。

  • 告警操作:SNMP告警包括Trap和Inform两种。

  • Trap操作:Agent使用该操作向NMS发送Trap报文。Agent不要求NMS发送回应报文,NMS也不会对Trap报文进行回应。SNMPv1、SNMPv2c和SNMPv3均支持Trap操作。

  • Inform操作:Agent使用该操作向NMS发送Inform报文。Agent要求NMS发送回应报文,因此,Inform报文比Trap报文更可靠,但消耗的系统资源更多。如果Agent在一定时间内没有收到NMS的回应报文,则会启动重发机制。只有SNMPv2c和SNMPv3支持Inform操作。

1.4 SNMP版本介绍

设备支持SNMPv1、SNMPv2c和SNMPv3三种版本。只有NMS和Agent使用的SNMP版本相同时,NMS才能和Agent建立连接。

  • SNMPv1采用团体名(Community Name)认证机制。团体名类似于密码,用来限制NMS和Agent之间的通信。如果NMS配置的团体名和被管理设备上配置的团体名不同,则NMS和Agent不能建立SNMP连接,从而导致NMS无法访问Agent,Agent发送的告警信息也会被NMS丢弃。

  • SNMPv2c也采用团体名认证机制。SNMPv2c对SNMPv1的功能进行了扩展:提供了更多的操作类型;支持更多的数据类型;提供了更丰富的错误代码,能够更细致地区分错误。

  • SNMPv3采用USM(User-Based Security Model,基于用户的安全模型)认证机制。网络管理员可以配置认证和加密功能。认证用于验证报文发送方的合法性,避免非法用户的访问;加密则是对NMS和Agent之间的传输报文进行加密,以免被窃听。采用认证和加密功能可以为NMS和Agent之间的通信提供更高的安全性。

  • 1.5 SNMP支持的访问控制方式

SNMP支持的访问控制方式包括:

  • VACM(View-based Access Control Model,基于视图的访问控制模型):将团体名/用户名与指定的MIB视图进行绑定,可以限制NMS能够访问哪些MIB对象,以及对MIB对象不同的操作权限。

  • RBAC(Role Based Access Control,基于角色的访问控制):创建团体名/用户名时,可以指定对应的用户角色,通过用户角色下制定的规则,来限制NMS能够访问哪些MIB对象,以及对MIB对象不同的操作权限。

  • 拥有network-admin、context-admin或level-15用户角色的SNMP团体/用户,可以对所有的MIB对象进行读写操作;

  • 拥有network-operator或context-operator用户角色的SNMP团体/用户,可以对所有的MIB对象进行读操作;

  • 拥有自定义用户角色的SNMP团体/用户,可以对角色规则中指定的MIB对象进行操作。

对于同一SNMP用户名/团体名,只能配置一种控制方式,多次使用两种控制方式配置同一用户名/团体名时,以最后一次的配置方式为准。

RBAC配置方式限制的是MIB节点的读写权限,VACM配置方式限制的是MIB视图的读写权限,而一个视图中通常包括多个MIB节点。所以,RBAC配置方式更精准、更灵活。

2 SNMP配置

2.1 开启SNMP功能

2.1.1 配置限制和指导

执行除snmp-agent calculate-password外任何以snmp-agent开头的命令,都可以开启SNMP功能。

当SNMP侦听端口被设备上的其他服务占用时,会导致SNMP功能启动失败。SNMP侦听端口可通过snmp-agent port命令配置,用户可使用display udp verbose命令查看设备上UDP端口的使用情况。关于display udp verbose命令的详细介绍,请参见“三层技术-IP业务”中的“IP性能优化”。

用户修改SNMP模块的相关配置后,如果关闭SNMP Agent功能,这些配置将暂时不生效。执行display current-configuration命令不会显示这些命令,执行save命令,这些配置也不会保存到配置文件。开启SNMP Agent功能后,这些配置会自动立即生效,不需要重复配置。

2.1.2 配置步骤

//进入系统视图
system-view
//启动SNMP功能,缺省情况下,SNMP功能处于关闭状态
snmp-agent

2.2 配置SNMP版本

2.2.1 配置限制和指导

5060设备支持SNMPv1、SNMPv2c和SNMPv3三种版本。只有NMS和设备使用的SNMP版本相同时,NMS才能和Agent建立连接。

如果在IPv6环境下,要使用SNMP告警功能,请将SNMP版本号配置为v2c或者v3。

2.2.2 配置步骤

//进入系统视图
system-view
//配置设备支持的SNMP
snmp-agent sys-info version { all | { v1 | v2c | v3 } * }
//缺省情况下,启用SNMPv3版本。
//多次执行该命令配置不同的版本时,各配置均生效,设备会和NMS协商一个版本进行通信

2.3 配置SNMPv1/v2c/v3版本公共参数

2.3.1 配置限制和指导

设备出厂时,已分配了全网唯一的SNMP引擎ID。并且,SNMPv3版本的用户名、密文密码等都和引擎ID相关联,如果更改了引擎ID,则原引擎ID下配置的用户名、密码失效。所以,通常情况下,请不要修改设备的SNMP引擎ID。

SNMP引擎ID有两个作用:
(1)在NMS管理的所有设备中,每一台设备都需要用一个唯一的引擎ID来标识Agent,缺省情况下每个设备有一个缺省的引擎ID,网络管理员需要确保管理域内不能有重复的引擎ID。
(2)SNMPv3版本的用户名、密文密码等都和引擎ID相关联,如果更改了引擎ID,则原引擎ID下配置的用户名、密码失效。
通常情况下,使用设备的缺省引擎ID即可,用户也可以根据网络整体规划给设备配置方便记忆的引擎ID,比如A栋一楼的一号设备可以将它的引擎ID设置为000Af0010001,二号设备可以配置为000Af0010002。

当开启SNMP Agent功能时,如果SNMP侦听端口正被设备上的其它服务占用,会导致SNMP功能启动失败。此时,可修改SNMP侦听端口。如果指定的新端口仍被其它服务占用,则新端口配置失败。建议修改前使用display udp verbose命令查看设备上UDP端口的使用情况。关于display udp verbose命令的详细介绍,请参见“三层技术-IP业务”中的“IP性能优化”。

2.3.2 配置步骤

//(1)进入系统视图
system-view

//(2)配置SNMP服务的侦听端口号。
snmp-agent port 161
//缺省情况下,SNMP服务的侦听端口号是161。

//(3)配置本设备的SNMP引擎ID。
snmp-agent local-engineid engineid
//缺省情况下,设备引擎ID为“公司的企业号+设备信息”。

//(4)配置远端SNMP实体的引擎ID。
snmp-agent remote { ipv4-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] engineid engineid
//缺省情况下,未配置远端SNMP实体的引擎ID。
当设备需要向目的主机(能够解析Trap和Inform报文的设备,通常为NMS)发送SNMPv3 Inform报文时,
该步骤必选。

//(5)创建或者更新MIB视图。
snmp-agent mib-view { excluded | included } view-name oid-tree [ mask mask-value ]
//缺省情况下,存在四个MIB视图,名称均为ViewDefault。
//视图一包含MIB子树iso。
//视图二不包含子树snmpUsmMIB。
//视图三不包含子树snmpVacmMIB。
//视图四不包含子树snmpModules.18。
//MIB视图由视图名和MIB子树来唯一确定。视图名相同但包含的子树不同,则认为是不同的视图。

//(6)配置SNMP管理信息。
//配置设备的维护联系信息。
snmp-agent sys-info contact sys-contact
//缺省情况下,设备的维护联系信息为New H3C Technologies Co., Ltd.
//配置设备的物理位置信息。
snmp-agent sys-info location sys-location
//缺省情况下,物理位置信息为Hangzhou, China。

//(7)创建SNMP上下文。
snmp-agent context context-name
//缺省情况下,不存在SNMP上下文。

//(8)配置Agent能处理的SNMP报文的最大长度。
snmp-agent packet max-size byte-count
//缺省情况下,Agent能处理的SNMP报文的最大长度为1500。

2.4 配置SNMPv1/v2c团体

2.4.1 功能简介

用户可以基于名称配置SNMPv1/v2c团体,或者基于用户配置SNMPv1/v2c团体。两种配置方式,效果相同。基于用户配置指的是先创建SNMP组,再向创建的组中添加SNMPv1/v2c用户,SNMPv1/v2c用户相当于SNMPv1/v2c的团体名,在NMS上配置的团体名需要跟设备上配置的SNMPv1/v2c用户名一致。

2.4.2 配置限制和指导

为了安全起见,只有具有network-admin、context-admin或者level-15用户角色的用户登录设备后才能创建SNMP团体、用户或组。其它角色的用户,即使授权了SNMP特性或相应命令的操作权限,也不能执行相应命令。

2.4.3 基于名称配置SNMPv1/v2c团体

//(1)进入系统视图
system-view
//(2)直接创建SNMP团体
//VACM方式:
snmp-agent community { read | write } [ simple | cipher ] community-name 
[ mib-view view-name ] [ acl { ipv4-acl-number | name ipv4-acl-name }
 | acl ipv6 { ipv6-acl-number | name ipv6-acl-name } ] *
//RBAC方式:
snmp-agent community [ simple | cipher ] community-name user-role role-name
 [ acl { ipv4-acl-number | name ipv4-acl-name } | acl ipv6 { ipv6-acl-number
 | name ipv6-acl-name } ] *
//(3)(可选)创建团体名到SNMP上下文的映射
snmp-agent community-map community-name context context-name

2.4.4 基于用户配置SNMPv1/v2c团体

//(1)进入系统视图
system-view
//(2)通过创建用户来创建SNMP团体
//a.创建SNMPv1/v2c组:
snmp-agent group { v1 | v2c } group-name [ notify-view view-name | read-view
 view-name | write-view view-name ] * [ acl { ipv4-acl-number | name
 ipv4-acl-name } | acl ipv6 { ipv6-acl-number | name ipv6-acl-name } ] *
//b.创建SNMPv1/v2c用户:
snmp-agent usm-user { v1 | v2c } user-name group-name [ acl { ipv4-acl-number
 | name ipv4-acl-name } | acl ipv6 { ipv6-acl-number | name ipv6-acl-name }
 ] *
//(3)(可选)创建团体名到SNMP上下文的映射。
snmp-agent community-map community-name context context-name

2.4.5 配置SNMPv3组和用户

2.5 配置SNMP告警

SNMP告警信息包括Trap和Inform两种,用来告知NMS设备上发生了重要事件,比如,用户的登录/退出,接口状态变成up/down等。业务模块开启告警功能后,会将生成的告警信息发送给SNMP模块,SNMP根据当前的配置封装成Trap和(或)Inform报文发送。如无特殊说明,本文中的告警信息均指Trap和Inform两种信息。

2.5.1 配置限制和指导

因为告警信息通常较多,会占用设备内存,影响设备性能,所以建议用户根据需要开启指定模块的告警功能,生成相应的告警信息。

如果要求接口在链路状态发生改变时生成相应的告警信息,需要在全局和接口下均开启接口链路状态变化的告警功能。如果要生成其它模块的告警信息,除了使用snmp-agent trap enable命令开启告警功能外,还可能需要执行各个模块的相关配置,详情请参见各模块的相关描述。

如果在IPv6环境下,要使用SNMP告警功能,请将SNMP版本号配置为v2c或者v3。

2.5.2 配置步骤

//(1)进入系统视图。
system-view
//(2)开启SNMP告警功能
snmp-agent trap enable [ configuration | protocol | standard [ authentication |
 coldstart | linkdown | linkup | warmstart ] * | system ]
//缺省情况下,SNMP配置告警、标准告警和系统告警功能处于开启状态,其他各模块告警功能是否开启请参见
各模块手册。
//对于协议模块的SNMP告警功能,需要先使能相关协议,本命令才能配置成功。
//(3)进入接口视图
interface interface-type interface-number
//(4)开启接口链路状态变化的告警功能
enable snmp trap updown
//缺省情况下,接口状态变化的告警功能处于开启状态。

2.6 配置告警信息发送参数

2.6.1 功能简介

设备第一次发送告警信息时,会检查设备和目的主机是否路由可达。如果可达,则直接发送。如果不可达,则先将告警信息缓存在消息队列里,等路由可达后,再发送。为防止告警信息累积占用太多内存,用户可以配置该队列的长度以及告警信息在队列里的保存时间。

  • 如果在告警信息发送队列满时系统又收到了新的告警信息,则系统会丢弃新收到的告警信息。

  • 如果用户修改队列长度,导致队列中告警信息数量超过告警信息发送队列的长度,系统会丢弃较老的告警信息。

  • 如果告警信息的发送队列中的某信息到达了已设定的保存时间,则系统会自动删除该告警信息。

对于Trap报文,设备支持重发机制。缺省情况下,设备会监控Trap报文中包含的变量的值,当这些值达到一定要求时,设备会进入告警状态并自动发送Trap报文通知NMS。设备只有进入告警状态或解除告警状态时,才发送Trap报文。使用Trap报文重发机制,当设备一直处于告警状态时,可以按照指定的周期和次数重复发送Trap报文。目前,仅CPU利用率Trap和内存利用率Trap支持重发。

2.6.2 配置Trap报文发送参数

//(1)进入系统视图
system-view

//(2)配置接收SNMP告警信息的目的主机(能够解析Trap和Inform报文的设备,通常为NMS)的属性
snmp-agent target-host trap address udp-domain { ipv4-target-host |
 ipv6 ipv6-target-host } [ source-ip source-ip-address | udp-port port-number |
 vpn-instance vpn-instance-name ] * params securityname security-string [ v1 |
 v2c | v3 [ authentication | privacy ] ]
//缺省情况下,未配置Trap报文的目的主机(能够解析Trap和Inform报文的设备,通常为NMS)。

//(3)(可选)配置发送的Trap报文的源IP地址。
snmp-agent trap source interface-type { interface-number | interface-number.subnumber }
//缺省情况下,使用出接口的IP地址作为Trap报文的源IP地址。
//对于同一NMS,优先使用snmp-agent target-host命令中指定的源IP地址。

2.6.3 配置Inform报文发送参数

//(1)进入系统视图
system-view

//(2)配置Inform报文的发送参数
snmp-agent target-host inform address udp-domain { ipv4-target-host | ipv6 
ipv6-target-host } [ source-ip source-ip-address | udp-port port-number |
 vpn-instance vpn-instance-name ] * params securityname security-string { v2c |
 v3 [ authentication | privacy ] }
//缺省情况下,未配置Inform报文的目的主机。
//仅SNMPv2c和SNMPv3版本支持Inform报文。

//(3)(可选)配置发送的Inform报文的源IP地址。
snmp-agent inform source interface-type { interface-number | 
interface-number.subnumber }
//缺省情况下,使用出接口的IP地址作为Inform报文的源IP地址。
//对于同一NMS,优先使用snmp-agent target-host命令中指定的源IP地址。

2.6.4 配置告警信息公共发送参数

//(1)进入系统视图。
system-view

(2)对标准linkUp/linkDown告警信息进行私有扩展。
snmp-agent trap if-mib link extended
//缺省情况下,系统发送的linkUp/linkDown告警信息的格式为标准格式,不对其进行私有扩展。
//配置本命令后,设备生成和发送的linkUp/linkDown告警信息由标准linkUp/linkDown告警信息后加接口描述和接口类型信息构成。如果NMS不支持该扩展信息,请关闭私有扩展功能。

//(3)配置告警信息发送队列的长度。
snmp-agent trap queue-size size
//缺省情况下,告警信息的消息队列最多可以存储100条告警信息。

//(4)配置告警信息的保存时间。
snmp-agent trap life seconds
//缺省情况下,告警信息的保存时间为120秒。

2.7 配置SNMP日志

2.7.1 功能简介

SNMP日志可以记录NMS对Agent的Get请求、Set请求和Set响应信息,不能记录Get响应信息。同时SNMP日志可以记录Agent对NMS的Trap和Inform操作信息以及SNMP认证失败信息。

当进行Get操作时,Agent会记录NMS用户的IP地址、Get操作的节点名和节点OID。

当进行Set操作时,Agent会记录NMS用户的IP地址、Set操作的节点名、节点OID、节点值以及Set操作返回的错误码和错误索引。

当进行Trap和Inform操作时,Agent会向NMS发送告警,Agent会记录告警相关的信息。

当进行SNMP认证操作时,如果Agent收到来自NMS的SNMP请求但是没有通过认证,Agent会记录相关日志。

这些日志将被发送到设备的信息中心,并通过信息中心配置的参数,最终决定SNMP日志的输出规则(即是否允许输出以及输出方向)。SNMP每条日志信息中记录的node域(信息内容对应的MIB节点名)和value域(信息内容对应的MIB节点值)的长度之和不能超过1024字节,超出的部分将不会被输出。有关信息中心的详细介绍请参见“网络管理和监控配置指导”中的“信息中心”。

2.7.2 配置限制和指导

大量的日志记录会占用设备的存储空间,影响设备的性能。正常情况下,建议关闭SNMP日志功能

2.7.3 配置步骤
//(1)进入系统视图。
system-view

//(2)打开SNMP日志开关。
snmp-agent log { all | authfail | get-operation | set-operation }
//缺省情况下,SNMP Set操作日志开关处于开启状态,其他日志开关处于关闭状态。

//(3)打开SNMP告警日志开关。
snmp-agent trap log
//缺省情况下,SNMP告警日志功能处于关闭状态。

2.8 SNMP显示和维护

在完成上述配置后,在任意视图下执行display命令,均可以显示配置后SNMP的运行情况,通过查看显示信息,来验证配置的效果。

在用户视图下执行reset命令可以清除SNMP Trapbuffer中的所有记录。

3 SNMP典型配置举例

3.1 SNMPv1/v2c配置举例

SNMPv1和SNMPv2c的配置方法相同,下面以SNMPv1为例进行配置。

3.1.1 组网情况

NMS与Agent相连,设备的IP地址和掩码如图所示。

NMS通过SNMPv1对Agent进行监控管理,Agent在故障时能够主动向NMS发送告警信息。

3.1.2 配置步骤

3.1.2.1 配置Agent

配置Agent的IP地址为1.1.1.1/24,并确保Agent与NMS之间路由可达。

配置Agent支持SNMPv1版本、只读团体名为public,读写团体名为private

system-view
snmp-agent sys-infor version v1
snmp-agent community read public
snmp-agent community write private

配置设备的联系人和位置信息,以方便维护

snmp-agent sys-info contact sunyuan
snmp-agent syy-info location NingXia,YinChuan

开启NMS告警功能,告警信息发送到主机1.1.1.2,使用团体名为public

snmp-agent trap enable
snmp-agent target-host trap address udp-domain 1.1.1.2 params securityname
 public v1

snmp-agent target-host命令中指定的版本必须和NMS上运行的SNMP版本一致,因此需要将snmp-agent target-host命令中的版本参数配置为v1。否则,NMS无法正确接收告警信息。

3.1.2.2 配置NMS

配置NMS使用的SNMP版本为SNMPv1,只读团体名为public,读写团体名为private。另外,还可以根据需求配置“超时”时间和“重试次数”。具体配置请参考NMS的相关手册。

NMS侧的配置必须和Agent侧保持一致,否则无法通信。

3.2 SNMPv3配置举例

略。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值