【问题求助】装备测试中出现测试完成后BMC网络不通

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

问题描述

装备测试中出现测试完成后BMC网络不通,AC后可恢复

环境信息

  • 软件版本:LTS SP1

  • 硬件配置:2U4P

分析结论

从日志看,BMC重启后,网络组件设置网络有报错

2026-04-09 03:05:31.706502 bmc_network ERROR: net.lua(83): SubnetMask is null or empty
2026-04-09 03:05:31.728446 bmc_network ERROR: net.lua(436): set default gateway failed, error log is: ./opt/bmc/libmc/lualib/mc/utils.lua:1204: ./opt/bmc/apps/bmc_network/lualib/common/base.lua:20: add default gateway() failed: Invalid argument[22]

网络不通时,带内ipmitool lan print查询,子网掩码与网关均为0.0.0.0,手动设置后网络也没有恢复

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

:white_check_mark: 总结与建议

项目 内容
:magnifying_glass_tilted_right: 根本原因 装备测试导致 bmc_network 加载网络配置时 SubnetMask 缺失,引发网关设置失败,网络初始化中断
:link: 相关模块 bmc_network, ipmitool lan, manufacture_dft.lua, net.lua
:warning: 风险点 物理环回测试后未退出、配置未持久化、缺省值处理缺失
:white_check_mark: 短期对策 串口强制设置 IP/掩码/网关,重启 bmc_network 服务
:shield: 长期对策 1. 测试后退出环回模式
2. 保证 Set In Progress 标志清除
3. 添加缺省掩码/网关兜底逻辑
:books: 参考文档 DC2(OEM命令索引)、DC7/DC9(bmc_network配置)、Search Result [3][6][7]
点击此处查看详细分析解答

装备测试后 BMC 网络不通问题分析与解决方案

根据您提供的日志和现象,以下是针对 “装备测试完成后BMC网络不通,AC后可恢复” 问题的全面分析与解决建议。


:magnifying_glass_tilted_left: 问题概要

  • 问题现象:装备测试完成后,BMC 网络不可达(无法 ping、SSH、Web),但 AC 断电重启后恢复正常。
  • 关键线索
    • 日志显示 SubnetMask is null or emptyset default gateway failed 错误。
    • 带内执行 ipmitool lan print 显示子网掩码与网关均为 0.0.0.0
    • 手动设置网络参数未能恢复连接。
  • 环境信息
    • 软件版本:OpenUBMC LTS SP1
    • 硬件配置:2U4P
    • 日志来源:bmc_network 模块

:puzzle_piece: 根本原因分析

1. 子网掩码缺失导致初始化失败

日志中关键错误:

bmc_network ERROR: net.lua(83): SubnetMask is null or empty

这表明在 BMC 启动或网络重配置过程中,IPv4 子网掩码未被正确读取或加载。该字段为空会导致网络接口无法正确配置,进而使 IP 层通信失效。

:warning: 子网掩码是 IP 网络配置的必需项。若缺失,则默认路由、ARP、NAT 规则等均无法建立,表现为“IP 不通”。


2. 默认网关设置失败

后续日志:

set default gateway failed, error log is: ... Invalid argument[22]

错误码 [22] 表示 EINVAL —— 参数无效。常见于以下情况:

  • 子网掩码为 0.0.0.0 时,试图添加默认网关;
  • 网关地址不在任何已配置的子网内;
  • 接口尚未完全激活。

这说明:由于子网掩码缺失,系统尝试添加默认网关失败,形成连锁故障。


3. 网络状态未持久化或测试流程破坏了配置

结合“装备测试完成”这一上下文,可能原因包括:

:white_check_mark: 装备测试修改了网络模式但未恢复

  • 测试中可能通过 IPMI 或 DFT 接口将 BMC 网口切换至 环回模式(Loopback Mode) 或关闭了 NCSI。
  • 文档 [8]《BMC网口环回装备测试失败》日志显示,LTS SP1 版本中 bmc_network 模块支持 enable phy loop mode。若测试后未退出该模式,可能导致网口物理层虽 UP,但无法正常收发数据包。

