带内用ipmi命令设置BMC主机名成功后,再用ipmi命令查询BMC主机名失败

// 此模板仅供参考,如果不适用可以修改

问题描述

带内用ipmi命令设置BMC主机名成功后,再用ipmi命令查询BMC主机名失败

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:OpenUBMC2512

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. 带内用ipmi命令设置BMC主机名

  2. 用ipmi命令查询BMC主机名

  3. 查看ipmi命令返回数据

期望结果

用ipmi命令查询BMC主机名成功

实际结果

用ipmi命令查询BMC主机名失败,返回0xce

尝试过的解决方案

带外用ipmi命令设置BMC主机名成功后,再用ipmi命令查询BMC主机名成功

分析结论

带内设置主机名

app.log

2026-05-14 16:21:31.527093 bmc_network NOTICE: lldp_manager.lua(152): Set LLDP system name to 44667788TXA449216923 successfully
2026-05-14 16:21:31.540216 nsm NOTICE: init.lua(360): [nginx] Assembly property changed
2026-05-14 16:21:31.539616 ddns NOTICE: ddns_config.lua(463): domain name or host name changed, set update dns flag to true
2026-05-14 16:21:31.542535 oms NOTICE: log_init.lua(377): HostName property is changed to 44667788TXA449216923
2026-05-14 16:21:31.941131 bmc_network NOTICE: dhcp_process.lua(1255): the field composed by dhcpv6 vendor class is empty string
2026-05-14 16:21:31.941648 bmc_network NOTICE: dhcp_process.lua(1016): eth2: no available prefix info, send_rs_and_parse_ra now
2026-05-14 16:21:32.362709 nsm NOTICE: webvnc_supported.lua(3): [webvnc] Webvnc is supported
2026-05-14 16:21:32.378020 nsm NOTICE: config.lua(109): [config] No change in nginx_ssl_protocol
2026-05-14 16:21:32.380281 nsm NOTICE: config.lua(109): [config] No change in nginx_ssl_certificate
2026-05-14 16:21:32.381784 nsm NOTICE: config.lua(109): [config] No change in nginx_ssl_alternate_certificate
2026-05-14 16:21:32.385277 nsm NOTICE: config.lua(109): [config] No change in nginx_ssl_verify_client
2026-05-14 16:21:32.409620 nsm NOTICE: config.lua(109): [config] No change in nginx_ssl_ciphersuite
2026-05-14 16:21:32.414638 nsm NOTICE: config.lua(109): [config] No change in nginx_http_config
2026-05-14 16:21:32.423395 nsm NOTICE: config.lua(109): [config] No change in nginx_https_config
2026-05-14 16:21:32.430034 nsm NOTICE: config.lua(109): [config] No change in nginx_http_customization.conf
2026-05-14 16:21:32.432595 nsm NOTICE: config.lua(109): [config] No change in nginx_https_customization.conf
2026-05-14 16:21:32.437622 nsm NOTICE: config.lua(109): [config] No change in kvmip_config
2026-05-14 16:21:32.439160 nsm NOTICE: config.lua(109): [config] No change in systemkvmip_config
2026-05-14 16:21:32.443890 nsm NOTICE: config.lua(109): [config] No change in virtualmedia_config
2026-05-14 16:21:32.445403 nsm NOTICE: config.lua(109): [config] No change in systemvirtualmedia_config
2026-05-14 16:21:32.451296 nsm NOTICE: config.lua(109): [config] No change in video_config
2026-05-14 16:21:32.453560 nsm WARNING: sms.lua(49): [nginx config] Invalid sms veth IpAddr Port
2026-05-14 16:21:32.453906 nsm WARNING: sms.lua(80): [nginx config] Get sms config items failed, to clear sms config file
2026-05-14 16:21:32.454896 nsm NOTICE: config.lua(109): [config] No change in nginx_sms_server
2026-05-14 16:21:32.457742 nsm NOTICE: config.lua(109): [config] No change in nginx_inter_chassis_config
2026-05-14 16:21:32.460353 nsm NOTICE: webvnc_supported.lua(3): [webvnc] Webvnc is supported
2026-05-14 16:21:32.463565 nsm NOTICE: ssl.lua(377): [nginx] get certificate upload status : 1
2026-05-14 16:21:33.166818 nsm NOTICE: ssl.lua(576): [nginx] Start to write nginx ssl fifo
2026-05-14 16:21:33.169167 nsm NOTICE: webvnc_supported.lua(3): [webvnc] Webvnc is supported
2026-05-14 16:21:33.333704 nsm NOTICE: ssl.lua(604): [nginx] Write nginx ssl fifo end
2026-05-14 16:21:33.334168 nsm NOTICE: ssl.lua(576): [nginx] Start to write nginx ssl fifo
2026-05-14 16:21:33.335685 nsm NOTICE: webvnc_supported.lua(3): [webvnc] Webvnc is supported
2026-05-14 16:21:33.455962 nsm NOTICE: ssl.lua(604): [nginx] Write nginx ssl fifo end
2026-05-14 16:21:33.458367 nsm NOTICE: control.lua(159): [nginx] Restart nginx service successfully
2026-05-14 16:21:34.543916 bmc_network NOTICE: dhcp_process.lua(506): udhcpc6 need to start, ethname = eth2
2026-05-14 16:21:34.555970 bmc_network NOTICE: dhcp_process.lua(1255): the field composed by dhcpv6 vendor class is empty string
2026-05-14 16:21:34.556595 bmc_network NOTICE: dhcp_process.lua(1016): eth2: no available prefix info, send_rs_and_parse_ra now
2026-05-14 16:21:36.728268 ipmi_core WARNING: init.lua(97): nil:-1 > ipmi_app.lua:186 > ipmi_self_cmds.lua:454: Cannot execute command, parameter not supported.
2026-05-14 16:21:38.085593 bmc_network NOTICE: network_resource_tree.lua(504): hostname has been changed, may restart dhcp client
2026-05-14 16:21:38.212849 unknown_service WARNING: btc.lua(118): btc[1] request process timeout: netfn=49, cmd=147, seq=128
2026-05-14 16:21:40.512674 general_hardware NOTICE: fructl_handler.lua(76): get_power_state: get power power ON

