还在为SNMP故障发愁?一文带你解决

号主:老杨丨11年资深网络工程师更多网工提升干货,请关注公众号:网络工程师俱乐部

下午好,我的网工朋友。

最近有朋友在后台私聊我们,SNMP故障咋整?发愁!来来来,今天就来聊聊这个。

没错,就是那个简单网络管理协议,它在我们的网络监控和管理中扮演着至关重要的角色。

但是,你是否遇到过因为SNMP配置不当而导致的网络故障?或者,你是否曾经因为交换机的告警信息无法及时送达而感到焦虑?

常见的SNMP故障包括网络连接故障、配置错误、资源限制、安全设置问题等。

今天就来分析一波,如何高效地处理这些棘手问题的实用技巧。防患于未然,记得一键三连!

今日文章阅读福利:《 62页-华为SNMP配置学习指南 》

更多SNMP配置学习,可以查看这份文档啊。扫码发送暗号“snmp”,即可获取此份完整的配置手册。

01 SNMP是啥?

SNMP是广泛应用于TCP/IP网络的网络管理标准协议。网管系统可以通过SNMP协议对网络设备(包括交换机、路由器、防火墙等)进行监测和管理。

如上图所示,SNMP网络的组成包括网管、被纳管设备、中间网络,这几部分都有可能导致网管与被纳管设备之间的SNMP交互异常。

本文档主要介绍网管通过SNMP协议对交换机进行监测、管理中的常见故障处理方法,主要包括以下几方面:

  • 网管无法通过SNMP纳管交换机
  • 网管接收不到交换机上的告警

02 网管无法通过SNMP纳管交换机

网管无法通过SNMP纳管交换机,或者说网管无法与交换机进行SNMP对接,通常是因为网络或者SNMP配置原因导致。可以从以下几方面进行排查和处理:

  • 检查网络是否可以ping通
  • 检查SNMP是否有应用ACL
  • 检查交换机上是否有undo snmp-agent protocol source-status all-interface配置
  • 检查交换机上是否有SNMP认证失败等日志
  • 检查交换机和网管的SNMP版本是否一致
  • 针对SNMPv2c版本,检查交换机和网管的团体名是否一致
  • 针对SNMPv3版本,检查用户的安全级别是否正确
  • 针对SNMPv3版本,检查用户的认证+加密的模式及密码是否和网管侧一致
  • 检查防火墙是否允许SNMP报文通过
  • 检查网络中是否有重复的SNMP引擎ID

01 检查网络是否可以ping通

网络可以互通是SNMP对接的前提,您可以通过ping命令检查交换机和网管能否互通。如果不能互通,请检查交换机、中间网络或网管上的路由配置是否正确,确保交换机和网管能够ping通。

需要注意的是,即使交换机和网管之间能够ping通,也并不意味着交换机和网管一定能够正常接收到对端发送的SNMP报文。因为ping是ICMP报文,而SNMP是UDP报文,可能会因为ACL的应用,或者网络中有防火墙等原因,导致SNMP报文被过滤,无法通过网络正常转发。

您可以在网络设备上进行流量统计或者镜像抓包等方法确认SNMP报文是否被正常发送、接收。因为不同网络设备的流量统计或镜像抓包方法不尽相同,本文不再赘述。

02 检查SNMP是否有应用ACL

如果交换机上的SNMP配置里有应用ACL,那么网管的IP地址必须在ACL规则允许通过的列表中。如果检查网管IP地址没有被放通,需要修改ACL规则,放通网管IP地址。

#
acl number 2001
rule 5 permit source 192.168.1.0 0.0.0.255   //网管IP地址必须在允许通过的列表中
#


snmp-agent community write cipher xxx acl 2001   //SNMPv2c版本应用ACL的配置示例
#
snmp-agent group v3 huawei_group privacy write-view alliso acl 2001    //SNMPv3版本应用ACL的配置示例
#

03 检查交换机上是否有undo snmp-agent protocol source-status all-interface配置

#
undo snmp-agent protocol source-status all-interface
undo snmp-agent protocol source-status ipv6 all-interface
#

如果交换机上有上述配置,需要打开SNMP协议使用所有或者部分接口响应网管请求的功能。

  • 打开SNMP协议使用所有接口响应网管请求的功能。