:white_check_mark: 配置残留或资源树损坏

  • 装备测试可能触发了某些闭源模块重置网络状态的操作(如清空资源树)。
  • bmc_network 在重启后从非易失性存储读取配置失败,会使用默认值(掩码=0.0.0.0),导致初始化异常。

:white_check_mark: 动态配置未及时生效

  • 使用 Set LAN Configurations 命令(见文档 chunk 2)设置网络后,若未正确标志“set in progress”状态,Get LAN Configuration Parameters 可能返回不完整数据。
  • bmc_network 初始化时若获取到 0.0.0.0 的掩码/网关,会造成上述错误。

4. 手动设置无效的原因

即使尝试通过命令行或 IPMI 手动设置 IP、掩码、网关仍无效,可能原因有:

可能原因 解释
:white_check_mark: 网络模块处于异常状态 bmc_network 服务已加载但处于“错误锁定”状态,需重启服务或系统
:white_check_mark: NAT/iptables 规则未更新 即使 IP 设置成功,若 NAT 链(如 bmc.kepler.bmc_network 所管理)未刷新,则 Web、SSH 服务无法监听
:white_check_mark: 其他组件依赖关系断裂 ipmi_core 未正确加载 LAN 配置参数表

:white_check_mark: 解决方案与建议

:hammer_and_wrench: 1. 紧急恢复方法(现场可用)

虽然您提到手动设置无效,但仍建议按以下顺序操作(需通过串口访问):

# 1. 检查当前 LAN 配置
ipmitool lan print 1

# 2. 强制设置 IP、子网掩码、网关(确保三者同时设置)
ipmitool lan set 1 ipaddr 192.168.2.100
ipmitool lan set 1 netmask 255.255.255.0
ipmitool lan set 1 defgw ipaddr 192.168.2.1

# 3. 重启 bmc_network 服务(如果支持)
killall bmc_network_app
# 或者触发 systemd 重启(视实际进程名而定)

# 4. 检查网络是否恢复
ifconfig eth0  # 或 eth2,看实际对外口
ping 192.168.2.1

:light_bulb: 提示:部分系统要求 IP、掩码、网关必须一次性完整设置,否则不生效。


:hammer_and_wrench: 2. 治本方案:修复装备测试流程

:white_check_mark: 步骤一:确认测试是否启用“物理环回模式”

由文档 [8] 知,bmc_network 模块在测试中会调用:

manufacture_dft.lua: enable phy loop mode begin

此模式会导致网口仅在物理层测试内部数据环回,无法正常对外通信

:white_check_mark: 正确做法

  • 测试完成后必须调用对应 关闭环回模式 的命令;
  • 或确保测试后执行完整 BMC 重启,使其重新加载出厂/持久化网络配置。

:white_check_mark: 步骤二:验证配置持久化机制

检查以下行为:

  • 装备测试前后是否调用了 Set LAN Configurations 命令?
  • 是否在执行完设置后将 Set In Progress 字段置为 No?否则配置不会持久化(参考 KG 中 Get LAN Configuration Parameters 描述)。

:link: 命令参考(来自 DC2):

# 查看当前配置(调试用)
ipmitool raw 0x30 0x90 0x24 0x01 0x00

:hammer_and_wrench: 3. 配置默认策略兜底

在 CSR 或启动脚本中,设置合理的默认值,防止空值导致崩溃:

参数 建议默认值
BMCSet_Maint_SubnetMask 255.255.255.0(见 KG 实体)
Custom_Eth0_Ip_Addr 192.168.2.100/24(行业通用)
Custom_ipv4_gateway 同网段网关,如 192.168.2.1

:white_check_mark: 文档 [7] 和 [9] 提到:bmc_network 支持通过 Custom_Eth0_DefaultPolicy 等 CSR 定制策略,可在无 DHCP 时提供 fail-safe 默认配置。


:hammer_and_wrench: 4. 增强日志与自动化检测

建议在未来版本中:

  • net.lua 中增加防错判断:
    if not subnet_mask or subnet_mask == "" then
        log_warning("SubnetMask missing, applying default: 255.255.255.0")
        subnet_mask = "255.255.255.0"
    end
    
  • 增加 bmc_network app.lua 中对启动阶段的网络状态监控(参考 KG 中 bmc_network app.lua 描述)。