带外设置主机名

Snipaste_2026-05-14_16-26-58

Snipaste_2026-05-14_16-25-40

app.log

2026-05-14 16:03:40.248052 bmc_network NOTICE: lldp_manager.lua(152): Set LLDP system name to 44667788TXA449216925 successfully
2026-05-14 16:03:40.256088 nsm NOTICE: init.lua(360): [nginx] Assembly property changed
2026-05-14 16:03:40.258257 ddns NOTICE: ddns_config.lua(463): domain name or host name changed, set update dns flag to true
2026-05-14 16:03:40.259069 oms NOTICE: log_init.lua(377): HostName property is changed to 44667788TXA449216925
2026-05-14 16:03:40.416116 general_hardware NOTICE: fructl_handler.lua(76): get_power_state: get power power ON
2026-05-14 16:03:40.641059 nsm NOTICE: config.lua(109): [config] No change in nginx_ssl_protocol
2026-05-14 16:03:40.644132 nsm NOTICE: config.lua(109): [config] No change in nginx_ssl_certificate
2026-05-14 16:03:40.646334 nsm NOTICE: config.lua(109): [config] No change in nginx_ssl_alternate_certificate
2026-05-14 16:03:40.648537 bmc_network NOTICE: dhcp_process.lua(1255): the field composed by dhcpv6 vendor class is empty string
2026-05-14 16:03:40.649446 bmc_network NOTICE: dhcp_process.lua(1016): eth2: no available prefix info, send_rs_and_parse_ra now
2026-05-14 16:03:40.650178 nsm NOTICE: config.lua(109): [config] No change in nginx_ssl_verify_client
2026-05-14 16:03:40.694253 nsm NOTICE: config.lua(109): [config] No change in nginx_ssl_ciphersuite
2026-05-14 16:03:40.702964 nsm NOTICE: config.lua(109): [config] No change in nginx_http_config
2026-05-14 16:03:40.714507 nsm NOTICE: config.lua(109): [config] No change in nginx_https_config
2026-05-14 16:03:40.722445 nsm NOTICE: config.lua(109): [config] No change in nginx_http_customization.conf
2026-05-14 16:03:40.725535 nsm NOTICE: config.lua(109): [config] No change in nginx_https_customization.conf
2026-05-14 16:03:40.731115 nsm NOTICE: config.lua(109): [config] No change in kvmip_config
2026-05-14 16:03:40.733000 nsm NOTICE: config.lua(109): [config] No change in systemkvmip_config
2026-05-14 16:03:40.738659 nsm NOTICE: config.lua(109): [config] No change in virtualmedia_config
2026-05-14 16:03:40.741466 nsm NOTICE: config.lua(109): [config] No change in systemvirtualmedia_config
2026-05-14 16:03:40.747223 nsm NOTICE: config.lua(109): [config] No change in video_config
2026-05-14 16:03:40.750664 nsm WARNING: sms.lua(49): [nginx config] Invalid sms veth IpAddr Port
2026-05-14 16:03:40.751182 nsm WARNING: sms.lua(80): [nginx config] Get sms config items failed, to clear sms config file
2026-05-14 16:03:40.752333 nsm NOTICE: config.lua(109): [config] No change in nginx_sms_server
2026-05-14 16:03:40.757695 nsm NOTICE: config.lua(109): [config] No change in nginx_inter_chassis_config
2026-05-14 16:03:40.767939 nsm NOTICE: ssl.lua(377): [nginx] get certificate upload status : 1
2026-05-14 16:03:41.422969 nsm NOTICE: ssl.lua(576): [nginx] Start to write nginx ssl fifo
2026-05-14 16:03:41.607551 nsm NOTICE: ssl.lua(604): [nginx] Write nginx ssl fifo end
2026-05-14 16:03:41.607872 nsm NOTICE: ssl.lua(576): [nginx] Start to write nginx ssl fifo
2026-05-14 16:03:41.724364 nsm NOTICE: ssl.lua(604): [nginx] Write nginx ssl fifo end
2026-05-14 16:03:41.726727 nsm NOTICE: control.lua(159): [nginx] Restart nginx service successfully
2026-05-14 16:03:44.800923 bmc_network NOTICE: dhcp_process.lua(506): udhcpc6 need to start, ethname = eth2
2026-05-14 16:03:44.809211 bmc_network NOTICE: dhcp_process.lua(1255): the field composed by dhcpv6 vendor class is empty string
2026-05-14 16:03:44.810608 bmc_network NOTICE: dhcp_process.lua(1016): eth2: no available prefix info, send_rs_and_parse_ra now
2026-05-14 16:03:45.955854 bmc_network NOTICE: network_resource_tree.lua(504): hostname has been changed, may restart dhcp client
2026-05-14 16:03:53.323063 general_hardware NOTICE: fructl_handler.lua(76): get_power_state: system[1] get power power ON
2026-05-14 16:04:01.663425 bmc_network NOTICE: dhcp_process.lua(1255): the field composed by dhcpv6 vendor class is empty string
2026-05-14 16:04:01.663878 bmc_network NOTICE: dhcp_process.lua(1016): eth2: no available prefix info, send_rs_and_parse_ra now
2026-05-14 16:04:02.932832 rmcpd WARNING: init.lua(97): nil:-1 > reg_command.lua:196 > lan_config.lua :100: Cannot execute command, parameter not supported.
2026-05-14 16:04:10.415935 general_hardware NOTICE: fructl_handler.lua(76): get_power_state: get power power ON

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

