SNMP 功能使用指导
概述
本文档介绍 openUBMC SNMP (Simple Network Management Protocol) 功能的使用方法,包括 SNMP Agent 和 SNMP Trap 的配置与使用。SNMP 是一种用于管理网络设备的标准协议,通过 SNMP 可以实现对 BMC 设备的监控和管理。
认识 SNMP
SNMP 协议简介
SNMP (Simple Network Management Protocol) 是一种应用层协议,用于在网络设备之间交换管理信息。SNMP 采用管理站-代理模式,管理系统通过 SNMP 协议向被管理设备的 Agent 发送请求,获取设备状态或设置设备参数。
SNMP 架构
SNMP 架构包含以下组件:
- 管理系统 - 运行网络管理软件的设备,用于监控和管理网络设备
- SNMP Agent - 运行在被管理设备上的软件,响应管理系统的请求
- MIB (Management Information Base) - 管理信息库,定义了设备可管理的信息结构
- SNMP Trap - Agent 主动向管理系统发送的告警消息
SNMP 协议版本
openUBMC 支持以下 SNMP 协议版本:
- SNMP v1 - 初始版本,基于团体名认证
- SNMP v2C - 在 v1 基础上增加了批量数据获取功能
- SNMP v3 - 增强了安全性,支持基于用户的认证和加密
openUBMC SNMP 功能
openUBMC 提供以下 SNMP 功能:
- SNMP Agent - 响应管理系统的 Get、Set、GetNext、GetBulk 请求
- SNMP Trap Bob - 支持 Bob 协议的 Trap 功能
- 标准 MIB 支持 - 支持 RFC 标准定义的 MIB
- 自定义 MIB - 支持厂商自定义的 MIB 扩展
SNMP Agent 使用
认识 SNMP Agent
SNMP Agent 是运行在 BMC 上的代理程序,负责响应管理系统的 SNMP 请求。Agent 可以提供设备的状态信息,接收管理系统的配置命令。
环境要求
- 网络要求:管理系统和 BMC 网络互通
- 权限要求:需要管理员权限配置 SNMP Agent
- 软件要求:管理系统需要安装 SNMP 管理工具
配置 SNMP Agent
启用 SNMP Agent
通过 Redfish 接口启用 SNMP Agent:
PATCH https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/NetworkProtocol请求体:
{
"SNMP": {
"ProtocolEnabled": true
}
}配置 SNMP 团体名
对于 SNMP v1 和 v2C,需要配置团体名进行认证:
PATCH https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/NetworkProtocol请求体:
{
"SNMP": {
"ProtocolEnabled": true,
"EnableSNMPv1": true,
"EnableSNMPv2c": true,
"CommunityStrings": [
{
"CommunityString": "PublicCommunity@123",
"AccessMode": "Limited"
},
{
"CommunityString": "PrivateCommunity@123",
"AccessMode": "Full"
}
]
}
}配置 SNMP v3 用户
对于 SNMP v3,需要配置用户信息:
PATCH https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/NetworkProtocol请求体:
{
"SNMP": {
"ProtocolEnabled": true,
"EnableSNMPv3": true
}
}配置用户信息:
PATCH https://{bmc_ip}/redfish/v1/AccountService/Accounts/{AccountId}请求体:
{
"Password": "xxxxxxxx",
"Oem": {
"openUBMC": {
"SnmpV3AuthProtocol": "SHA256",
"SnmpV3PrivProtocol": "AES",
"SnmpV3PrivPasswd": "xxxxxxxx"
}
}
}查询 SNMP Agent 状态
GET https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/NetworkProtocol响应示例:
{
"@odata.context": "/redfish/v1/$metadata#ManagerNetworkProtocol.ManagerNetworkProtocol",
"@odata.id": "/redfish/v1/Managers/1/NetworkProtocol",
"@odata.type": "#ManagerNetworkProtocol.v1_9_0.ManagerNetworkProtocol",
"Name": "Manager Network Protocol",
"Id": "NetworkProtocol",
...
"SNMP": {
"EnableSNMPv1": true,
"EnableSNMPv2c": true,
"EnableSNMPv3": true,
"CommunityStrings": [
{
"AccessMode": "Limited",
"CommunityString": "PublicCommunity@123"
},
{
"AccessMode": "Full",
"CommunityString": "PrivateCommunity@123"
}
],
"HideCommunityStrings": false,
"ProtocolEnabled": true,
"Port": 161
},
...
}使用 SNMP 管理工具
使用 snmpget 获取设备信息
获取系统描述:
snmpget -v1 -c PublicCommunity@123 {bmc_ip} 1.3.6.1.2.1.1.1.0获取设备联系人:
snmpget -v2c -c PublicCommunity@123 {bmc_ip} 1.3.6.1.2.1.1.4.0使用 snmpwalk 遍历 MIB 树
遍历系统 MIB:
snmpwalk -v1 -c PublicCommunity@123 {bmc_ip} 1.3.6.1.2.1遍历接口 MIB:
snmpwalk -v2c -c PublicCommunity@123 {bmc_ip} 1.3.6.1.2.1.2使用 SNMP v3 认证
使用 SNMP v3 获取信息:
snmpget -v3 -u snmpadmin -a SHA256 -A authpass123 -x AES -X privpass123 -l authPriv {bmc_ip} 1.3.6.1.2.1.1.1.0结果验证
执行 snmpget 命令后,应返回对应的 OID 值:
SNMPv2-MIB::sysDescr.0 = STRING: openUBMC BMC System如果返回错误信息,请检查:
- SNMP Agent 是否启用
- 团体名或用户名是否正确
- 网络连接是否正常
- 防火墙规则是否允许 SNMP 通信
SNMP Trap 使用
认识 SNMP Trap
SNMP Trap 是 Agent 主动向管理系统发送的事件通知。当设备发生特定事件(如设备告警、状态变化)时,Agent 会向预先配置的 Trap 接收器发送 Trap 消息。
环境要求
- 网络要求:Trap 接收器和 BMC 网络互通
- 权限要求:需要管理员权限配置 Trap
- 软件要求:Trap 接收器需要运行 SNMP Trap 监听服务
配置 SNMP Trap
启用 SNMP Trap 功能
通过 Redfish 接口启用 SNMP Trap:
PATCH https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/SnmpService请求体:
{
"SnmpTrapNotification": {
"ServiceEnabled": true,
"TrapVersion": "V2C",
"TrapV3User": "admin",
"TrapServerIdentity": "ProductAssetTag",
"CommunityName": "PrivateCommunity@123",
"AlarmSeverity": "Major",
"TrapMode": "PreciseAlarm"
}
}配置 Trap 接收器
配置 Trap 目标地址:
PATCH https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/SnmpService请求体:
{
"SnmpTrapNotification": {
"TrapServer": [
{
"BobEnabled": false,
"Enabled": true,
"TrapServerAddress": "192.168.2.200",
"TrapServerPort": 162
}
]
}
}设置 Trap 接收器
使用 MIB Browser 接收 Trap
详细使用方法请参考《MIB Browser 工具使用指导》文档。
常见问题
SNMP Agent 无法连接
症状:执行 snmpget 命令超时或无响应
可能原因:
- SNMP Agent 未启用
- 网络连接不通
- 防火墙阻止 SNMP 端口
解决方法:
- 检查 SNMP Agent 状态
- 检查网络连通性:
ping {bmc_ip} - 检查防火墙规则,确保端口 161 开放
- 检查团体名是否正确
SNMP 认证失败
症状:返回 "Authentication failure" 错误
可能原因:
- 团体名不正确
- 用户名或密码不正确(SNMP v3)
- 认证协议配置不一致
解决方法:
- 确认团体名或用户名密码正确
- 检查认证协议和加密协议配置
- 确认管理系统和 Agent 的协议配置一致
Trap 消息未接收
症状:Trap 接收器没有收到 Trap 消息
可能原因:
- Trap 功能未启用
- Trap 目标地址配置错误
- 网络连接问题
- Trap 接收器服务未运行
解决方法:
- 检查 SNMP Trap 是否启用
- 检查 Trap 目标地址和端口配置
- 检查网络连通性
- 检查 Trap 接收器服务状态
MIB 文件加载失败
症状:SNMP 命令返回数字 OID,无法解析为名称
可能原因:
- MIB 文件未安装
- MIB 文件路径配置错误
- MIB 文件损坏
解决方法:
- 安装 openUBMC 提供的 MIB 文件
- 配置 MIB 文件路径
- 重新下载 MIB 文件
SNMP v3 配置复杂
症状:SNMP v3 配置容易出错
可能原因:
- 认证参数配置错误
- 加密参数配置错误
- 安全级别配置不匹配
解决方法:
- 仔细检查用户名、密码配置
- 确认认证协议和加密协议一致
- 使用配置工具或管理界面简化配置
附录
参考资料
- SNMP 协议标准:RFC 1157 (SNMPv1)、RFC 1901 (SNMPv2C)、RFC 3414 (SNMPv3)
- openUBMC 官网:https://www.openubmc.cn/