代码仓
中

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:

bash
PATCH https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/NetworkProtocol

请求体:

json
{
    "SNMP": {
        "ProtocolEnabled": true
    }
}

配置 SNMP 团体名 ​

对于 SNMP v1 和 v2C,需要配置团体名进行认证:

bash
PATCH https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/NetworkProtocol

请求体:

json
{
    "SNMP": {
        "ProtocolEnabled": true,
        "EnableSNMPv1": true,
        "EnableSNMPv2c": true,
        "CommunityStrings": [
            {
                "CommunityString": "PublicCommunity@123",
                "AccessMode": "Limited"
            },
            {
                "CommunityString": "PrivateCommunity@123",
                "AccessMode": "Full"
            }
        ]
    }
}

配置 SNMP v3 用户 ​

对于 SNMP v3,需要配置用户信息:

bash
PATCH https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/NetworkProtocol

请求体:

json
{
    "SNMP": {
        "ProtocolEnabled": true,
        "EnableSNMPv3": true
    }
}

配置用户信息:

bash
PATCH https://{bmc_ip}/redfish/v1/AccountService/Accounts/{AccountId}

请求体:

json
{
    "Password": "xxxxxxxx",
    "Oem": {
        "openUBMC": {
            "SnmpV3AuthProtocol": "SHA256",
            "SnmpV3PrivProtocol": "AES",
            "SnmpV3PrivPasswd": "xxxxxxxx"
        }
    }
}

查询 SNMP Agent 状态 ​

bash
GET https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/NetworkProtocol

响应示例:

json
{
    "@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 获取设备信息 ​

获取系统描述:

bash
snmpget -v1 -c PublicCommunity@123 {bmc_ip} 1.3.6.1.2.1.1.1.0

获取设备联系人:

bash
snmpget -v2c -c PublicCommunity@123 {bmc_ip} 1.3.6.1.2.1.1.4.0

使用 snmpwalk 遍历 MIB 树 ​

遍历系统 MIB:

bash
snmpwalk -v1 -c PublicCommunity@123 {bmc_ip} 1.3.6.1.2.1

遍历接口 MIB:

bash
snmpwalk -v2c -c PublicCommunity@123 {bmc_ip} 1.3.6.1.2.1.2

使用 SNMP v3 认证 ​

使用 SNMP v3 获取信息:

bash
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 值:

text
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:

bash
PATCH https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/SnmpService

请求体:

json
{
    "SnmpTrapNotification": {
        "ServiceEnabled": true,
        "TrapVersion": "V2C",
        "TrapV3User": "admin",
        "TrapServerIdentity": "ProductAssetTag",
        "CommunityName": "PrivateCommunity@123",
        "AlarmSeverity": "Major",
        "TrapMode": "PreciseAlarm"
    }
}

配置 Trap 接收器 ​

配置 Trap 目标地址:

bash
PATCH https://{bmc_ip}/redfish/v1/Managers/{ManagerId}/SnmpService

请求体:

json
{
    "SnmpTrapNotification": {
        "TrapServer": [
            {
                "BobEnabled": false,
                "Enabled": true,
                "TrapServerAddress": "192.168.2.200",
                "TrapServerPort": 162
            }
        ]
    }
}

设置 Trap 接收器 ​

使用 MIB Browser 接收 Trap ​

详细使用方法请参考《MIB Browser 工具使用指导》文档。

常见问题 ​

SNMP Agent 无法连接 ​

症状:执行 snmpget 命令超时或无响应

可能原因:

  1. SNMP Agent 未启用
  2. 网络连接不通
  3. 防火墙阻止 SNMP 端口

解决方法:

  1. 检查 SNMP Agent 状态
  2. 检查网络连通性:ping {bmc_ip}
  3. 检查防火墙规则,确保端口 161 开放
  4. 检查团体名是否正确

SNMP 认证失败 ​

症状:返回 "Authentication failure" 错误

可能原因:

  1. 团体名不正确
  2. 用户名或密码不正确(SNMP v3)
  3. 认证协议配置不一致

解决方法:

  1. 确认团体名或用户名密码正确
  2. 检查认证协议和加密协议配置
  3. 确认管理系统和 Agent 的协议配置一致

Trap 消息未接收 ​

症状:Trap 接收器没有收到 Trap 消息

可能原因:

  1. Trap 功能未启用
  2. Trap 目标地址配置错误
  3. 网络连接问题
  4. Trap 接收器服务未运行

解决方法:

  1. 检查 SNMP Trap 是否启用
  2. 检查 Trap 目标地址和端口配置
  3. 检查网络连通性
  4. 检查 Trap 接收器服务状态

MIB 文件加载失败 ​

症状:SNMP 命令返回数字 OID,无法解析为名称

可能原因:

  1. MIB 文件未安装
  2. MIB 文件路径配置错误
  3. MIB 文件损坏

解决方法:

  1. 安装 openUBMC 提供的 MIB 文件
  2. 配置 MIB 文件路径
  3. 重新下载 MIB 文件

SNMP v3 配置复杂 ​

症状:SNMP v3 配置容易出错

可能原因:

  1. 认证参数配置错误
  2. 加密参数配置错误
  3. 安全级别配置不匹配

解决方法:

  1. 仔细检查用户名、密码配置
  2. 确认认证协议和加密协议一致
  3. 使用配置工具或管理界面简化配置

附录 ​

参考资料 ​

  • SNMP 协议标准:RFC 1157 (SNMPv1)、RFC 1901 (SNMPv2C)、RFC 3414 (SNMPv3)
  • openUBMC 官网:https://www.openubmc.cn/