【太閣課堂】網(wǎng)絡(luò)工程師大招:SNMP 常見故障處理
SNMP是廣泛應(yīng)用于TCP/IP網(wǎng)絡(luò)的網(wǎng)絡(luò)管理標(biāo)準(zhǔn)協(xié)議。網(wǎng)管系統(tǒng)可以通過SNMP協(xié)議對(duì) 網(wǎng)絡(luò)設(shè)備(包括交換機(jī)、路由器、防火墻等)進(jìn)行監(jiān)測(cè)和管理。
圖 1-1 SNMP 網(wǎng)絡(luò)架構(gòu)

如上圖所示,SNMP網(wǎng)絡(luò)的組成包括網(wǎng)管、被納管設(shè)備、中間網(wǎng)絡(luò),這幾部分都有可能導(dǎo)致網(wǎng)管與被納管設(shè)備之間的SNMP交互異常。
本文主要介紹網(wǎng)管通過SNMP協(xié)議對(duì)交換機(jī)進(jìn)行監(jiān)測(cè)、管理中的常見故障處理方法,主要包括以下幾方面:● 2 網(wǎng)管無法通過SNMP 納管交換機(jī) ● 3 網(wǎng)管接收不到交換機(jī)上的告警
2 網(wǎng)管無法通過 SNMP 納管交換機(jī)
網(wǎng)管無法通過SNMP納管交換機(jī),或者說網(wǎng)管無法與交換機(jī)進(jìn)行SNMP對(duì)接,通常是因?yàn)榫W(wǎng)絡(luò)或者SNMP配置原因?qū)е隆D梢詮囊韵聨追矫孢M(jìn)行排查和處理:
檢查網(wǎng)絡(luò)是否可以ping 通
檢查SNMP 是否有應(yīng)用ACL
檢查交換機(jī)上是否有
undo snmp-agent protocol source-status all-interface
?配置檢查交換機(jī)上是否有SNMP 認(rèn)證失敗等日志
檢查交換機(jī)和網(wǎng)管的SNMP 版本是否一致
針對(duì)SNMPv2c 版本,檢查交換機(jī)和網(wǎng)管的團(tuán)體名是否一致
針對(duì)SNMPv3 版本,檢查用戶的安全級(jí)別是否正確
針對(duì)SNMPv3 版本,檢查用戶的認(rèn)證+ 加密的模式及密碼是否和網(wǎng)管側(cè)一致
檢查防火墻是否允許SNMP 報(bào)文通過
檢查網(wǎng)絡(luò)中是否有重復(fù)的SNMP 引擎ID
檢查網(wǎng)絡(luò)是否可以 ping 通
網(wǎng)絡(luò)可以互通是SNMP對(duì)接的前提,您可以通過ping命令檢查交換機(jī)和網(wǎng)管能否互通。如果不能互通,請(qǐng)檢查交換機(jī)、中間網(wǎng)絡(luò)或網(wǎng)管上的路由配置是否正確,確保交換機(jī)和網(wǎng)管能夠ping通。
需要注意的是,即使交換機(jī)和網(wǎng)管之間能夠ping通,也并不意味著交換機(jī)和網(wǎng)管一定能夠正常接收到對(duì)端發(fā)送的SNMP報(bào)文。因?yàn)閜ing是ICMP報(bào)文,而SNMP是UDP報(bào)文,可能會(huì)因?yàn)锳CL的應(yīng)用,或者網(wǎng)絡(luò)中有防火墻等原因,導(dǎo)致SNMP報(bào)文被過濾,無法通過網(wǎng)絡(luò)正常轉(zhuǎn)發(fā)。
您可以在網(wǎng)絡(luò)設(shè)備上進(jìn)行流量統(tǒng)計(jì)或者鏡像抓包等方法確認(rèn)SNMP報(bào)文是否被正常發(fā)送、接收。因?yàn)椴煌W(wǎng)絡(luò)設(shè)備的流量統(tǒng)計(jì)或鏡像抓包方法不盡相同。
檢查 SNMP 是否有應(yīng)用 ACL
如果交換機(jī)上的SNMP配置里有應(yīng)用ACL,那么網(wǎng)管的IP地址必須在ACL規(guī)則允許通過的列表中。如果檢查網(wǎng)管IP地址沒有被放通,需要修改ACL規(guī)則,放通網(wǎng)管IP地址。
#acl?number?2001rule?5?permit?source?192.168.1.0?0.0.0.255?//網(wǎng)管IP地址必須在允許通過的列表中#snmp-agent?community?write?cipher?xxx?acl?2001?//SNMPv2c版本應(yīng)用ACL的配置示例#snmp-agent?group?v3?huawei_group?privacy?write-view?alliso?acl?2001?//SNMPv3版本應(yīng)用ACL的配置示例#
檢查交換機(jī)上是否有 undo snmp-agent protocol source-status all-interface 配置
CloudEngine交換機(jī)從V200R019C10版本開始,缺省情況下,交換機(jī)會(huì)關(guān)閉SNMP協(xié)議使用所有接口響應(yīng)網(wǎng)管請(qǐng)求的功能,即有如下配置:
#undo?snmp-agent?protocol?source-status?all-interfaceundo?snmp-agent?protocol?source-status?ipv6?all-interface#
如果交換機(jī)上有上述配置,需要打開SNMP協(xié)議使用所有或者部分接口響應(yīng)網(wǎng)管請(qǐng)求的功能。
打開SNMP協(xié)議使用所有接口響應(yīng)網(wǎng)管請(qǐng)求的功能。
[?~?HUAWEI]?snmp-agent?protocol?source-status?all-interface[?~?HUAWEI]?snmp-agent?protocol?source-status?ipv6?all-interface
打開指定的接口響應(yīng)網(wǎng)管請(qǐng)求的功能。
[?~?HUAWEI]?snmp-agent?protocol?source-interface?meth?0/0/0
檢查交換機(jī)上是否有 SNMP 認(rèn)證失敗等日志
在網(wǎng)管與交換機(jī)進(jìn)行SNMP對(duì)接失敗時(shí),交換機(jī)上可能會(huì)記錄一些SNMP異常的日志,例如:SNMP/3/SNMP_AUTHEN_FAILED。您可以執(zhí)行命令display logbuffer
查看交換機(jī)上是否有SNMP異常日志,并根據(jù)日志中記錄的原因而進(jìn)行相應(yīng)的處理。
SNMP/3/SNMP_AUTHEN_FAILED:?Failed?to?login?through?SNMP.?(Version=[Version],UserName=[UserName],?Ip=[Ip],?VpnName=[VpnName],?RequestID=[RequestID],?PduType=[PduType],Reason=[Reason])
檢查交換機(jī)和網(wǎng)管的 SNMP 版本是否一致
SNMP有v1、v2c、v3幾種版本,交換機(jī)側(cè)和網(wǎng)管側(cè)的SNMP版本必須保持一致,否則無法進(jìn)行SNMP對(duì)接。
缺省情況下,交換機(jī)的SNMP版本為v3。您可以檢查配置文件或者通過命令displaysnmp-agent sys-info version
查看當(dāng)前交換機(jī)的SNMP版本。如果兩側(cè)SNMP版本不一致,需要修改交換機(jī)或網(wǎng)管側(cè),使其保持一致。
例如配置交換機(jī)的SNMP版本支持v2c。
[?~?HUAWEI]?snmp-agent?sys-info?version?v2c
針對(duì) SNMPv2c 版本,檢查交換機(jī)和網(wǎng)管的團(tuán)體名是否一致
團(tuán)體名包括只讀權(quán)限的團(tuán)體名和讀寫權(quán)限的團(tuán)體名,交換機(jī)側(cè)和網(wǎng)管側(cè)配置的團(tuán)體名必須一致。
交換機(jī)上配置的SNMP團(tuán)體名是以密文的形式保存的。如果忘記配置的團(tuán)體名,建議重新配置團(tuán)體名,使之與網(wǎng)管側(cè)一致。
#snmp-agent?sys-info?version?v2csnmp-agent?community?read?cipher?xxx?//只讀權(quán)限團(tuán)體名snmp-agent?community?write?cipher?xxx?//讀寫權(quán)限團(tuán)體名#
針對(duì) SNMPv3 版本,檢查用戶的安全級(jí)別是否正確
SNMPv3用戶的安全級(jí)別分為三個(gè)等級(jí),從高到低為:
privacy:認(rèn)證并加密
authentication:認(rèn)證不加密
none:不認(rèn)證不加密
SNMPv3協(xié)議規(guī)定,用戶和告警主機(jī)的安全級(jí)別不能低于其所屬用戶組的安全級(jí)別,否則網(wǎng)管將無法與交換機(jī)對(duì)接。如果用戶組是privacy級(jí)別,用戶和告警主機(jī)就必須是privacy級(jí)別;用戶組是authentication級(jí)別,用戶和告警主機(jī)可以是privacy或者authentication級(jí)別。
#snmp-agent?sys-info?version?v3snmp-agent?group?v3?dc-admin?privacy?read-view?rd?write-view?wt?notify-view?nt?//組名為dc-admin,安全級(jí)別為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?//認(rèn)證模式及密碼snmp-agent?usm-user?v3?uhmroot?privacy-mode?aes128?cipher?xxx?//加密模式及密碼?,?如果用戶組安全級(jí)別為privacy,用戶必須同時(shí)配置authentication-mode和privacy-mode#
針對(duì) SNMPv3 版本,檢查用戶的認(rèn)證+ 加密的模式及密碼是否和網(wǎng)管側(cè)一致
交換機(jī)側(cè)SNMPv3用戶的認(rèn)證、加密的模式及密碼必須和網(wǎng)管側(cè)保持一致,否則無法完成SNMP對(duì)接。
交換機(jī)上配置的SNMP密碼是以密文的形式保存的。如果忘記配置的密碼,建議重新配置認(rèn)證、加密的模式及密碼,使之與網(wǎng)管側(cè)一致。
#snmp-agent?usm-user?v3?uhmrootsnmp-agent?usm-user?v3?uhmroot?group?dc-adminsnmp-agent?usm-user?v3?uhmroot?authentication-mode?sha?cipher?xxx?//認(rèn)證模式及密碼,必須和網(wǎng)管側(cè)一致snmp-agent?usm-user?v3?uhmroot?privacy-mode?aes128?cipher?xxx?//加密模式及密碼,必須和網(wǎng)管側(cè)一致#
檢查防火墻是否允許 SNMP 報(bào)文通過
如果交換機(jī)和網(wǎng)管之間的網(wǎng)絡(luò)中有防火墻,則可能會(huì)因?yàn)榉阑饓Φ倪^濾策略而導(dǎo)致SNMP報(bào)文無法正常通過。以Huawei防火墻為例,防火墻默認(rèn)丟棄所有的報(bào)文,只有在防火墻策略中放行的報(bào)文才能正常轉(zhuǎn)發(fā)。
在檢查防火墻上的安全策略時(shí),需要注意策略中的以下幾點(diǎn):
交換機(jī)所屬的安全域和網(wǎng)管所屬的安全域之間的策略,交換機(jī)和網(wǎng)管的IP地址需要被放通,且雙向都需要放通。
防火墻上連接交換機(jī)和網(wǎng)管的接口需要開啟SNMP服務(wù)。
#security-policyrule?name?policy1?//安全域策略source-zone?trust?//源安全域destination-zone?untrust?//目的安全域source-address?10.1.1.0?mask?255.255.255.0?//源IP地址,交換機(jī)或網(wǎng)管地址需要在此范圍內(nèi)destination-address?10.1.2.0?mask?255.255.255.0?//目的IP地址,交換機(jī)或網(wǎng)管IP地址需要在此范圍內(nèi)action?permitrule?name?policy2source-zone?untrustdestination-zone?trustsource-address?10.1.2.0?mask?255.255.255.0destination-address?10.1.1.0?mask?255.255.255.0action?permit#interface?GigabitEthernet1/0/0?//連接交換機(jī)或網(wǎng)管的接口undo?shutdownip?address?10.1.2.1?255.255.255.0service-manage?snmp?permit?//開啟SNMP服務(wù),缺省情況下SNMP服務(wù)未開啟#
檢查網(wǎng)絡(luò)中是否有重復(fù)的 SNMP 引擎 ID
正常情況下,網(wǎng)絡(luò)中每臺(tái)交換機(jī)都會(huì)有一個(gè)唯一的SNMP引擎ID,用于標(biāo)志一個(gè)SNMP實(shí)體。如果網(wǎng)絡(luò)中交換機(jī)的SNMP引擎ID有重復(fù),那么后添加的交換機(jī)將無法與網(wǎng)管進(jìn)行對(duì)接。
#snmp-agentsnmp-agent?local-engineid?800007DB03D0C65B9E5D01?//SNMP引擎ID#
SNMP引擎ID重復(fù)通常出現(xiàn)于復(fù)制其他交換機(jī)的配置文件后,再進(jìn)行修改并使用的場(chǎng)景,容易漏修改原交換機(jī)使用的SNMP引擎ID。如果發(fā)現(xiàn)SNMP引擎ID有重復(fù),可以在交換機(jī)上通過undo snmp-agent local-engineid
恢復(fù)ID為缺省值,使其唯一。
[?~?HUAWEI]?undo?snmp-agent?local-engineid
3 網(wǎng)管接收不到交換機(jī)上的告警
當(dāng)交換機(jī)發(fā)生故障或因某些原因?qū)е孪到y(tǒng)進(jìn)入不正常的工作狀態(tài)時(shí),為幫助用戶快速感知并定位問題,系統(tǒng)會(huì)產(chǎn)生事件和告警,同時(shí)觸發(fā)產(chǎn)生相應(yīng)的Trap信息。Trap信息通過SNMP協(xié)議上報(bào)到網(wǎng)管系統(tǒng)。在實(shí)際應(yīng)用中,習(xí)慣把Trap直接稱為告警,為便于理解,下文中的告警和Trap是同一個(gè)含義。
網(wǎng)管能夠收到交換機(jī)告警的前提是網(wǎng)管已經(jīng)成功納管交換機(jī),所以在處理網(wǎng)管接收不到告警的問題前,請(qǐng)先確保網(wǎng)管能夠正常納管交換機(jī),然后從以下幾方面進(jìn)行排查和處理:
檢查交換機(jī)上告警開關(guān)是否打開,或告警是否被過濾
檢查交換機(jī)是否有
set net-manager vpn-instance
?配置檢查交換機(jī)發(fā)送告警時(shí)使用的SNMP 版本是否與全局SNMP 版本一致
檢查交換機(jī)的SNMP 告警端口號(hào)和網(wǎng)管側(cè)是否一致
檢查交換機(jī)上告警開關(guān)是否打開,或告警是否被過濾
網(wǎng)管接收到告警的前提是交換機(jī)真實(shí)產(chǎn)生了告警或事件,并產(chǎn)生了相應(yīng)的Trap信息,因此在網(wǎng)管接收不到告警時(shí),首先需要確認(rèn)交換機(jī)是否產(chǎn)生了Trap。
執(zhí)行命令display trapbuffer
查看Trap緩沖區(qū)中是否存在對(duì)應(yīng)的告警信息。如果不存在,則說明交換機(jī)沒有產(chǎn)生告警,網(wǎng)管也就無法收到告警,此時(shí)可以通過檢查交換機(jī)的如下配置進(jìn)行排查:
檢查對(duì)應(yīng)的告警開關(guān)是否開啟。
例如,接口Down的告警為:IFNET_1.3.6.1.6.3.1.1.5.3 linkdown ,IFNET為告警所屬的模塊。通過命令display snmp-agent trap feature-name feature-nameall
,可以查看到交換機(jī)上接口Down告警開關(guān)是否打開,其中“Current switchstatus”值即表示當(dāng)前告警開關(guān)的開啟狀態(tài)。
<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
如果告警被關(guān)閉,可以執(zhí)行命令snmp-agent trap enable feature-name feature-name trap-name trap-name
?可以打開對(duì)應(yīng)告警的開關(guān)。
??[?~?HUAWEI]?snmp-agent?trap?enable?feature-name?ifnet?trap-name?linkdown
或者執(zhí)行命令snmp-agent trap enable
打開所有告警的開關(guān)。
[?~?HUAWEI]?snmp-agent?trap?enable
檢查告警是否被過濾掉。
如果交換機(jī)上配置了info-center filter-id { id | bymodule-alias modnamealias }
命令過濾了相應(yīng)的Trap,那么即使交換機(jī)產(chǎn)生了該告警,也不會(huì)產(chǎn)生Trap信息,網(wǎng)管也無法收到該告警。
#info-center?filter-id?bymodule-alias?ifnet?linkdown#
如果有上述配置,可以執(zhí)行undo info-center filter-id { id | bymodule-aliasmodname alias }
刪除該配置
[?~?HUAWEI]?undo?info-center?filter-id?bymodule-alias?ifnet?linkdown
檢查交換機(jī)是否有 set net-manager vpn-instance 配置
通常情況下,交換機(jī)上配置SNMP發(fā)送告警信息時(shí),除了指定目標(biāo)網(wǎng)管外,還會(huì)使用snmp-agent trap source interface-type interface-number
?命令指定發(fā)送告警的源接口。這樣在網(wǎng)管上可以進(jìn)行告警源識(shí)別。
但是交換機(jī)上若同時(shí)配置了set net-manager vpn-instance vpn-instance
?命令,且該VPN和snmp-agent trap source interface-type interface-number
?命令指定的源接口綁定的VPN不是同一個(gè),那么交換機(jī)會(huì)優(yōu)先使用set net-manager vpn-instance vpn-instance
?命令指定的VPN里的某個(gè)接口作為源接口,這樣會(huì)導(dǎo)致網(wǎng)管無法接受到正確源地址的告警。
例如交換機(jī)上有以下配置。那么交換機(jī)發(fā)送告警至網(wǎng)管時(shí),源接口將是vpn1里的LoopBack2,而不是LoopBack1。
#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?//如果配置該命令,優(yōu)先使用該命令指定的VPN里的接口來發(fā)送告警#snmp-agent?target-host?trap?address?udp-domain?10.1.1.1?params?securityname?uhmroot?v3?privacy?//指定接收告警的目標(biāo)網(wǎng)管#snmp-agent?trap?source?LoopBack1?//指定發(fā)送告警的源接口#
若產(chǎn)生了上述沖突場(chǎng)景,可以采用下面其中一種方法解決:
執(zhí)行
undo set net-manager vpn-instance
刪除該配置。
刪除該配置前,請(qǐng)先確認(rèn)對(duì)其他業(yè)務(wù)模塊的影響,因?yàn)樵撁畈粌H僅會(huì)影響SNMP模塊,還會(huì)對(duì)FTP、SFTP、Info Center、SSH、TACACS等業(yè)務(wù)模塊產(chǎn)生影響。
在
snmp-agent target-host trap
命令中指定源接口。該命令中指定的源接口參數(shù)source interface-type interface-number
?具有最高優(yōu)先級(jí)。
[?~?HUAWEI]?snmp-agent?target-host?trap?address?udp-domain?10.1.1.1?source?loopback1?params?securityname?uhmroot?v3?privacy
檢查交換機(jī)發(fā)送告警時(shí)使用的 SNMP 版本是否與全局 SNMP 版本一致
交換機(jī)上snmp-agent target-host trap
命令指定的發(fā)送告警時(shí)使用的SNMP版本,需要與snmp-agent sys-info version
指定的全局SNMP版本一致,否則交換機(jī)無法正常發(fā)送出告警。在配置snmp-agent target-host trap
命令時(shí),如果不指定SNMP版本,則默認(rèn)使用SNMPv1。
例如以下配置中,全局SNMP協(xié)議使能的是v3版本,而未指定發(fā)送告警時(shí)所使用的SNMP版本,使用默認(rèn)的v1版本,兩者的版本不一致,因此交換機(jī)無法正常發(fā)送出告警。
snmp-agent?sys-info?version?v3?//僅使能SNMPv3版本snmp-agent?target-host?trap?address?udp-domain?10.1.1.1?params?securityname?uhmroot?//未配置交換機(jī)發(fā)送告警所使用的SNMP版本,默認(rèn)使用SNMPv1版本
需要在snmp-agent target-host trap
命令中指定發(fā)送告警時(shí)使用的SNMP版本,使其和全局的版本一致。
[?~?HUAWEI]?snmp-agent?target-host?trap?address?udp-domain?10.1.1.1?params?securityname?uhmroot?v3?privacy
檢查交換機(jī)的 SNMP 告警端口號(hào)和網(wǎng)管側(cè)是否一致
按照SNMP協(xié)議規(guī)范,SNMP使用目的端口號(hào)162來發(fā)送告警信息。因此,網(wǎng)管通常使用端口號(hào)162來處理告警信息,例如Huawei的eSight網(wǎng)管系統(tǒng)。
如果交換機(jī)上snmp-agent target-host trap
配置里指定了目的端口號(hào)(缺省情況下為162),且與網(wǎng)管側(cè)不一致,則會(huì)導(dǎo)致網(wǎng)管無法正常接收告警信息。
#snmp-agent?target-host?trap?address?udp-domain?10.1.1.1?udp-port?161?params?securityname?uhmroot?v3privacy#
建議使用默認(rèn)的目的端口號(hào)。
#snmp-agent?target-host?trap?address?udp-domain?10.1.1.1?params?securityname?uhmroot?v3?privacy