还在为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 2001rule 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-interfaceundo 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 v2csnmp-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 v3snmp-agent group v3 dc-admin privacy read-view rd write-view wt notify-view nt   //组名为dc-admin,安全级别为privacy#snmp-agent usm-user v3 uhmrootsnmp-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 uhmrootsnmp-agent usm-user v3 uhmroot group dc-adminsnmp-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-policyrule 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 permitrule 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 shutdownip address 10.1.2.1 255.255.255.0service-manage snmp permit      //开启SNMP服务,缺省情况下SNMP服务未开启#

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

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

#snmp-agentsnmp-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: IFNETTrap number : 4------------------------------------------------------------------------------Trap name                      Default switch status   Current switch statushwPhysicalAdminIfDown          on                      onhwPhysicalAdminIfUp            on                      onlinkdown                      off                     offlinkup                         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里的某个接口作为源接口,这样会导致网管无法接受到正确源地址的告警。

#                                                                                                                                  interface LoopBack1ip address 1.1.1.1 255.255.255.255#                                                                                                                                  interface LoopBack2ip binding vpn-instance vpn1ip 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 uhmroot v3 privacy

 文章声明 

本文素材整理自网络公开领域,版权归原作者所有,由网络工程师俱乐部排版成文,转载请注明出处,侵删。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值