最终结论

:red_exclamation_mark: 带内使用IPMI命令设置BMC主机名成功,但查询失败的根本原因是:查询命令(NetFn=0x30, CMD=0x93, Sub=0x06)在带内通道(in-band via ipmi_core)中未被正确支持或权限受限,尽管设置命令(Sub=0x05)可以执行。

  • 设置成功不代表查询可执行:两者可能由不同子模块处理。
  • 带外工作正常:证明功能本身可用。
  • 错误码 0xce = Invalid Command:表明命令未被接受或参数不支持,常见于带内通道限制。
  • 根本原因:带内通道对OEM IPMI命令的查询功能未完整实现或未注册。
点击此处查看详细分析解答

带内使用IPMI命令设置BMC主机名后查询失败的问题分析与解决方案

问题描述

在OpenUBMC2512环境中,通过带内通道(in-band)使用IPMI命令成功设置BMC主机名后,再次使用IPMI命令查询主机名时失败,返回错误码 rsp=0xce,提示“Command response could not be provided”。而通过带外通道(out-of-band)执行相同操作则能成功设置并查询。


环境信息

  • 操作系统:未知(主机端)
  • BMC软件版本:OpenUBMC2512
  • 通信方式
    • 带内(In-band):通过BT或KCS接口,由主机侧发起
    • 带外(Out-of-band):通过LAN/UDP,由远程IPMI工具发起
  • 工具ipmitool raw 命令

