BMC的SNMP Trap告警上报无法接收
[测试在验证openUBMC的SNMP Trap告警上报功能时,通过测试功能发送报文,发现SNMP软件无法接收到上报的测试信息。通过wireshark抓包能够找到发送的消息,但是SNMP 软件始终无法收到。后续验证了华为的iBMC版本现象一样。随后测试在鲲鹏大板机型上验证告警上报功能,SNMP软件工具正常收到测试信息]
环境信息
- 操作系统:openUIBMC2512LTS iBMC
重现步骤
-
创建新用户,用于配置SNMP v3用户登录
-
打开SNMP Trap使能功能
-
在 网络管理系统 中配置服务端IP
-
点击测试,验证SNMP Trap功能
期望结果
[SNMP 软件能够接受到SNMP Trap报文]
实际结果
[SNMP软件没有接受到Trap报文,但是使用wireshark工具抓包能够抓到该报文]
尝试过的解决方案
[1.更换SNMP 软件 2.重新配置SNMP v3用户,并测试该用户可用性。]
答案内容由AI生成,仅供参考:
问题分析
根据您的描述,在 openUBMC 系统中配置 SNMP Trap 告警上报后,Wireshark 可以抓到发出的报文,但 SNMP 接收软件无法收到。这与提供的 Context 中多份文档(特别是 SNMP Trap 测试环境搭建指南)所描述的配置要点和常见问题一致。以下结合上下文信息,列出可能的原因及对应的解决建议。
可能原因及建议
1. SNMP 版本不匹配(最常见)
- 现象:您配置了 SNMPv3 用户 并发送测试报文,Wireshark 能抓到 SNMPv3 报文,但接收软件无法解析。
- 依据:在 SNMP Trap 上报测试环境搭建指南 中明确指出:
注:免费版本仅支持 SNMPv1 和 SNMPv2c 协议,不支持 SNMPv3 协议
- 如果使用的 Mib Browser 或其他 SNMP 接收工具是免费版,则无法接收 SNMPv3 的 Trap 报文。
- 建议:
- 确认所用 SNMP 接收软件是否支持 SNMPv3。若不支持,可改用支持 v3 的完整版工具(如 MG-SOFT 企业版、SolarWinds、PRTG 等)。
- 或者将 Trap 版本切换为 SNMPv1 或 SNMPv2c(需在 BMC Web 界面中修改 Trap 版本配置)。
2. 接收端端口未正确配置或端口被占用
- 现象:Wireshark 抓到报文,但接收端程序没有反应,可能因端口冲突导致程序无法绑定监听端口。
- 依据:同一份指南强调:
“配置端口时,尽量选择不常用的端口,以免端口占用导致 trap 上报失败”
- 并且测试环境搭建中明确指明了接收端监听端口(如 5100)应与 BMC 配置的“网络管理系统端口”一致。
- 建议:
- 在 BMC 的 维护诊断 → 告警上报 → SNMP 报文通知 界面,确认“网络管理系统”的 IP 和端口与接收端工具监听端口一致。
- 检查该端口是否被其他程序占用(可在 Windows 使用
netstat -ano | findstr :<port> 排查)。
- 更换一个不常用的端口(如 5100、6200 等)重新配置。
3. SNMPv3 鉴权密码与加密算法未同步配置
- 现象:BMC 配置了 SNMPv3 用户并设置了加密密码和算法,但接收端工具未进行对应的 V3 配置。
- 依据:在 SNMPv3 配置部分说明:
“打开 Mib Browser,进行网络管理系统接收端 SNMP V3 配置,其中鉴权密码即为该 V3 用户的登录密码”
- 接收端必须与 BMC 使用相同的 鉴权密码(Authentication Passphrase)、隐私密码(Privacy Passphrase) 以及 协议(MD5/SHA、DES/AES)。
- 建议:
- 在 BMC Web 界面(用户&安全 → 本地用户)编辑 V3 用户,记录设置的 SNMPv3 加密密码和算法。
- 在接收端工具的 SNMPv3 配置中,输入相同的鉴权密码(即该用户的登录密码)、隐私密码,并选择同样的鉴权协议和加密协议。
4. NMS 目标地址配置错误
- 现象:Wireshark 抓到报文,但报文的目标地址可能是本地回环或错误 IP,导致并未真正发往接收端。
- 依据:知识图谱关系明确指出:
“SNMP Trap 需要正确配置 Trap Target Address 才能发送成功”
- BMC Web 界面中的“网络管理系统 IP”必须是接收端工具的 实际监听 IP(若本机测试,通常是本地 IP 或 VPN IP,而非 127.0.0.1)。
- 建议:
- 在 BMC 上确认配置的 IP 与接收端工具所在机器的 IP 一致。
- 如果在 Windows 本机测试,使用
ipconfig 获取本地 IP(或 VPN 分配的 IP)。
5. 接收端防火墙/安全策略拦截
- 虽然 Context 未直接提及,但测试环境搭建指南中要求“网络管理系统和 BMC 网络互通”,而 Wireshark 能抓到报文说明网络层可到达,但 Windows 防火墙可能阻止应用程序接收特定 UDP 端口。
- 建议:检查接收端所在系统的防火墙,确保允许入站 UDP 端口(与配置的 Trap 接收端口一致)。
6. 测试报文与正式告警的差异
- Context 中的“使用 ipmi 命令查询 snmp trap 日发送量异常问题分析”提及:
“调用 web 页面那些模拟上报的话,不会记录到日发送量里面”
- 但测试按钮发送的是明确的测试 Trap 报文,与正式告警机制略有不同,但理论上两者都应可达。可尝试通过触发实际告警(如模拟传感器事件)来验证接收端是否能收到真实事件。
总结排查步骤
- 确认接收端软件版本:检查是否支持所用的 SNMP Trap 版本(v1、v2c、v3)。若不支持 v3,改用 v1/v2c 或升级工具。
- 核对端口配置:BMC 配置的端口与接收端监听端口完全一致,且端口未被占用。
- 同步 SNMPv3 安全参数:若使用 v3,确保接收端配置的鉴权/隐私密码及算法与 BMC 上设定的一致。
- 验证 IP 可达性:在接收端使用
ping 测试 BMC IP,在 BMC 上确认目标 IP 接收端工具所绑定的 IP(本地 IP 而非回环地址)。
- 尝试真实告警:通过传感器触发告警(而非仅发送测试报文),观察 T rap Ringer Console 或接收工具是否收到。
以上分析和建议均来源于您提供的 Context 中的文档内容。如果仍未解决,请提供更详细的配置截图(如 BMC 界面、接收端配置、Wireshark 报文内容),以便进一步定位。
麻烦确认下snmpv3 trap告警报文的msgAuthoritativeEngineTime字段是否恒为零,如果是的话,这个问题是由于客户端校验该字段存在误差超过150s后拒收snmp trap报文
抓包后确认了,msgAuthoritativeEngineTime不为0,会一直变化,几百到几千中间变化。msgAuthoritativeEngineBoots一直为0。同时还对比了一下设备与服务端时间,相差不到1分钟
对比了一下V2版本的天池设备,该设备能够正常接收到SNMP Trap的测试数据。通过抓包后发现V2设备的报文中msgAuthoritativeEngineBoots不为0。后续测试发现,能够软件端能够接受的设备,在触发告警后,上报的报警中msgAuthoritativeEngineBoots会增加,没触发或者一次告警,该值都会增加。但是在当前openUBMC中发现,告警无论如何触发或者解除,该字段msgAuthoritativeEngineBoots始终为0。
有点怀疑是不是该问题导致的,现在需要了解该字段如何在openUBMC中修改?
msgAuthoritativeEngineBoots这个是代表snmp服务重启次数,这个可以在openUBMC上查看/var/net-snmp/snmpd.conf确认,该文件中的engineBoots次数就对应着报文里msgAuthoritativeEngineBoots的值,只要执行killall snmpd重启snmp服务这个值就会加一
现在转对比这样这个有区别,没看到其他区别。服务端始终收不到openUBMC的Trap报文 
重启openUBMC的snmp服务之后msgAuthoritativeEngineBoots的值应该就不为0了,接收端仍无法接收v3 trap报文么? 使用的是什么snmp接收端?
使用的是manageengine工具。用MG-SOFT MIB Browser验证过,都无法收到Trap数据
验证了一下,好像所有V3版本的BMC,包括iBMC,openuBMC都收不到
是否可能是因为SNMPv3加密密码和SNMPv3算法的配置与接收端不一致的问题,snmp v3 trap上报功能目前内部测试是正常上报的
用户配置的加密密码和工具端是对的上的,工具使用V3用户能够正常连接设备并获取信息。我不确定你说的加密密码是不是值得是用户配置的密码?V3和V2的加密方式不一样吗?这个加密方式可以改动吗?
后续换了一个工具,换成最新的 iReasoning MIB Browser个人版,通过log发现无法解析。原来正常接收的V2版本现在也解析失败了,日志打印显示Received packet could not be decoded。确实是有点像工具版本问题
在本地用户 =》编辑用户中可以SNMPv3加密密码和SNMPv3算法的配置,鉴权算法和加密算法可以试下进行修改,接收端也同步进行修改保持一致
如果你使用的mib browser是在Windows系统上的话,也可以试下在系统搜索栏中搜“服务”,然后找到MG-SOFT SNMP Trap Sevice服务,然后选择重新启动按钮重启服务试下是否可以接收到报文
确认了,是工具问题。使用的工具版本太老了,更新到新版本后正常接收