配置设备使用SNMPv3 USM用户与网管通信
配置SNMPv3功能后,网管和设备之间将使用SNMPv3进行通信。为了保证网管和设备之间的正常通信,需要配置网管侧和Agent侧,本节只介绍Agent侧的配置,网管侧的配置请参考网管的操作手册。
配置SNMPv3的基本功能
配置SNMP的基本功能后,网管即可与被管理设备间进行基本的监控和管理操作,比如GET和SET相关数据,被管理设备主动向网管发送告警。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令snmp-agent password min-length min-length,配置SNMP密码的最小长度。
配置了该命令后,用户配置SNMP密码时,密码长度必须大于等于配置的SNMP密码的最小长度。
- (可选)执行命令snmp-agent,启动SNMP Agent服务。
执行任意snmp-agent的配置命令(无论是否含参数)都可以触发SNMP Agent服务启动,故该步骤可选。
- (可选)执行命令snmp-agent udp-port port-number修改SNMP Agent侦听的端口号。
如果不执行此步骤,会使用缺省端口号进行侦听。
- (可选)执行命令snmp-agent sys-info version v3,配置SNMP的协议版本。
- 执行命令snmp-agent group v3 group-name { authentication | privacy | noauthentication } [ read-view read-view | write-view write-view | notify-view notify-view ] * [ acl { acl-number | acl-name } ],配置SNMP用户组。
当网管和设备处在不安全的网络环境中时,比如容易遭受攻击,建议用户配置参数authentication或privacy,使能数据的认证和加密功能。
用户可以选择的认证加密模式如下:不配置authentication和privacy参数或配置noauthentication参数:不认证不加密。适用于网络环境安全,且管理员比较固定的情况下。
配置authentication参数:只认证不加密。适用于网络环境安全,但管理员个数多,管理员对设备交叉操作比较频繁的情况下。通过认证可以限制拥有权限的管理员才可以访问该设备。
配置authentication和privacy参数:既认证又加密。适用于网络环境不太安全,管理员交叉操作多的情况下。通过认证和加密既可以限制特定的管理员访问设备,并且使网络数据以加密形式发送,避免网络数据被窃取,造成关键数据泄露。
希望网管在指定视图下具有只读权限时(比如级别比较低的管理员),使用read-view参数。
希望网管在指定视图下具有读写权限时(比如级别比较高的管理员),使用write-view参数。
当希望过滤不相关告警并配置被管理设备只向网管发送指定MIB节点的告警信息,使用notify-view参数。如果配置了该参数,只有notify-view视图下的MIB节点的告警会发送到网管。
- (可选)执行命令snmp-agent local-engineid engineid,设置本地SNMP实体的引擎ID。
其中,系统采用主控板的管理网口MAC地址作为引擎ID的“设备信息”。
为了提高系统安全性,建议执行snmp-agent packet contextengineid-check enable命令对contextEngineID和本地的引擎ID进行一致性检查。
- 请根据网络需要选择下面的命令进行配置:
如果是IPv4网络,请根据需要选择配置Trap方式告警或Inform方式告警:
Trap方式告警和Inform方式告警的区别如下:
被管理设备发送Trap方式告警时,不需要网管回应确认信息,因此不需要配置remote-engineid。
被管理设备发送Inform方式告警时,需要告警主机回应确认消息,因此需要在主机侧使用命令指定网管端的Engine ID等参数,此时remote-engineid必须为接收告警的目的主机的Engine ID。在超时时间范围内没有收到告警主机的回应消息时,被管理设备将重新发送该告警,直至发送的告警个数达到配置的重复发送最大次数。
被管理设备发送Inform告警时,同时记录告警日志,方便告警主机故障或链路故障恢复后,告警主机能够同步故障时间内产生的告警。
因此,Inform告警相比Trap方式告警更加可靠,但由于重传机制的存在,可能导致设备需要缓存大量的告警信息,占用设备较多内存资源。
建议用户在网络比较稳定时选择Trap方式告警;在设备资源充足且网络不太稳定的环境下,选择配置Inform方式告警。
Inform报文和Trap报文的目的主机不能配置为同一个主机,若两者配置相同,则后配置的会覆盖先配置的。
配置Trap方式告警:- 执行命令snmp-agent usm-user v3 user-name group-name [ authentication-mode { md5 | sha } password [ privacy-mode { des56 | 3des168 | aes128 | aes192 | aes256 } password ] ] [ acl { acl-number | acl-name } ],配置SNMP USM用户以及SNMP USM用户的认证、加密方式和密码。
- 执行命令snmp-agent target-host [ host-name host-name ] trap address udp-domain ip-address [ [ udp-port port-number ] | [ source interface-type interface-number ] | [ public-net | vpn-instance vpn-instance-name ] ] * params securityname { security-name [ v3 [ authentication | privacy ] ] | private-netmanager | ext-vb | notify-filter-profile profile-name } *,配置设备发送Trap告警和错误码的目的主机。
配置Inform方式告警:
- 执行命令snmp-agent remote-engineid remote-engineid-name usm-user v3 user-name group-name [ authentication-mode { md5 | sha } password [ privacy-mode { des56 | 3des168 | aes128 | aes192 | aes256 } password ] ] [ acl { acl-number | acl-name } ],配置SNMP USM用户以及SNMP USM用户的认证、加密方式和密码。
- 执行命令snmp-agent target-host [ host-name host-name ] inform address udp-domain ip-address [ [ udp-port port-number ] | [ source interface-type interface-number ] | [ public-net | vpn-instance vpn-instance-name ] ] * params securityname { security-name { v3 [ authentication | privacy ] } } [ ext-vb | notify-filter-profile profile-name | private-netmanager ] *,配置设备发送Inform告警和错误码的目的主机。
- 如果是IPv6网络,只支持配置Trap方式告警:
- 执行命令snmp-agent usm-user v3 user-name group-name [ authentication-mode { md5 | sha } password [ privacy-mode { des56 | 3des168 | aes128 | aes192 | aes256 } password ] ] [ acl { acl-number | acl-name } ],配置SNMP USM用户以及SNMP USM用户的认证、加密方式和密码。
- 执行命令snmp-agent target-host [ host-name host-name ] trap ipv6 address udp-domain ipv6-address [ udp-port port-number | [ { vpn-instance vpn-instance-name | public-net } ] | source interface-type interface-number ] * params securityname { security-name [ v3 [ authentication | privacy ] | private-netmanager | ext-vb | notify-filter-profile profile-name ] * },配置设备发送Trap告警和错误码的目的主机。
请参考下面的说明对参数进行选取:
目的UDP(User Datagram Protocol)端口号缺省是162,如果有特殊需求,可以配置udp-port将UDP端口号更改为非知名端口号,保证网管和被管理设备的正常通信。
如果被管理设备发送的告警需要通过公网传递给网管时,选择参数public-net;如果被管理设备发送的告警需要通过私网传递给网管时,选择参数vpn-instance vpn-instance-name,指定告警需要穿越的VPN实例。
securityname用来在网管上标识和区别发送告警的源设备,方便用户识别告警的发送方。
当网管和被管理设备是华为设备时,可以选择配置private-netmanager,使告警中携带更丰富的信息,比如告警的类型、发送告警的序号和告警发送的时间,以便能更加快速的定位和解决问题。
设备产生过多的告警会影响用户对故障根因的排查,为了减少无关告警对用户定位故障造成的影响,用户可以选择配置notify-filter-profile参数,筛选出用户关心的告警,这些告警将被发送至告警主机,其他无关告警将被设备过滤掉,不再发送至告警主机。要使告警的过滤策略生效,用户还需要在配置用户组时选取notify-view参数。
可以使用snmp-agent usm-user password complexity-check disable命令关闭密码复杂度功能。但是为了保证系统安全性,建议开启此功能。
为了提高系统安全性,建议为同一SNMP USM用户配置不同的认证和加密密码。
- (可选)执行命令snmp-agent sys-info { contact contact | location location },配置设备管理员的联系方法和位置。
当网管管理多台设备时,为了方便网管管理员记录设备管理员的联系方式和位置,在设备异常时快速联系设备管理员进行故障排除和定位,可配置该功能。
- (可选)执行命令snmp-agent packet max-size byte-count,配置设备接收或发送的SNMP消息包的最大值。
配置SNMP报文的最大尺寸后,当SNMP报文尺寸大于配置的最大尺寸时,设备将丢弃该报文。
- (可选)配置SNMP接收和响应网管请求报文,用户可以根据需要选择执行如下命令中的一个或者多个:
- 执行命令snmp-agent protocol source-interface interface-type interface-number,配置SNMP接收和响应网管请求报文的源接口信息。
- 执行命令snmp-agent protocol ipv6 source-ip ip–address,配置SNMP接收和响应网管请求报文的源IPv6地址。
- 配置SNMP从VPN或者公网接收和响应网管请求报文。
- 对于IPv4网络,执行命令snmp-agent protocol { vpn-instance vpn-instance-name | public-net }。
- 对于IPv6网络,执行命令snmp-agent protocol ipv6 { vpn-instance vpn-instance-name | public-net }。
- (可选)执行命令snmp-agent extend error-code enable,使能SNMP扩展错误码功能。
- (可选)执行命令snmp-agent set-cache enable,使能SET回应报文缓冲功能。
- (可选)执行命令snmp-agent get-cache disable,关闭GET回应报文缓冲功能。
- (可选)执行命令snmp-agent get-cache age-out age-out,配置GET回应报文缓冲功能的老化时间。
- (可选)执行命令snmp-agent protocol get-bulk timeout time,配置网管get-bulk操作超时返回的时间阈值。
建议不要修改网管get-bulk超时返回的时间,使用缺省2秒即可。如果需要重新配置,配置的阈值时间必须小于网管的超时时间。
- (可选)执行命令snmp-agent protocol server [ ipv4 | ipv6 ] disable,关闭SNMP IPv4或IPv6的侦听端口。
执行snmp-agent protocol server disable命令关闭SNMP IPv4或IPv6的侦听端口后,SNMP将不再处理对应的SNMP报文,因此请慎重操作。
- 执行命令commit,提交配置。
后续处理
以上任务配置完成后,网管就可以和被管理设备之间进行正常的基本通信。其中:
访问控制是使用该团体名的网管都可以对设备上的所有节点进行监控和管理。
被管理设备向网管发送缺省状态是打开的模块的告警。
如果需要进行更精细化的管理,按照如下说明配置被管理设备:
要使用该团体名中的指定网管来管理设备的指定节点,请参考限制网管对设备的访问权限进行配置。
需要被管理设备上指定模块的告警发送到网管,请参考配置向网管系统发送Trap告警或配置向网管系统发送Inform告警进行配置。
(可选)限制网管对设备的访问权限
通过限定指定地址的网管管理设备,以及限定网管管理的MIB节点,可以增强网管和被管理设备使用SNMPv3进行通信时的安全性。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令acl { name basic-acl-name { basic | [ basic ] number basic-acl-number } | [ number ] basic-acl-number } [ match-order { config | auto } ],创建一个基本访问控制列表,过滤管理设备的网管用户。
SNMP只支持基本访问控制列表(2000~2999)。
- 执行命令rule [ rule-id ] [ name rule-name ] { deny | permit } [ fragment-type { fragment | non-fragment | non-subseq | fragment-subseq | fragment-spe-first } | source { source-ip-address { source-wildcard | 0 | src-netmask } | any } | time-range time-name | [ vpn-instance vpn-instance-name | vpn-instance-any ] ] *,配置基本ACL的规则。
如果登录用户的地址匹配上的ACL规则的动作是permit,那么用户可以登录设备;
如果登录用户的地址匹配上的ACL规则的动作是deny,那么用户被禁止登录;
如果登录用户的地址不在ACL规则指定的允许范围内,那么此用户被禁止登录;
如果引用的ACL中不存在规则或者引用的ACL不存在,那么用户登录时不受ACL的控制,用户可以登录设备。
- 执行命令commit,提交配置。
- 执行命令quit,退回至系统视图。
- 执行命令snmp-agent mib-view { excluded | included } view-name oid-tree,创建MIB视图并限定网管监控和管理的MIB节点。
需要网管管理设备上的绝大部分MIB节点,只有一少部分节点不允许网管管理时,或者在现有的MIB视图中希望取消网管对某些节点的访问权限时,使用参数excluded,排除这些MIB节点。
需要网管管理设备上的一少部分MIB节点,绝大部分节点不允许网管管理时,或者在现有的MIB视图中添加网管对某些节点的访问权限时,使用参数included,添加这些允许管理的MIB节点。
- (可选)执行命令snmp-agent acl { acl-number | acl-name },配置SNMP的访问控制列表。
- 执行命令snmp-agent group v3 group-name { authentication | privacy | noauthentication } [ read-view read-view | write-view write-view | notify-view notify-view ] * [ acl { acl-number | acl-name } ],配置SNMP用户组。
当网管和设备处在不安全的网络环境中时,比如容易遭受攻击,建议用户配置参数authentication或privacy,使能数据的认证和加密功能。
用户可以选择的认证加密模式如下:不配置authentication和privacy参数或配置noauthentication参数:不认证不加密。适用于网络环境安全,且管理员比较固定的情况下。
配置authentication参数:只认证不加密。适用于网络环境安全,但管理员个数多,管理员对设备交叉操作比较频繁的情况下。通过认证可以限制拥有权限的管理员才可以访问该设备。
配置authentication和privacy参数:既认证又加密。适用于网络环境不太安全,管理员交叉操作多的情况下。通过认证和加密既可以限制特定的管理员访问设备,并且使网络数据以加密形式发送,避免网络数据被窃取,造成关键数据泄露。
希望网管在指定视图下具有只读权限时(比如级别比较低的管理员),使用read-view参数。
希望网管在指定视图下具有读写权限时(比如级别比较高的管理员),使用write-view参数。
当希望过滤不相关告警并配置被管理设备只向网管发送指定MIB节点的告警信息,使用notify-view参数。如果配置了该参数,只有notify-view视图下的MIB节点的告警会发送到网管。
- 执行命令commit,提交配置。
(可选)配置向网管发送Trap告警
配置向网管发送告警可以设定发送指定的告警,方便用户定位重要的问题。指定发送告警的相关参数,可以增加告警发送的可靠性。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令snmp-agent trap enable,使能发送Trap报文。
- 执行命令snmp-agent
trap enable feature-name feature-name trap-name trap-name,使能向网管发送指定特性下的某条告警信息。
使用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命令将该特性的所有告警开关的配置清除。
- 执行命令snmp-agent trap source interface-type interface-number,指定发送Trap的源端接口。
指定源接口后,将以源接口IP地址作为发送的Trap报文的源IP地址。为了保证设备的安全性,发送的源地址最好配置为本地的loopback地址。
路由器端配置的Trap报文的源接口和网管站配置的路由器发送报文的接口需要一致,否则网管站无法接收路由器发送的Trap报文。
- 执行命令snmp-agent trap source-port port-number,修改发送Trap报文的源端口号。
配置发送Trap报文的源端口为固定端口,用户防火墙可以针对此端口进行报文过滤,从而提高网络报文的安全性。
- (可选)执行命令snmp-agent
trap type { base-trap | entity-trap },配置上送网管的告警信息格式。
VS模式下,该命令仅在Admin VS支持。
- 执行命令commit,提交配置。
(可选)配置向网管发送Inform告警
使能了SNMP代理功能的路由器可产生两种告警:Trap告警和Inform告警。Trap消息通知网管该网络出了状况,Inform告警通知网管网络出了状况并要求网管回复确认。Inform告警将不断发往网管直到收到确认消息。因此,Inform比trap更可靠。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令snmp-agent trap enable,使能发送Trap报文。
- 执行命令snmp-agent
trap enable feature-name feature-name trap-name trap-name,使能向网管发送指定特性下的某条告警信息。
使用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命令一次关闭一个告警开关。
- (可选)执行命令snmp-agent inform { timeout seconds | resend-times times | pending number } *,设置等待Inform确认消息的超时时间、Inform重传次数、未确认的Inform最大个数。
如果网络不太稳定,应适当增大超时时间,并增加Inform的重传次数和未确认的Inform最大个数。
- 执行命令snmp-agent inform { timeout seconds | resend-times times } * [ host-name host-name | address udp-domain ip-address [ vpn-instance vpn-instance-name ] params securityname security-name ],设置等待Inform确认消息的超时时间、Inform重传次数。
- 执行命令snmp-agent
notification-log enable,使能告警日志功能。
如果被管理设备与网管之间的链路发生故障,导致路由不可达。被管理设备不再发送Inform告警,但是继续记录告警日志。当链路恢复正常,路由变为可达后,目标主机将同步被管理设备在链路故障期间记录的告警日志。
使能告警日志功能后,系统只记录Inform方式的告警,不记录Trap方式的告警。
- 执行命令snmp-agent notification-log { global-ageout ageout | global-limit limit } *,配置告警日志的老化时间和日志缓冲区中最多能保存的告警日志条数。
超过24小时,告警日志被自动删除。
超出这个限制,将从最早的一条告警日志开始删除。
- 执行命令commit,提交配置。
(可选)配置SNMPv3防攻击功能
为了提高安全性,SNMPv3支持黑名单功能,防止恶意用户攻击,破坏用户密码。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令undo snmp-agent blacklist ip-block disable,使能IP地址黑名单功能。
- 执行命令undo snmp-agent blacklist user-block disable,使能用户黑名单功能。
- 执行命令snmp-agent blacklist user-block failed-times failed-times period period-time,设置SNMP v3用户的最大连续认证失败次数。
- 执行命令snmp-agent
blacklist user-block reactive reactive-time,指定SNMP v3用户认证失败超过指定次数后的锁定时间。
超过锁定时间后自动解锁用户,用户可以继续认证。
如果需要将锁定的用户立刻解锁,可以执行snmp-agent activate usm-user user-name [ remote-engineid remote-engineid ]命令。
- 执行命令commit,提交配置。
检查配置结果
配置SNMPv3成功后,用户可以查看到SNMPv3的配置情况。
操作步骤
- 执行display snmp-agent usm-user [ engineid engineid | group group-name | username user-name ] *命令查看用户信息。
- 执行display snmp-agent sys-info version命令查看SNMP使能的版本信息。
- 执行display acl acl-number命令显示配置的访问控制列表的规则。
- 执行display snmp-agent mib-view命令查看MIB视图信息。
- 执行display snmp-agent mib modules命令查看被加载的MIB文件信息。
- 执行display snmp-agent sys-info contact命令查看管理员的联系方式。
- 执行display snmp-agent sys-info location命令查看路由器的位置。
- 执行display current-configuration | include max-size命令查看SNNP报文的最大尺寸。
- 执行display current-configuration | include trap命令查看Trap配置信息。
- 执行display snmp-agent target-host命令查看目标主机的信息。
- 执行display snmp-agent inform [ host-name host-name | [ address udp-domain ip-address [ vpn-instance vpn-instance-name ] params securityname security-name ] ]命令查看全局或指定目标主机的Inform参数、主机统计信息。
- 执行display snmp-agent vacmgroup 命令,查看VACM(View-based Access Control Model)组信息。