重现步骤

  1. 使用带内方式发送IPMI命令设置BMC主机名:
    ipmitool raw 0x30 0x93 0xdb 0x07 0x00 0x05 0x01 0x00 0x00 0x14 0x34 0x34 0x36 0x36 0x37 0x37 0x38 0x38 0x54 0x58 0x41 0x34 0x34 0x39 0x32 0x31 0x36 0x39 0x32 0x33
    
  2. 尝试使用相同方式查询主机名:
    ipmitool raw 0x30 0x93 0xdb 0x07 0x00 0x06 0x01 0x00 0xff
    
  3. 查询命令返回失败:
    Unable to send RAW command (channel=0x0 netfn=0x30 lun=0x0 cmd=0x93 rsp=0xce): Command response could not be provided
    

关键日志分析

设置主机名成功日志

2026-05-14 16:21:31.527093 bmc_network NOTICE: lldp_manager.lua(152): Set LLDP system name to 44667788TXA449216923 successfully
2026-05-14 16:21:31.539616 ddns NOTICE: ddns_config.lua(463): domain name or host name changed, set update dns flag to true
2026-05-14 16:21:31.542535 oms NOTICE: log_init.lua(377): HostName property is changed to 44667788TXA449216923
  • 说明:BMC内部系统已成功接收并应用主机名变更,多个模块(LLDP、DDNS、OMS)均检测到主机名更新,证明设置操作被正确处理

查询失败日志

2026-05-14 16:21:36.728268 ipmi_core WARNING: init.lua(97): nil:-1 > ipmi_app.lua:186 > ipmi_self_cmds.lua:454: Cannot execute command, parameter not supported.
  • 错误码 0xce 含义为 “Invalid command”。
  • 根据知识库信息,该错误通常出现在:
    • 命令未注册或不支持
    • 命令参数不合法
    • 带内/带外通道权限或实现差异

错误码说明(0xce)

错误码 十六进制 含义
0xCE Invalid command 请求的命令未被识别或当前状态不支持

来源:ipmi_core.md 中描述“Command not supported in present state”。同时,【已评审】ipmitool user priv命令接口变更文档也指出带内通道对权限和命令支持有限制。


问题根源分析

1. 命令支持的通道差异(带内 vs 带外)

特性 带内(In-band) 带外(Out-of-band)
协议通道 BT / KCS RMCP+ over LAN
认证机制 无或弱认证 强认证(RMCP+)
命令权限控制 受限 更完整支持
实现模块 ipmi_core rmcpd
  • 文档 ipmi_core.md 指出:带内只重试两次,且部分命令需显式指定channel。
  • ipmi_core WARNING: Cannot execute command, parameter not supported. 表明虽然设置了主机名,但查询命令在带内路径中未被正确路由或处理

2. OEM IPMI命令实现不完整

  • 设置主机名和查询主机名属于 OEM IPMI 命令(NetFn=0x30, CMD=0x93),是厂商自定义扩展。
  • Topic 483 中确认存在:
    • 设置命令:ipmitool raw 0x30 0x93 {IANA} 0x05 ...
    • 查询命令:ipmitool raw 0x30 0x93 {IANA} 0x06 ...

:warning: 但某些固件版本可能存在带内仅支持设置、不支持查询的情况。

3. 通道权限与协议栈处理差异

  • 根据《【已评审】修正历史FileAction的IPMI命令权限与校验行为》文档:

    带外请求:需要用户 Role 与 privilege 均满足
    带内请求:仅需 privilege 满足即可(但 BT 通道无限制)

  • 结论:尽管带内可通过 BT 通道发送设置命令,但后续执行查询命令可能涉及其他模块权限检查失败。

成功验证:带外可正常查询

带外设置与查询流程

# 设置
PS> ipmitool -I lanp -U admin -P kuaiishou -H 10.199.116.63 -C 17 raw 0x30 0x93 0x0b 0x07 0x00 0x05 0x01 0x00 0x00 0x14 ...
# 查询
PS> ipmitool raw 0x30 0x93 0x0b 0x07 0x00 0x06 0x01 0x00 0xff
# 返回结果:
db 07 00 00 00 34 36 36 37 37 38 38 54 58 41 34 34 39 32 31 36 39 32 35
  • 带外完全成功,说明:
    • OEM命令本身可用
    • BMC具备处理能力
    • 问题出在“带内通信路径上的命令支持或权限控制”

解决方案建议

:white_check_mark: 方案一:统一使用带外通道进行查询

由于带外支持完整功能,建议将管理和配置操作统一通过带外进行。

# 推荐语法(带外)
ipmitool -I lanplus -H <BMC_IP> -U <USER> -P <PASS> raw 0x30 0x93 0xdb 0x07 0x00 0x06 0x01 0x00 0xff

:white_check_mark: 方案二:确认带内通道是否支持该OEM命令查询功能