[~HUAWEI] snmp-agent protocol source-status all-interface
[~HUAWEI] snmp-agent protocol source-status ipv6 all-interface
  • 打开指定的接口响应网管请求的功能。
[~HUAWEI] snmp-agent protocol source-interface meth 0/0/0

04 检查交换机上是否有SNMP认证失败等日志

在网管与交换机进行SNMP对接失败时,交换机上可能会记录一些SNMP异常的日志,例如:SNMP/3/SNMP_AUTHEN_FAILED。可以执行命令display logbuffer查看交换机上是否有SNMP异常日志,并根据日志中记录的原因而进行相应的处理。

SNMP/3/SNMP_AUTHEN_FAILED: Failed to login through SNMP. (Version=[Version], UserName=[UserName], Ip=[Ip], VpnName=[VpnName], RequestID=[RequestID], PduType=[PduType], Reason=[Reason])

05 检查交换机和网管的SNMP版本是否一致

SNMP有v1、v2c、v3几种版本,交换机侧和网管侧的SNMP版本必须保持一致,否则无法进行SNMP对接。

缺省情况下,交换机的SNMP版本为v3。您可以检查配置文件或者通过命令display snmp-agent sys-info version查看当前交换机的SNMP版本。如果两侧SNMP版本不一致,需要修改交换机或网管侧,使其保持一致。

例如配置交换机的SNMP版本支持v2c。

[~HUAWEI] snmp-agent sys-info version v2c

06 针对SNMPv2c版本,检查交换机和网管的团体名是否一致

团体名包括只读权限的团体名和读写权限的团体名,交换机侧和网管侧配置的团体名必须一致。

交换机上配置的SNMP团体名是以密文的形式保存的。如果忘记配置的团体名,建议重新配置团体名,使之与网管侧一致。

#
snmp-agent sys-info version v2c
snmp-agent community read cipher xxx    //只读权限团体名
snmp-agent community write cipher xxx   //读写权限团体名
#

07 针对SNMPv3版本,检查用户的安全级别是否正确

SNMPv3用户的安全级别分为三个等级,从高到低为:

privacy:认证并加密

authentication:认证不加密

none:不认证不加密

SNMPv3协议规定,用户和告警主机的安全级别不能低于其所属用户组的安全级别,否则网管将无法与交换机对接。如果用户组是privacy级别,用户和告警主机就必须是privacy级别;用户组是authentication级别,用户和告警主机可以是privacy或者authentication级别。

#
snmp-agent sys-info version v3
snmp-agent group v3 dc-admin privacy read-view rd write-view wt notify-view nt   //组名为dc-admin,安全级别为privacy
#
snmp-agent usm-user v3 uhmroot
snmp-agent usm-user v3 uhmroot group dc-admin    //用户名为uhmroot,属于dc-admin组
snmp-agent usm-user v3 uhmroot authentication-mode sha cipher xxx    //认证模式及密码
snmp-agent usm-user v3 uhmroot privacy-mode aes128 cipher xxx//加密模式及密码,如果用户组安全级别为privacy,用户必须同时配置authentication-mode和privacy-mode
#

08 针对SNMPv3版本,检查用户的认证+加密的模式及密码是否和网管侧一致

交换机侧SNMPv3用户的认证、加密的模式及密码必须和网管侧保持一致,否则无法完成SNMP对接。

交换机上配置的SNMP密码是以密文的形式保存的。如果忘记配置的密码,建议重新配置认证、加密的模式及密码,使之与网管侧一致。

#
snmp-agent usm-user v3 uhmroot
snmp-agent usm-user v3 uhmroot group dc-admin
snmp-agent usm-user v3 uhmroot authentication-mode sha cipher xxx   //认证模式及密码,必须和网管侧一致
snmp-agent usm-user v3 uhmroot privacy-mode aes128 cipher xxx       //加密模式及密码,必须和网管侧一致
#

09 检查防火墙是否允许SNMP报文通过

如果交换机和网管之间的网络中有防火墙,则可能会因为防火墙的过滤策略而导致SNMP报文无法正常通过。以Huawei防火墙为例,防火墙默认丢弃所有的报文,只有在防火墙策略中放行的报文才能正常转发。