:white_check_mark: 总结与建议

项目 内容
:magnifying_glass_tilted_right: 根本原因 装备测试导致 bmc_network 加载网络配置时 SubnetMask 缺失,引发网关设置失败,网络初始化中断
:link: 相关模块 bmc_network, ipmitool lan, manufacture_dft.lua, net.lua
:warning: 风险点 物理环回测试后未退出、配置未持久化、缺省值处理缺失
:white_check_mark: 短期对策 串口强制设置 IP/掩码/网关,重启 bmc_network 服务
:shield: 长期对策 1. 测试后退出环回模式
2. 保证 Set In Progress 标志清除
3. 添加缺省掩码/网关兜底逻辑
:books: 参考文档 DC2(OEM命令索引)、DC7/DC9(bmc_network配置)、Search Result [3][6][7]

:pushpin: 附加建议

请收集并上传以下日志协助进一步定位:

  1. 完整的 journalctl -u bmc_network 日志;
  2. ipmitool lan print 1 输出前后对比;
  3. 装备测试前后 /etc/network/interfaces 或资源树快照(如有)。

如问题可稳定复现,建议在 openUBMC 论坛提交 issue,并引用此分析作为背景材料。

dump_info.tar.gz (7.7 MB)

1、在装备测试过程中,网络不通的原因是BMC的IPv4开启了DHCP模式,但DHCP服务器没有给BMC分配到IP地址,所以BMC无法访问。建议排查DHCP服务器是否工作正常,能否正常分配IP地址。APP调试日志如下:

2026-04-09 02:53:20.607384 bmc_network ERROR: dhcp_process.lua(396): set gateway failed, error msg is ./opt/bmc/libmc/lualib/mc/utils.lua:1204: ./opt/bmc/apps/bmc_network/lualib/common/base.lua:20: add default gateway(192.168.9.10) failed: Network is unreachable[101] [repeated 5 times in 339s from 2026-04-09 02:47:41.390843 to 2026-04-09 02:53:20.607384]

2、手动设置IP地址之后,BMC还无法访问的原因是

HOST侧在2026-04-09 02:56:34通过IPMI命令设置IP地址为192.168.9.168 ,操作日志如下:

2026-04-09 02:56:34 IPMI,N/A@HOST,bmc_network,Set in progress status of LAN channel 1 to (1) successfully

2026-04-09 02:56:34 IPMI,N/A@HOST,bmc_network,Set ethernet IPv4 address source to (static) successfully

2026-04-09 02:56:34 IPMI,N/A@HOST,bmc_network,Set ethernet IPv4 address to (192.168.9.168) successfully

2026-04-09 02:56:34 IPMI,N/A@HOST,bmc_network,Set in progress status of LAN channel 1 to (2) successfully

2026-04-09 02:56:34 IPMI,N/A@HOST,bmc_network,Set in progress status of LAN channel 1 to (0) successfully

2026-04-09 02:57:45时,网口状态开始断开,此时通过该IP地址将无法访问BMC 。APP调试日志如下:

2026-04-09 02:57:45.197133 bmc_network NOTICE: network_loop_task.lua(74): dedicated port_id = [1] eth_name = [eth2] new link status = [Disconnected]
2026-04-09 02:57:46.199015 bmc_network NOTICE: lldp_manager.lua(399): lldp_link_status_proc: lldp link status is changed from true to false
2026-04-09 02:58:02.215600 bmc_network NOTICE: network_loop_task.lua(74): dedicated port_id = [1] eth_name = [eth2] new link status = [Connected]

2026-04-09 02:58:02时,网口状态恢复,此时是否有尝试去访问BMC呢?

并且服务器在2026-04-09 03:03:49被AC了, AC起来之后,网口状态此时是正常的,BMC所以能够正常访问。

该环境的eth2网口存在闪断,建议BMC网络能够正常访问时,长时间ping测试BMCIP地址,查看是否会存在ping不通的情况出现。命令如下:

ping -t BMC的IP地址

如果有出现ping不通的情况,建议更换网线,然后重新长时间ping测试BMCIP地址。