检查当前OpenUBMC2512版本是否在带内通道注册了该命令处理函数。

方法:检查 ipmi_core 是否注册命令

busctl --user introspect bmc.kepler.ipmi_core

或查看日志中是否有注册日志。

注:根据日志显示 Cannot execute command, parameter not supported,说明该命令未在带内路径有效支持。

:white_check_mark: 方案三:使用高级接口替代查询

使用非IPMI底层命令查询主机名:

# 方法1:通过 ipmcget 查询(如支持)
ipmcget -d hostname

# 方法2:直接读取系统属性
hostnamectl status

# 方法3:通过 Redfish API 查询
curl -k https://<BMC_IP>/redfish/v1/Managers/bmc/
# 字段:HostName

:white_check_mark: 方案四:升级固件或反馈开发团队

向OpenUBMC社区反馈此不一致性问题,要求:

  • 确保OEM命令在带内/带外行为一致
  • 在文档中明确说明哪些命令仅支持特定通道

最终结论

:red_exclamation_mark: 带内使用IPMI命令设置BMC主机名成功,但查询失败的根本原因是:查询命令(NetFn=0x30, CMD=0x93, Sub=0x06)在带内通道(in-band via ipmi_core)中未被正确支持或权限受限,尽管设置命令(Sub=0x05)可以执行。

  • 设置成功不代表查询可执行:两者可能由不同子模块处理。
  • 带外工作正常:证明功能本身可用。
  • 错误码 0xce = Invalid Command:表明命令未被接受或参数不支持,常见于带内通道限制。
  • 根本原因:带内通道对OEM IPMI命令的查询功能未完整实现或未注册。

参考资料

  1. Topic 483 —— OEM IPMI命令用于修改BMC主机名(来源
  2. ipmi_core.md —— 带内IPMI命令处理流程与限制
  3. 【已评审】ipmitool user priv命令接口变更 —— 带内与带外权限模型差异
  4. OpenUBMC 日志 —— 显示主机名已变更,但查询命令被拒绝

建议后续操作

  1. :white_check_mark: 短期规避:使用带外IPMI进行查询操作。
  2. :white_check_mark: 中期改进:使用 Redfishipmcget 等标准接口替代脆弱的raw IPMI命令。
  3. :hammer_and_wrench: 长期解决:向OpenUBMC项目提交Issue,要求统一带内/带外对OEM命令的支持行为。

:white_check_mark: 最终建议命令组合(可靠方式)

# 设置(带内外均可尝试)
ipmitool raw 0x30 0x93 0xdb 0x07 0x00 0x05 0x01 0x00 0x00 ${len} ${data_ascii}

# 查询(推荐仅用带外)
ipmitool -I lanplus -H <IP> -U <USER> -P <PASS> raw 0x30 0x93 0xdb 0x07 0x00 0x06 0x01 0x00 0xff

# 或使用 ipmcget(若支持)
ipmcget -d hostname

一键日志

R220KV2_44667788TXA449216925_20260514-1623.tar.gz (8.6 MB)

这个有看出啥问题吗

会不会是ipmitool中0x14的问题,ASCII码中对应的是DC4 (device control 4) 设备控制4,导致的无法打印,试一下0x14换成0x31,看看能不能查询,带外中返回的结果,原本是写入0x14,返回的也是0x00

0x14是长度20的意思,后面接20个字符

实测2509版本无问题

目前两台机器上有该问题,其他机器又没有问题

看起来像是命令超时了

这是带内发送修改命令成功后再发获取命令时出现的;当出现问题时,在带外发获取命令也会返回0xce

是某两台机器必现这个问题么,还是在这两台机器上有概率性出现,另外可以在收集一下出现这个问题的时候带外查询失败有什么日志,和带内查询是否一样

这两个机器必现,日志就是上面的那些

带外查询失败时没有任何打印

2512版本上

2603版本上无问题,虽然有bt超时打印

没有看出来两个版本有什么优化,可以打开traceipmi进行复现
mdbctl traceipmi start file bt
开启之后发命令,/tmp/ipmi.txt会有这个文件生成

修改命令收到了两次,感觉是命令超时了

我们内部再分析一下

请问这个有结论吗

请问这个有分析结论吗

目前复现不出来,是立即设置完查询失败还是一直查询失败,如果是立即设置完查询,可能是组件当时事情较多,没有及时响应就超时了,或者要不找pae约个视频会议看下

立即设置完查询失败,短时间内也是一直查询失败,至于后面会不会恢复暂未验证