禁用-C 17的ipmi命令发不通

问题描述

禁用-C 17的ipmi命令发不通

重现步骤

  1. ipmi命令想不加-C 17参数发通以下命令:

  2. ipmi命令禁用-C 17,有以下报错:

    b1db4c74-c418-439b-8579-96dda8a6c726

  3. 问题:以上ipmi命令发不通的原因,正确的命令应该是什么?

答案内容由AI生成,仅供参考:

:white_check_mark: 总结答案

:red_question_mark:问题:以上 ipmi 命令发不通的原因,正确的命令应该是什么?

:white_check_mark: 答:

  1. 发不通的根本原因是:

    客户端与 BMC 在建立 IPMI v2 / RMCP+ 会话时,无法协商出一个共同支持的加密套件(no matching cipher suite)

    默认情况下,ipmitool 不使用 -C 17 会尝试其他 cipher suite(如 3),但目标 BMC 只接受 -C 17,导致会话建立失败。

  2. 正确的做法是:

    必须在命令中显式加上 -C 17 参数,否则无法建立安全连接。

  3. 正确的命令示例:

    # 查询电源状态
    ipmitool -I lanplus -H 192.168.130.16 -U ADMIN -P ADMIN -C 17 chassis power status
    
    # 发送 RAW 命令(注意返回“command disabled”是另一问题)
    ipmitool -H 192.168.130.16 -I lanplus -U ADMIN -P ADMIN -C 17 raw 0x30 0x93 0xdb 0x07 ...
    
  4. 长期解决建议:

    • :white_check_mark: 统一使用 -C 17
    • :white_check_mark: 升级 ipmitool 到 v1.8.19+
    • :white_check_mark: 或调整 BMC 策略允许多种 cipher suites
    • :white_check_mark: 使用 alias 或脚本简化操作
点击此处查看详细分析解答

问题分析:禁用 -C 17 的 IPMI 命令发不通的原因

根据提供的错误信息和上下文,以下是详细分析与解答。


:pushpin: 现象总结

用户尝试使用 ipmitool 通过 LAN-Plus 接口(即 RMCP+)与 BMC 进行通信时:

  • 不指定 -C 17 参数:命令失败,报错为:
    Error in open session response message: no matching cipher suite
    Error: Unable to establish IPMI v2 / RMCP+ session
    
  • 添加 -C 17 参数后:第一条命令 chassis power status 成功执行;
    第二条 raw 命令虽然能建立连接,但返回“command disabled”,属于权限或配置问题(非本题重点)。

:magnifying_glass_tilted_left: 根本原因分析

:white_check_mark: 1. IPMI v2 / RMCP+ 会话需要匹配的加密套件
  • IPMI v2.0/RMCP+ 支持多种 加密/认证/完整性保护算法组合(cipher suites)
  • 客户端(ipmitool)与服务端(BMC上的 rmcpd 守护进程)必须就一套 共同支持的 cipher suite 达成一致,才能建立安全会话。
  • -C 参数用于指定使用的 cipher suite ID。例如:
    • -C 17 表示使用 cipher suite ID 17,通常对应较强的加密组合(如:Auth: SHA1, Integrity: HMAC-SHA1-96, Encryption: AES-128)。

来自知识库支持:

  • IPMI v2 / RMCP+ Session 是一种需要成功建立的 安全通信协议
  • 报错 "no matching cipher suite" 明确表明:客户端与服务器之间 没有共同支持的加密套件
  • 有些 BMC 系统(如 openUBMC)默认只启用特定 cipher suites(如 17),而 ipmitool 默认尝试较弱或不同的 cipher suite。
:white_check_mark: 2. ipmitool 默认 cipher suite 与 BMC 不兼容
  • 若未指定 -Cipmitool 会按照预设顺序尝试连接(通常是 cipher suite 3、1、2 等)。
  • 如果 BMC 禁用了这些默认套件,仅允许(如)-C 17,则连接必败。
  • 因此,不是命令格式错误,而是安全协商失败

来自知识库佐证:

  • 搜索结果中《IPMI/CLI SOL常见问题指南》明确指出:

“ipmi sol不指定-C 17算法套件时调用命令失败”
“ipmitool 1.8.18及以前的版本均需要通过-C指定算法套件才可以调用ipmi命令”


:puzzle_piece: 为什么 chassis power status-C 17 就成功?

因为:

  • 指定了 cipher suite 17 → 与 BMC 配置匹配 → 成功建立 RMCP+ 安全会话 → 执行命令。
  • 所有基于 IPMI over LAN+ 的远程操作必须首先完成 session setup,否则无法发送任何命令。