在检查防火墙上的安全策略时,需要注意策略中的以下几点:

  • 交换机所属的安全域和网管所属的安全域之间的策略,交换机和网管的IP地址需要被放通,且双向都需要放通。
  • 防火墙上连接交换机和网管的接口需要开启SNMP服务。
#
security-policy
rule name policy1      //安全域策略
 source-zone trust      //源安全域
 destination-zone untrust      //目的安全域
 source-address 10.1.1.0 mask 255.255.255.0      //源IP地址,交换机或网管地址需要在此范围内
 destination-address 10.1.2.0 mask 255.255.255.0      //目的IP地址,交换机或网管IP地址需要在此范围内
 action permit
rule name policy2
 source-zone untrust
 destination-zone trust
 source-address 10.1.2.0 mask 255.255.255.0
 destination-address 10.1.1.0 mask 255.255.255.0
 action permit
#
interface GigabitEthernet1/0/0      //连接交换机或网管的接口
undo shutdown
ip address 10.1.2.1 255.255.255.0
service-manage snmp permit      //开启SNMP服务,缺省情况下SNMP服务未开启
#

10 检查网络中是否有重复的SNMP引擎ID

正常情况下,网络中每台交换机都会有一个唯一的SNMP引擎ID,用于标志一个SNMP实体。如果网络中交换机的SNMP引擎ID有重复,那么后添加的交换机将无法与网管进行对接。

#
snmp-agent
snmp-agent local-engineid 800007DB03D0C65B9E5D01    //SNMP引擎ID
#

SNMP引擎ID重复通常出现于复制其他交换机的配置文件后,再进行修改并使用的场景,容易漏修改原交换机使用的SNMP引擎ID。如果发现SNMP引擎ID有重复,可以在交换机上通过undo snmp-agent local-engineid恢复ID为缺省值,使其唯一。

[~HUAWEI] undo snmp-agent local-engineid

03 网管接收不到交换机上的告警

当交换机发生故障或因某些原因导致系统进入不正常的工作状态时,为帮助用户快速感知并定位问题,系统会产生事件和告警,同时触发产生相应的Trap信息。Trap信息通过SNMP协议上报到网管系统,在实际应用中,习惯把Trap直接称为告警,为便于理解,下文中的告警和Trap是同一个含义。

网管能够收到交换机告警的前提是网管已经成功纳管交换机,所以在处理网管接收不到告警的问题前,请先确保网管能够正常纳管交换机,然后从以下几方面进行排查和处理:

  • 检查交换机上告警开关是否打开,或告警是否被过滤
  • 检查交换机是否有set net-manager vpn-instance配置
  • 检查交换机发送告警时使用的SNMP版本是否与全局SNMP版本一致
  • 检查交换机的SNMP告警端口号和网管侧是否一致

01 检查交换机上告警开关是否打开,或告警是否被过滤

网管接收到告警的前提是交换机真实产生了告警或事件,并产生了相应的Trap信息,因此在网管接收不到告警时,首先需要确认交换机是否产生了Trap。

执行命令display trapbuffer查看Trap缓冲区中是否存在对应的告警信息。如果不存在,则说明交换机没有产生告警,网管也就无法收到告警,此时可以通过检查交换机的如下配置进行排查:

  • 检查对应的告警开关是否开启。

例如,接口Down的告警为:IFNET_1.3.6.1.6.3.1.1.5.3 linkdown ,IFNET为告警所属的模块。通过命令display snmp-agent trap feature-name feature-name all,可以查看到交换机上接口Down告警开关是否打开,其中“Current switch status”值即表示当前告警开关的开启状态。

<HUAWEI> display snmp-agent trap feature-name ifnet all
------------------------------------------------------------------------------
Feature name: IFNET
Trap number : 4
------------------------------------------------------------------------------
Trap name                      Default switch status   Current switch status
hwPhysicalAdminIfDown          on                      on
hwPhysicalAdminIfUp            on                      on
linkdown                      off                     off
linkup                         off                     off

如果告警被关闭,可以执行命令snmp-agent trap enable feature-name feature-name trap-name trap-name可以打开对应告警的开关。

[~HUAWEI] snmp-agent trap enable feature-name ifnet trap-name linkdown