:warning: 为什么 raw 命令返回 "command disabled"

在建立会话后,raw 命令返回:

Unable to send RAW command ... command disabled

这说明:

  • 已成功建立 IPMI v2 / RMCP+ session(证明 -C 17 正确);
  • 但该自定义命令(NetFn 0x30, Cmd 0x93)对应的子功能(可能是 0xDB)被 系统禁用或用户权限不足

可能原因(来自知识库):

  • Get Commands Enables 命令可用于查询某通道下特定 NetFn 的命令是否被启用。
  • 某些 OEM 命令需管理员权限且需在配置中显式开启。

:white_check_mark: 正确的命令写法与使用建议

:white_check_mark: 1. 必须加 -C 17 才可建立会话

ipmitool -I lanplus -H 192.168.130.16 -U ADMIN -P ADMIN -C 17 chassis power status

:white_check_mark: 推荐始终显式指定 -C 17,以避免 cipher suite 不匹配问题。


:white_check_mark: 2. 关于 cipher suite 的补充说明

Cipher Suite ID 典型用途
3 默认值(弱加密)
17 推荐值(支持强加密)
0 不加密(仅限测试)

:warning: BMC 侧可通过 Set RMCP+ Cipher Suites 或 Web UI 配置允许的 cipher suites


:white_check_mark: 3. 检查 BMC 支持的 cipher suites

可以使用以下命令查看当前 RMCP+ 加密套件配置:

ipmitool -H <BMC_IP> -U <user> -P <pass> -C 17 raw 0x30 0x93 0x72

根据文档 chunk #4,命令 Get RMCP+ Cipher Suites 对应 NetFn 0x30, Cmd 0x93, SubCmd 0x72


:white_check_mark: 4. 若不想每次都写 -C 17,解决方案如下:

方案一:升级到 ipmitool v1.8.19+
  • 根据《IPMI/CLI SOL常见问题指南》,从 1.8.19 开始支持自动协商 cipher suite。
  • 低版本(1.8.18 及以下)必须手动指定 -C
方案二:修改 BMC 设置允许默认 cipher suite
  • 登录 BMC Web 界面或使用 Redfish API 修改允许的 cipher suites。
  • 开启 cipher suite 3(默认值),以便兼容性更好。
  • 路径可能为:
    /UI/Rest/AccessMgnt/AdvancedSecurity
    

    包含安全相关的加密策略设置。

方案三:脚本化封装常用参数
alias ipmi='ipmitool -I lanplus -H 192.168.130.16 -U ADMIN -P ADMIN -C 17'
# 使用方式
ipmi chassis power status

:white_check_mark: 总结答案

:red_question_mark:问题:以上 ipmi 命令发不通的原因,正确的命令应该是什么?

:white_check_mark: 答:

  1. 发不通的根本原因是:

    客户端与 BMC 在建立 IPMI v2 / RMCP+ 会话时,无法协商出一个共同支持的加密套件(no matching cipher suite)

    默认情况下,ipmitool 不使用 -C 17 会尝试其他 cipher suite(如 3),但目标 BMC 只接受 -C 17,导致会话建立失败。

  2. 正确的做法是:

    必须在命令中显式加上 -C 17 参数,否则无法建立安全连接。

  3. 正确的命令示例:

    # 查询电源状态
    ipmitool -I lanplus -H 192.168.130.16 -U ADMIN -P ADMIN -C 17 chassis power status
    
    # 发送 RAW 命令(注意返回“command disabled”是另一问题)
    ipmitool -H 192.168.130.16 -I lanplus -U ADMIN -P ADMIN -C 17 raw 0x30 0x93 0xdb 0x07 ...
    
  4. 长期解决建议:

    • :white_check_mark: 统一使用 -C 17
    • :white_check_mark: 升级 ipmitool 到 v1.8.19+
    • :white_check_mark: 或调整 BMC 策略允许多种 cipher suites
    • :white_check_mark: 使用 alias 或脚本简化操作

:blue_book: 提示:此类问题是 IPMI 远程管理中最常见的兼容性问题之一,涉及协议、安全策略与工具版本三者协同,应优先从 cipher suite 入手排查。

ipmitool 在1.8.18版本和之前版本,默认参数是 -C 3,之后的版本是-C 17,BMC 目前版本默认禁用 除了- C 17之外的加密套件,如果想用lanplus,就要用redfish开启 其他加密套件。或者直接使用lan 协议