或者执行命令snmp-agent trap enable打开所有告警的开关。

[~HUAWEI] snmp-agent trap enable
  • 检查告警是否被过滤掉。

如果交换机上配置了info-center filter-id { id | bymodule-alias modname alias }命令过滤了相应的Trap,那么即使交换机产生了该告警,也不会产生Trap信息,网管也无法收到该告警。

#
info-center filter-id bymodule-alias ifnet linkdown
#

如果有上述配置,可以执行undo info-center filter-id { id | bymodule-alias modname alias }删除该配置

[~HUAWEI] undo info-center filter-id bymodule-alias ifnet linkdown

02 检查交换机是否有set net-manager vpn-instance配置

通常情况下,交换机上配置SNMP发送告警信息时,除了指定目标网管外,还会使用snmp-agent trap source interface-type interface-number命令指定发送告警的源接口。这样在网管上可以进行告警源识别。

但是交换机上若同时配置了set net-manager vpn-instance vpn-instance命令,且该VPN和snmp-agent trap source interface-type interface-number命令指定的源接口绑定的VPN不是同一个,那么交换机会优先使用set net-manager vpn-instance vpn-instance命令指定的VPN里的某个接口作为源接口,这样会导致网管无法接受到正确源地址的告警。

例如交换机上有以下配置。那么交换机发送告警至网管时,源接口将是vpn1里的LoopBack2,而不是LoopBack1。

#                                                                                                                                  
interface LoopBack1
ip address 1.1.1.1 255.255.255.255
#                                                                                                                                  
interface LoopBack2
ip binding vpn-instance vpn1
ip address 2.2.2.2 255.255.255.255
#
set net-manager vpn-instance vpn1     //如果配置该命令,优先使用该命令指定的VPN里的接口来发送告警
#
snmp-agent target-host trap address udp-domain 10.1.1.1 params securityname uhmroot v3 privacy      //指定接收告警的目标网管
#
snmp-agent trap source LoopBack1      //指定发送告警的源接口
#

若产生了上述冲突场景,可以采用下面其中一种方法解决:

【1】执行undo set net-manager vpn-instance删除该配置。

删除该配置前,请先确认对其他业务模块的影响,因为该命令不仅仅会影响SNMP模块,还会对FTP、SFTP、Info Center、SSH、TACACS等业务模块产生影响。

【2】在snmp-agent target-host trap命令中指定源接口。

该命令中指定的源接口参数source interface-type interface-number具有最高优先级。

[~HUAWEI] snmp-agent target-host trap address udp-domain 10.1.1.1 source loopback1 params securityname uhmroot v3 privacy

03 检查交换机发送告警时使用的SNMP版本是否与全局SNMP版本一致

交换机上snmp-agent target-host trap命令指定的发送告警时使用的SNMP版本,需要与snmp-agent sys-info version指定的全局SNMP版本一致,否则交换机无法正常发送出告警。在配置snmp-agent target-host trap命令时,如果不指定SNMP版本,则默认使用SNMPv1。

例如以下配置中,全局SNMP协议使能的是v3版本,而未指定发送告警时所使用的SNMP版本,使用默认的v1版本,两者的版本不一致,因此交换机无法正常发送出告警。

snmp-agent sys-info version v3      //仅使能SNMPv3版本
snmp-agent target-host trap address udp-domain 10.1.1.1 params

需要在snmp-agent target-host trap命令中指定发送告警时使用的SNMP版本,使其和全局的版本一致。

[~HUAWEI] snmp-agent target-host trap address udp-domain 10.1.1.1 params securityname uhmroot v3 privacy

04 检查交换机的SNMP告警端口号和网管侧是否一致

按照SNMP协议规范,SNMP使用目的端口号162来发送告警信息。因此,网管通常使用端口号162来处理告警信息,例如Huawei的eSight网管系统。

如果交换机上snmp-agent target-host trap配置里指定了目的端口号(缺省情况下为162),且与网管侧不一致,则会导致网管无法正常接收告警信息。

#
snmp-agent target-host trap address udp-domain 10.1.1.1 udp-port 161 params securityname uhmroot v3 privacy
#

建议使用默认的目的端口号。

#
snmp-agent target-host trap address udp-domain 10.1.1.1 params securityname u

整理:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值