bmc_network
版本信息
| 项目 | 内容 |
|---|---|
| 组件版本 | 1.120.38 |
| 首发版本 | openUBMC 25.3.0 |
| 文档作者 | mkdlf |
| 最后更新 | 2026-06-23 |
1. 组件概述
1.1 组件简介
bmc_network主要负责bmc的网络通信,从两个角度保障BMC的正常网络通信:
1、配置对外网络,用户可以通过BMC配置的管理IP带外访问BMC;
2、配置对内网络,主要用于管理板与BMC节点之间,同一机框内多个BMC之间,BMC与服务器内部其他固件的网络通信。
1.2 解决什么问题
bmc_network组件主要解决网络连通性、协议兼容性、故障恢复效率等问题,致力于提升服务可用性、优化运维效率、保障安全合规以及支撑未来扩展性等。
1.3 核心功能
- 配置IPv4
IPv4有两种方式设置
1、设置静态IPv4信息:IP、掩码、网关;
2、设置DHCP模式由DHCP服务器动态分发IPv4信息,配置成DHCP时,还可配置备份IPv4地址、掩码,当DHCP未获取到IP地址时,还可以通过备份IP访问,详情见DHCP介绍。
- 配置IPv6
IPv6地址有三种方式设置
1、设置静态IPv6信息:IP、前缀、网关;
2、设置DHCPv6模式动态分发IPv6信息,详情见DHCPv6介绍;
3、通过SLAAC自动配置无状态地址。
- 外网网口切换
BMC的网络设备通常分为两种(专用网口、NCSI网口),专用网口是BMC自身的管理网口(通常对应eth2),NCSI网口指BMC通过NCSI技术与服务器内其他网络设备实现共享的网口(通常对应eth0);这里的网口切换指的是对外网络的配置在专用网口、NCSI网口之间切换,例如从专用网口切换到NCSI网口时,eth2上的对外IP会被清除,eth0上会重新配置对外IP,外网网口切换有两种模式:
1、手动切换到指定网口;
2、设置自适应模式,自动选择优先级高且是连接状态的网口(通常专用网口优先级最高)。
- NCSI网口添加、删除
BMC支持NCSI能力,bmc_network提供了NCSI网口的添加和删除接口,该接口由network_adapter组件调用,初始化时network_adapter识别到NCSI网口的信息后来添加NCSI网口,如果该网口通信出现异常,network_adapter再调用删除接口将网口删除。
- 外网VLAN配置
VLAN配置分为专用网口VLAN和NCSI网口VLAN两种配置,当配置了VLAN后,BMC的网口只会处理带了对应VLAN tag的报文,相当于划分了虚拟的局域网。
- 内网配置
BMC除了配置对外IP,还需要配置内网与服务器内部的固件网络通信,内网的配置通常是在已有的网口上划分不同的VLAN用于和不同的固件进行通信;内网相对外网配置来说,要稳定许多,可供修改的接口较少,每种机型的内网配置在对应机型的CSR中,初始化时将网口、VLAN、IP等信息设置即可。
- 节点与管理板链路检测
在机柜环境中,BMC的节点与管理板之间还有心跳检测,若链路检测失败,外网会切换到另一条通信正常的链路保障正常通信。
- iptables配置
1、BMC想要通过web、ssh等服务被访问,不只是需要配置基本的网口和IP,还需要配置iptables的nat转发规则实现对不同服务报文的转发,才能让服务正常工作;
2、BMC配置filter表过滤规则,只接收对应网口收到的指定IP的报文,对报文的接收来源和速率进行限制,预防泛洪攻击。
- LLDP
1、通过接收LLDP报文,获取对端交换机的端口描述,常用于解析节点槽位号,生成节点的内网IP等;
2、支持BMC往外发送LLDP报文,其中LLDP报文的发送周期是可配置的。
- 网口相关配置
1、网口mac配置,可通过ipmi命令修改BMC网口的mac地址,mac地址一般在装备阶段设置一次后就固化下来;
2、网口速率配置,支持配置自协商或者非自协商模式下自定义网口速率和半/全双工模式;
3、支持up/down网口,初始化时会将所有网口全部up起来,同时也提供接口up/down网口。
- 主机名、域名、FQDN配置
设置BMC的对外主机名(Host Name)和域名(Domain Name),全称域名FQDN,外界可通过域名和主机名访问BMC。
1.4 关键术语表
| 术语 | 解释 |
|---|---|
| 专用网口 | BMC自身的网络设备,通常对应环境中的eth2 |
| NCSI网口 | NC-SI(Network Controller – Sideband Interface)技术,即网络控制器边带接口技术,NCSI网口指BMC通过NCSI线缆直连的网络设备,也可以理解除专用网口外所有的网口统称为NCSI网口。NCSI网口又可以分为PCIe/LOM/OCP等类型 |
| VLAN | VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。这样,广播报文就被限制在一个VLAN内 |
1.5 外部交互边界图
2. API 使用说明与示例
2.1 IPv4 配置管理
设置 IPv4 地址、掩码、网关等网络参数。
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.SetIpMaskGateway method a{ss}sss s -
.SetIpAddr method a{ss}ss b -
.SetDefaultGateway method a{ss}s b -
.SetDedicatedMaintIpMask method a{ss}ss b -功能说明
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.EthernetInterfaces.Ipv4 |
| 首发版本 | openUBMC 25.3.0 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| SetIpMaskGateway | sss | s | 同步设置IPv4地址、掩码、网关 | s: IPv4地址 s: 子网掩码 s: 默认网关 出参: 设置成功后的IPv4地址 |
| SetIpAddr | ss | b | 设置IPv4地址与掩码 | s: IPv4地址 s: 子网掩码 出参: true 成功,false 失败 |
| SetDefaultGateway | s | b | 单独设置IPv4网关 | s: 默认网关 出参: true 成功,false 失败 |
| SetDedicatedMaintIpMask | ss | b | 设置专用运维IP与掩码 | s: 专用运维IPv4地址 s: 子网掩码 出参: true 成功,false 失败 |
返回值与异常
| 返回值类型 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| IpAddr | IPv4设置成功 | 参数校验通过,网络配置成功 | 无 |
| true | 操作成功 | 各项设置正常执行 | 无 |
| false | 操作失败 | IP格式错误/网段不匹配/网关不可达 | 检查IP、掩码、网关格式及网络连通性 |
| InvalidIp | IP地址无效 | IP地址格式不符合IPv4规范 | 使用正确的IPv4地址 |
应用场景
- BMC初始配置静态IPv4地址、掩码和网关
- 修改BMC管理网段的IPv4配置
- 设置备份IPv4地址(当主DHCP失效时使用)
- 配置专用运维IP用于特殊维护场景
限制条件
- IPv4地址与子网掩码必须属于同一网段
- 网关地址不能与主机地址相同
- DHCP模式下手动设置的静态IP不生效
调试示例
命令行调试
# 同步设置IPv4地址、掩码、网关
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/Ipv4 bmc.kepler.Managers.EthernetInterfaces.Ipv4 \
SetIpMaskGateway a{ss}sss <ip> <掩码> <网关>
响应示例:
成功:s <ip>
失败:Call failed: Invalid IP address
# 设置IPv4地址与掩码
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/Ipv4 bmc.kepler.Managers.EthernetInterfaces.Ipv4 \
SetIpAddr a{ss}ss <ip> <掩码>
响应示例:
成功:b true
失败:b false
# 单独设置IPv4网关
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/Ipv4 bmc.kepler.Managers.EthernetInterfaces.Ipv4 \
SetDefaultGateway a{ss}s <ip>
响应示例:
成功:b true
失败:b false2.2 IPv6 配置管理
设置 IPv6 地址、前缀、网关等网络参数。
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.SetIpv6PrefixGateway method a{ss}sis s -
.SetIpv6Addr method a{ss}si b -
.SetDefaultGateway method a{ss}s b -功能说明
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.EthernetInterfaces.Ipv6 |
| 首发版本 | openUBMC 25.3.0 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| SetIpv6PrefixGateway | si | s | 一步设置IPv6地址、前缀和网关 | s: IPv6地址 i: 前缀长度(0~128) s: 默认网关 出参: 设置成功后的IPv6地址 |
| SetIpv6Addr | si | b | 设置IPv6地址和前缀长度 | s: IPv6地址 i: 前缀长度 出参: true 成功,false 失败 |
| SetDefaultGateway | s | b | 单独设置IPv6网关 | s: 默认IPv6网关 出参: true 成功,false 失败 |
返回值与异常
| 返回值类型 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| IpAddr | IPv6设置成功 | 参数校验通过,网络配置成功 | 无 |
| true | 操作成功 | 各项设置正常执行 | 无 |
| false | 操作失败 | IPv6格式错误/前缀长度超限 | 检查IPv6地址格式及前缀长度 |
| InvalidIpv6 | IPv6地址无效 | IPv6地址格式不符合规范 | 使用正确的IPv6地址 |
应用场景
- BMC配置静态IPv6管理地址
- 设置DHCPv6模式动态获取IPv6地址
- 配置IPv6默认网关实现外部通信
限制条件
- IPv6前缀长度有效范围为 0~128
- SLAAC模式下地址由路由器通告自动生成
- IPv6网关仅在Global作用域下需要配置
调试示例
命令行调试
# 一步设置IPv6地址、前缀和网关
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/Ipv6 bmc.kepler.Managers.EthernetInterfaces.Ipv6 \
SetIpv6PrefixGateway a{ss}sis <ip> <前缀> <网关>
响应示例:
成功:s <ip>
失败:Call failed: Invalid IPv6 address
# 设置IPv6地址和前缀长度
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/Ipv6 bmc.kepler.Managers.EthernetInterfaces.Ipv6 \
SetIpv6Addr a{ss}si <ip> <前缀>
响应示例:
成功:b true
失败:b false
# 单独设置IPv6网关
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/Ipv6 bmc.kepler.Managers.EthernetInterfaces.Ipv6 \
SetDefaultGateway a{ss}s <网关>
响应示例:
成功:b true
失败:b false2.3 网口与网络配置
管理网口状态、网络模式和VLAN配置等。
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.GetAllPort method a{ss} a(aya{ss}) -
.SetNetworkConfig method a{ss}ssbu - -
.AddMgmtPort method a{ss}uuissu u -
.DeleteMgmtPort method a{ss}u - -
.AddIptablesRule method a{ss}ss b -
.AddIp6tablesRule method a{ss}ss b -
.SetVLANConfig method a{ss}bu b -
.SetEthState method a{ss}sb b -
.NetworkFailover method a{ss}ss b -
.SetChassisLanSubNet method a{ss}s - -功能说明
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.EthernetInterfaces |
| 首发版本 | openUBMC 25.3.0 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| GetAllPort | - | a(aya{ss}) | 获取所有网口port列表 | 出参: port数组,每个元素包含Id、EthId、DeviceId、DevicePortId、Silkscreen、Type、AdaptiveFlag、LinkStatus、Mac |
| SetNetworkConfig | sbu | - | 设置网络配置信息 | s: 网络模式(Fixed/Automatic) b: 激活端口 u: VLAN使能状态 u: VLANId |
| AddMgmtPort | uuissu | u | 添加管理网口 | u: 设备ID u: 设备端口ID s: 丝印信息 s: EthId s: 网卡类型(ExternalPCIe/Dedicated) u: 端口ID |
| DeleteMgmtPort | u | - | 删除管理网口 | u: 端口ID |
| AddIptablesRule | ss | b | 添加IPv4 iptables规则 | s: 接口名称 s: IPv4地址 出参: true 成功,false 失败 |
| AddIp6tablesRule | ss | b | 添加IPv6 ip6tables规则 | s: 接口名称 s: IPv6地址 出参: true 成功,false 失败 |
| SetVLANConfig | bu | b | 设置端口VLAN | b: VLAN使能状态 u: VLANId(1~4094) 出参: true 成功,false 失败 |
| SetEthState | sb | b | 启用/禁用BMC网口 | s: 网口名(如eth2、usb0) b: true启用/false禁用 出参: true 成功,false 失败 |
| NetworkFailover | ss | b | 双平面切换外部网络 | s: 当前网口 s: 目标网口 出参: true 成功,false 失败 |
| SetChassisLanSubNet | s | - | 设置内网网段 | s: 机框内网通信网段 |
返回值与异常
| 返回值类型 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| a(aya{ss}) | 获取网口列表成功 | 正常查询 | 无 |
| PortId (u) | 添加网口成功 | 网口信息有效且添加成功 | 无 |
| true | 操作成功 | 配置项设置成功 | 无 |
| false | 操作失败 | 参数校验失败/网口不存在/规则冲突 | 检查参数格式及目标网口状态 |
| Unknown object | 网口不存在 | 删除或操作不存在的网口 | 检查目标网口是否存在 |
| InvalidVlanId | VLAN ID无效 | VLANId超出有效范围 | 使用有效的VLANId(1~4094) |
| PortInUse | 网口已被占用 | 切换到正在使用中的网口 | 等待原网口释放后重试 |
应用场景
- 获取当前所有可用网口信息及状态
- 添加/删除NCSI网口(由network_adapter组件调用)
- 配置网口VLAN实现网络隔离
- 网口切换:当主网口链路故障时自动或手动切换到备用网口
- iptables端口映射规则配置,使外部访问通过指定网口转发
限制条件
- 添加网口时端口ID从1开始,新增传入0由系统分配
- VLANId有效范围为1~4094,0表示关闭VLAN
- 网口切换需源网口与目标网口均处于正常连接状态
- iptables规则添加后仅在当前会话生效,重启需重新配置
调试示例
命令行调试
# 获取所有网口列表
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Managers.EthernetInterfaces \
GetAllPort a{ss} 0
响应示例:
成功:a(aya{ss}) [{"id":1,"ethid":2,"deviceid":1,"deviceportid":1,"silkscreen":"Mgmt1","type":"Dedicated","adaptiveflag":true,"linkstatus":"Connected","mac":"22:22:22:22:22:22"}]
# 设置网络配置(固定模式,激活端口1,关闭VLAN)
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Managers.EthernetInterfaces \
SetNetworkConfig a{ss}sbu "Fixed" 1 false 0
响应示例:
成功:无
失败:Call failed: Port is not available
# 添加管理网口
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Managers.EthernetInterfaces \
AddMgmtPort a{ss}uuissu 1 1 "Mgmt1" 2 "Dedicated" 1
响应示例:
成功:u 1
失败:Call failed: Port already exists
# 删除管理网口
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Managers.EthernetInterfaces \
DeleteMgmtPort a{ss}u 1
响应示例:
成功:无
失败:Call failed: Unknown object path /bmc/kepler/Managers/1/EthernetInterfaces/1
# 添加IPv4 iptables映射规则
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Managers.EthernetInterfaces \
AddIptablesRule a{ss}ss "eth2" "192.168.2.100"
响应示例:
成功:b true
失败:b false
# 添加IPv6 iptables映射规则
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Managers.EthernetInterfaces \
AddIp6tablesRule a{ss}ss "eth2" "2001:db8::100"
响应示例:
成功:b true
失败:b false
# 设置端口VLAN(使能VLAN,VLANId为100)
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Managers.EthernetInterfaces \
SetVLANConfig a{ss}bu true 100
响应示例:
成功:b true
失败:b false
# 启用/禁用网口(启用eth2)
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Managers.EthernetInterfaces \
SetEthState a{ss}sb "eth2" true
响应示例:
成功:b true
失败:b false
# 双平面切换(从eth2切换到eth0)
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Managers.EthernetInterfaces \
NetworkFailover a{ss}ss "eth2" "eth0"
响应示例:
成功:b true
失败:b false
# 设置内网网段
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Managers.EthernetInterfaces \
SetChassisLanSubNet a{ss}s "192.168.100.0/24"
响应示例:
成功:无
失败:Call failed: Invalid subnet format2.4 LLDP 配置管理
配置 LLDP(Link Layer Discovery Protocol)参数,实现邻居发现和网络拓扑识别。
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
-.Enabled property b <-- -
-.WorkMode property s <-- -
-.TxDelaySeconds property i <-- -
-.TxIntervalSeconds property i <-- -
-.TxHold property i <-- -功能说明
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.LldpConfig |
| 首发版本 | openUBMC 25.3.0 |
| 废弃状态 | 正常可用 |
属性参数说明
| 属性名 | 类型 | 只读 | 描述 | 取值范围 |
|---|---|---|---|---|
| Enabled | b | 否 | LLDP使能状态 | true: 使能,false: 禁用 |
| WorkMode | s | 否 | LLDP工作模式 | 仅支持Tx(发送模式) |
| TxDelaySeconds | i | 否 | LLDP发送延时 | 1~8192秒 |
| TxIntervalSeconds | i | 否 | LLDP发送间隔 | 5~32768秒 |
| TxHold | i | 否 | LLDP信息保持时间倍数 | 2~10(实际保持时间=间隔×倍数) |
返回值与异常
| 返回值类型 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| true | 操作成功 | 属性设置成功 | 无 |
| false | 操作失败 | 写入值超出取值范围 | 检查属性值是否符合范围 |
应用场景
- 使能LLDP实现交换机端口信息自动发现
- 配置LLDP发送周期获取邻居网络设备信息
- 解析LLDP报文获取对端交换机端口描述(Port Desc),用于解析节点槽位号
限制条件
- WorkMode仅支持Tx,不支持Rx接收模式
- TxIntervalSeconds最小值为5秒
- TxHold有效范围为2~10
调试示例
命令行调试
# 查看LLDP配置
busctl --user get-property bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/LldpConfig bmc.kepler.Managers.LldpConfig Enabled
busctl --user get-property bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/LldpConfig bmc.kepler.Managers.LldpConfig TxIntervalSeconds
# 使能LLDP
busctl --user set-property bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/LldpConfig bmc.kepler.Managers.LldpConfig Enabled b true
# 设置LLDP发送间隔为30秒
busctl --user set-property bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/LldpConfig bmc.kepler.Managers.LldpConfig TxIntervalSeconds i 30
# 设置LLDP发送延时为2秒
busctl --user set-property bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/LldpConfig bmc.kepler.Managers.LldpConfig TxDelaySeconds i 2
# 设置LLDP保持倍数
busctl --user set-property bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/LldpConfig bmc.kepler.Managers.LldpConfig TxHold i 4
响应示例:
成功:无
失败:Call failed: value is out of range2.5 网口组(EthGroup)配置管理
配置多网口组场景下的网络参数,支持同时管理多个网口组。
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.SetNetworkConfig method a{ss}ssbu - -
.SetIpMaskGateway method a{ss}sss s -
.SetIpAddr method a{ss}ss - -
.SetDefaultGateway method a{ss}s - -
.SetIpv6PrefixGateway method a{ss}sis s -
.SetIpv6Addr method a{ss}si - -
.SetIpv6DefaultGateway method a{ss}s - -
.EnableFloatIp method a{ss}b b -功能说明
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.EthernetInterfaces.EthGroup |
| 首发版本 | openUBMC 25.3.0 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| SetNetworkConfig | sbu | - | 设置网口组网络配置 | s: 网络模式(Fixed/Automatic) b: 激活端口 u: VLANId |
| SetIpMaskGateway | sss | s | 设置IPv4地址掩码网关 | s: IPv4地址 s: 子网掩码 s: 默认网关 |
| SetIpv6PrefixGateway | sis | s | 设置IPv6地址前缀网关 | s: IPv6地址 i: 前缀长度 s: 默认网关 |
| EnableFloatIp | b | b | 使能/禁用浮动IP | b: true使能,false禁用 出参: true成功,false失败 |
返回值与异常
| 返回值类型 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| IpAddr | 设置成功 | IPv4/IPv6配置成功 | 无 |
| true | 操作成功 | 浮动IP功能配置成功 | 无 |
| false | 操作失败 | 参数校验失败 | 检查参数格式及网口组状态 |
应用场景
- 多网口组环境下独立配置各网口组的网络参数
- 三网口组场景:同时管理NCSI口(eth0)和专用口(eth3)对外IP
- 启用浮动IP实现双机热备网络切换
限制条件
- 每个网口组可有多个MgmtPort,但同时只能有一个处于激活状态
- EthGroup路径格式:
/bmc/kepler/Managers/${ManagerId}/EthernetInterfaces/EthGroup/${Id} - 浮动IP功能需硬件平台支持
调试示例
命令行调试
# 获取网口组路径
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces bmc.kepler.Managers.EthernetInterfaces \
GetAllPort a{ss} 0
# 设置第一个网口组(OutEthGroup1)的IPv4配置
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/EthGroup/EthGroup_OutEthGroup1_00 \
bmc.kepler.Managers.EthernetInterfaces.EthGroup \
SetIpMaskGateway a{ss}sss <ip> <掩码> <网关>
响应示例:
成功:s <ip>
失败:Call failed: Invalid IP address
# 设置第一个网口组的IPv6配置
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/EthGroup/EthGroup_OutEthGroup1_00 \
bmc.kepler.Managers.EthernetInterfaces.EthGroup \
SetIpv6PrefixGateway a{ss}sis <ip> <前缀> <网关>
响应示例:
成功:s <ip>
# 使能浮动IP
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/EthGroup/EthGroup_OutEthGroup1_00 \
bmc.kepler.Managers.EthernetInterfaces.EthGroup \
EnableFloatIp a{ss}b true
响应示例:
成功:b true
# 设置网口组网络模式为自适应
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/EthGroup/EthGroup_OutEthGroup1_00 \
bmc.kepler.Managers.EthernetInterfaces.EthGroup \
SetNetworkConfig a{ss}sbu "Automatic" 0 false 0
响应示例:
成功:无2.6 网口速率配置
配置网口的自协商模式、速率和工作模式。
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.SetSpeed method a{ss}sbib - -功能说明
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.EthernetInterfaces.EthConfig |
| 首发版本 | openUBMC 25.3.0 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| SetSpeed | sbib | - | 设置网口速率配置 | s: 网口名称 b: 自协商使能 i: 速率(0:不涉及 1:10M 2:100M 3:1000M) b: 双工模式(0:不涉及 1:半双工 2:全双工) |
返回值与异常
| 返回值类型 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| true | 操作成功 | 速率配置成功 | 无 |
| false | 操作失败 | 网口不支持/参数不合法 | 检查网口名称和参数值 |
应用场景
- 固定网口速率为1000M全双工以获得最佳性能
- 禁用自协商并手动指定速率以兼容老旧网络设备
限制条件
- 自协商使能时,SpeedSetting和DuplexSetting参数不生效
- 半双工模式仅在非自协商且速率为10M/100M时可用
调试示例
命令行调试
# 设置eth2为自协商模式
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/Eth bmc.kepler.Managers.EthernetInterfaces.EthConfig \
SetSpeed a{ss}sbib "eth2" true 0 0
响应示例:
成功:无
失败:b false
# 设置eth2为1000M全双工(禁用自协商)
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/EthernetInterfaces/Eth bmc.kepler.Managers.EthernetInterfaces.EthConfig \
SetSpeed a{ss}sbib "eth2" false 3 2
响应示例:
成功:无
失败:b false2.7 NAT 与 Filter 规则管理
配置网络地址转换(NAT)和过滤(Filter)规则。
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
.AddNatRule method a{ss}saa{ss} - -
.UpdateNatRule method a{ss}saa{ss} - -
.AddExactNatRule method a{ss}a{ss} - -
.DeleteExactNatRule method a{ss}a{ss} - -
.AddFilterRule method a{ss}a{ss} - -
.DeleteFilterRule method a{ss}a{ss} - -功能说明
| 属性 | 内容 |
|---|---|
| 接口名 | bmc.kepler.Managers.NatConfig |
| 首发版本 | openUBMC 25.3.0 |
| 废弃状态 | 正常可用 |
方法配置参数
| 方法名 | 入参类型 | 出参类型 | 描述 | 取值范围 |
|---|---|---|---|---|
| AddNatRule | saa{ss} | - | 添加NAT规则 | s: 服务名称 aa{ss}: 协议信息键值对数组(如Protocol、DPort、ToPort等) |
| UpdateNatRule | saa{ss} | - | 更新NAT规则 | s: 服务名称 aa{ss}: 更新的协议信息 |
| AddExactNatRule | a{ss} | - | 针对IP和端口添加NAT | a{ss}: 键值对字典(包含IP、端口等配置信息) |
| DeleteExactNatRule | a{ss} | - | 针对IP和端口删除NAT | a{ss}: 键值对字典 |
| AddFilterRule | a{ss} | - | 添加Filter规则 | a{ss}: 过滤规则键值对(SourceIp、DestPort等) |
| DeleteFilterRule | a{ss} | - | 删除Filter规则 | a{ss}: 过滤规则键值对 |
返回值与异常
| 返回值类型 | 含义 | 触发条件 | 处理建议 |
|---|---|---|---|
| - | 操作成功 | 规则添加/更新/删除成功 | 无 |
| false | 操作失败 | 规则格式错误/服务不存在 | 检查规则配置及服务状态 |
应用场景
- 为Web、SSH等服务配置端口映射规则实现外部访问
- 配置源/目的IP过滤规则实现访问控制
- 更新已有NAT规则中的端口映射关系
限制条件
- NAT规则仅在临时持久化存储,重启后需重新配置
- Filter规则由SecurityMgmt权限用户操作
- 不允许添加冲突的NAT规则
调试示例
命令行调试
# 添加NAT规则
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/NatConfig bmc.kepler.Managers.NatConfig \
AddNatRule a{ss}saa{ss} 1 "ServiceName" "https" "ProtocolInfo" 2 "Protocol" "tcp" "DPort" "443" "ToPort" "443"
响应示例:
成功:无
失败:Call failed: Service already exists
# 添加精确NAT规则
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/NatConfig bmc.kepler.Managers.NatConfig \
AddExactNatRule a{ss}a{ss} 2 "key" "SrcIp" "value" "192.168.1.0/24" "key" "DPort" "value" "8080"
响应示例:
成功:无
失败:Call failed: Invalid NAT config
# 添加Filter规则
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/FilterConfig bmc.kepler.Managers.FilterConfig \
AddFilterRule a{ss}a{ss} 2 "SourceIp" "10.0.0.0/8" "DestPort" "22"
响应示例:
成功:无
失败:Call failed: Filter rule conflict
# 删除Filter规则
busctl --user call bmc.kepler.bmc_network \
/bmc/kepler/Managers/1/FilterConfig bmc.kepler.Managers.FilterConfig \
DeleteFilterRule a{ss}a{ss} 2 "SourceIp" "10.0.0.0/8" "DestPort" "22"
响应示例:
成功:无
失败:Call failed: Filter rule not found2.2 cli、IPMI接口使用样例
2.2.1 设置IPv4信息
cli设置IPv4静态IP、掩码、网关,-v后面依次传入四段式的IP、掩码、网关(网关可不传):
ipmcset -d ipaddr -v <ipaddr> <mask> [gateway]cli设置IPv4静态网关:
ipmcset -d gateway -v <gateway>cli设置IPv4模式为DHCP/Static:
ipmcset -d ipmode -v <dhcp|static>ipmi设置IPv4地址:
ipmitool -H <BMC的IP> -I lanplus -p 623 -U <用户名> -P <密码> -C 17 raw 0x0c 0x01 0x01 0x03 <四个字节的IP地址>ipmi设置IPv4掩码:
ipmitool -H <BMC的IP> -I lanplus -p 623 -U <用户名> -P <密码> -C 17 raw 0x0c 0x01 0x01 0x06 <四个字节的掩码>ipmi设置IPv4网关:
ipmitool -H <BMC的IP> -I lanplus -p 623 -U <用户名> -P <密码> -C 17 raw 0x0c 0x01 0x01 0x0c <四个字节的网关>ipmi设置IPv4模式,mode位置传1表示Static,传2表示DHCP:
ipmitool -H <BMC的IP> -I lanplus -p 623 -U <用户名> -P <密码> -C 17 raw 0x0c 0x01 0x01 0x04 <1字节的mode>2.2.2 设置IPv6信息
资源树接口:bmc.kepler.Managers.EthernetInterfaces.Ipv6
cli设置IPv6静态IP、前缀、网关,-v后面依次传入IP、掩码、网关(网关可以不传):
ipmcset -d ipaddr6 -v <ipaddr> <prefix> [gateway]cli设置IPv6静态网关:
ipmcset -d gateway6 -v <gateway>cli设置IPv6模式为DHCPv6/Static:
ipmcset -d ipmode6 -v <dhcp|static>ipmi设置IPv6地址(IP地址按小端方式传入):
ipmitool -H <BMC的IP> -I lanplus -p 623 -U <用户名> -P <密码> -C 17 raw 0x0c 0x01 0x01 0xcc <3字节的厂商ID> <16字节的IPv6地址>ipmi设置IPv6前缀:
ipmitool -H <BMC的IP> -I lanplus -p 623 -U <用户名> -P <密码> -C 17 raw 0x0c 0x01 0x01 0xcd <3字节的厂商ID> <1字节的前缀>ipmi设置IPv6网关(网关地址按小端方式传入):
ipmitool -H <BMC的IP> -I lanplus -p 623 -U <用户名> -P <密码> -C 17 raw 0x0c 0x01 0x01 0xce <3字节的厂商ID> <16字节的网关>ipmi设置IPv6模式,mode位置传1表示Static,传2表示DHCP:
ipmitool -H <BMC的IP> -I lanplus -p 623 -U <用户名> -P <密码> -C 17 raw 0x0c 0x01 0x01 0xd0 <3字节的厂商ID> <1字节的mode>2.2.3 外网网口切换
cli设置网络模式,传1表示固定网口,传2表示自适应模式:
ipmcset -d netmode -v <网络模式>cli切换网口(网络模式为固定模式才能切换网口):
ipmcset -d activeport -v <网口类型> <port id>
参数说明:
网口类型:0-专用网口 1-LOM 2-PCIe
port id: 切换到该类型网口的第几个port(port id从0开始,网口类型传0时,该参数可不传)ipmi设置网络模式:
ipmitool -H <BMC的IP> -I lanplus -p 623 -U <用户名> -P <密码> -C 17 raw 0x0c 0x01 0x01 <3字节的厂商ID> <1字节的网络模式>
参数说明:
网络模式:1-专用网口 3-自适应模式 4-PCIe (默认切换到该类型网口的第一个port)2.2.4 外网VLAN配置
cli设置VLAN:
ipmcset -d vlan -v <off | id(1~4094)> [port type]
参数说明:
VLAN使能:关闭VLAN时传off,开启VLAN时传1~4094的数字;
port type:0表示设置NCSI的VLAN,1表示设置专用网口的VLAN,可以不传,不传时默认设置NCSI的VLAN;ipmi设置VLAN:
ipmitool -H <BMC的IP> -I lanplus -p 623 -U <用户名> -P <密码> -C 17 raw 0x30 0x93 <3字节的厂商ID> 0x5a 0x1a 0x00 0x04 0x00 <1字节的port type> <1字节的VLAN使能> <2字节的VLAN id>
参数说明:
port type:0表示设置NCSI的VLAN,1表示设置专用网口的VLAN;
VLAN使能:0表示关闭,1表示使能;
VLAN id:由两个字节组成,由前一个字节的低四位和后一个字节组成12位数字3. 组件扩展案例
3.1 扩展能力概述
不适用。
4 配置介绍
4.1 配置导入导出项
NetMode:网络模式(Automatic/Fixed)
ActivePort:对外网口
IpMode:IPv4模式(DHCP/Static)
IpAddr: IPv4地址
SubnetMask:IPv4子网掩码
DefaultGateway:IPv4网关
BackupIpAddr: 备份IPv4地址
BackupSubnetMask:备份IPv4掩码
Ipv6Mode:IPv6模式(DHCPv6/Static)
Ipv6Addr:IPv6地址
Ipv6Prefix:IPv6前缀
Ipv6DefaultGateway:IPv6网关
IpVersion:IP协议(IPv4、IPv6、IPv4AndIPv6)
VlanID:NCSI VLAN id
VlanState:NCSI VLAN使能
DedicatedVlanID:专用网口VLAN id
DedicatedVlanState:专用网口VLAN使能
SLAACEnable:SLAAC使能
------------
LLDPEnable:LLDP使能
TxDelaySeconds:LLDP延迟发送时间
TxIntervalSeconds:LLDP发送周期
TxHold:LLDP发送间隔
WorkMode:LLDP工作模式,目前只支持Tx
------------
HostName:主机名
------------
DomainName:域名
------------
ChassisLan: 机框内网网段4.2 装备定制化项
通用定制项
BMCSet_ETH0_DHCPMode:IPv4是否为DHCP
BMCSet_Eth0_Ipv4:IPv4是否为Static
Custom_Eth0_Ip_Addr:IPv4地址和掩码
Custom_ipv4_gateway:IPv4网关
BMCSet_Ipv6_DHCPMode:IPv6是否为DHCPv6
BMCSet_NCSI_VLAN_ID:NCSI VLAN id
BMCSet_DEDICATED_VLAN_ID:专用网口VLAN id
BMCSet_DedicatedNCSIEnable:专用网口模式下是否使能NCSI
BMCSet_LLDPEnable:LLDP使能
BMCSet_NET_Mode:网络模式
Custom_NCSI_Port_Num:NCSI的端口号,对应NCSI网口对象的DevicePortId
BMCSet_Hostname:主机名
BMCSet_DDSN_DomainName:域名
BMCSet_IPVersion:IP协议
BMCSet_SLAACEnable:SLAAC使能
BMCSet_ChassisLan_SubNet: 机框内网网段
Custom_Ipv6_IpAddr:默认网口组上Ipv6的地址和前缀
Custom_Ipv6_Gateway:默认网口组上Ipv6的网关4.3 多网口特性CSR配置介绍
4.3.1 网口组CSR配置
网口组CSR配置的字段为"EthGroup"。历史网口组仅有一个,由EthernetInterfaces、Ipv4、Ipv6三个资源树接口共同构成,它们由bmc_network组件自上树,不依赖CSR加载。新增网口组由EthGroup接口承载,可以通过CSR加载。新增网口组可以有多个对象,每个对象承载一组网络配置。
EthGroup的CSR配置示例如下所示:
"EthGroup_OutEthGroup1": {
"Name": "OutEthGroup1", //网口组名字
"GroupId": 1, //网口组ID
"OutType": 2, //网口组类型(2即为对外网口)
"ActiveEthId": 0, //网口组对应的ethid(此处指eth0,需对应实际情况)
"InnerNetWork": "",
"VLANId": 0, //网口组对应的vlanID
"VLANEnabled": false, //网口组对应的vlan使能
"EthAlias": 255,
"IpAddr":"192.168.2.102", //网口组对应的Ipv4地址
"BackupIpAddr": "192.168.2.102", //备份IP地址
"BaseIpAddr": "",
"SubnetMask": "255.255.255.0", //网口组对应的Ipv4子网掩码
"BackUpSubnetMask": "255.255.255.0", //网口组对应的备份Ipv4子网掩码
"DefaultGateway": "192.168.2.200", //网口组对应的Ipv4默认网关
"IpPolicy": 0,
"Status": true, //网口组使能
"IpMode": "DHCP", //网口组对应的Ipv4模式
"Ipv6Mode": "Static", //网口组对应的Ipv6模式
"Ipv6Addr": "", //网口组对应的Ipv6地址
"PrefixLength": 0, //网口组对应的Ipv6前缀长度
"Ipv6DefaultGateway": "", //网口组对应的Ipv6默认网关
"AssociatedPortType": 1, //网口组关联的Port类型,1代表NCSI口,2代表专用口
"Channel": 2 //网口组对应的LAN通道号
},对于三网口组环境,目前可以配置两个网口组,一个用于承载NCSI口(eth0),另一个用于承载专用口(eth3),实现三网口同时使能。三网口组环境的多网口组配置可以参考如下:
"EthGroup_OutEthGroup1": {
"Name": "OutEthGroup1",
"GroupId": 1,
"OutType": 2,
"ActiveEthId": 0,
"InnerNetWork": "",
"VLANId": 0,
"VLANEnabled": false,
"EthAlias": 255,
"IpAddr":"192.168.2.102",
"BackupIpAddr": "192.168.2.102",
"BaseIpAddr": "",
"SubnetMask": "255.255.255.0",
"BackupSubnetMask": "255.255.255.0",
"DefaultGateway": "192.168.2.102",
"IpPolicy": 0,
"Status": true,
"IpMode": "Static",
"Ipv6Mode": "Static",
"Ipv6Addr": "",
"PrefixLength": 0,
"Ipv6DefaultGateway": "",
"AssociatedPortType": 1,
"Channel": 2
},
"EthGroup_OutEthGroup2": {
"Name": "OutEthGroup2",
"GroupId": 2,
"OutType": 2,
"ActiveEthId": 3,
"InnerNetWork": "",
"VLANId": 0,
"VLANEnabled": false,
"EthAlias": 255,
"IpAddr":"192.168.2.103",
"BackupIpAddr": "192.168.2.103",
"BaseIpAddr": "",
"SubnetMask": "255.255.255.0",
"BackUpSubnetMask": "255.255.255.0",
"DefaultGateway": "192.168.2.103",
"IpPolicy": 0,
"Status": true,
"IpMode": "Static",
"Ipv6Mode": "Static",
"Ipv6Addr": "",
"PrefixLength": 0,
"Ipv6DefaultGateway": "",
"AssociatedPortType": 2,
"Channel": 3
},4.3.2 网口组CSR配置
网口CSR配置的字段为"EthMac"。该CSR用于配置需要拉起的网口信息,包括Id,MAC等。EthMac的CSR配置示例如下所示:
双网口组环境示例:
"EthMac_Eth0": {
"EthId": 0, //网口组对应的ethid(此处指eth0,需对应实际情况)
"EthName": "eth0", //网口名
"GroupId": "EthGroup0", //网口对应的网口组
"Mac": "20:22:01:75:BC:60", //网口对应的MAC地址
"MacUseEnabled": false, //是否使能该网口(对于每个网口组,仅有一个网口需要使能,此处不使能eth0)
"SpeedDuplexEnable": true,
"SpeedSetting": 0,
"DuplexSetting": 0
},
"EthMac_Eth2": {
"EthId": 2,
"EthName": "eth2",
"GroupId": "EthGroup0",
"Mac": "20:22:01:75:BC:60",
"MacUseEnabled": true, //是否使能该网口(对于每个网口组,仅有一个网口需要使能,此处使能eth2)
"SpeedDuplexEnable": true,
"SpeedSetting": 0,
"DuplexSetting": 0
}三网口组环境示例:
"EthMac_Eth0": {
"EthId": 0,
"EthName": "eth0",
"GroupId": "EthGroup0",
"Mac": "20:22:01:75:BC:60",
"MacUseEnabled": false,
"SpeedDuplexEnable": true,
"SpeedSetting": 0,
"DuplexSetting": 0
},
"EthMac_Eth2": {
"EthId": 2,
"EthName": "eth2",
"GroupId": "EthGroup0",
"Mac": "20:22:01:75:BC:60",
"MacUseEnabled": true,
"SpeedDuplexEnable": true,
"SpeedSetting": 0,
"DuplexSetting": 0
},
"EthMac_Eth3": {
"EthId": 3,
"EthName": "eth3",
"GroupId": "EthGroup0",
"Mac": "20:22:01:75:BC:60",
"MacUseEnabled": false,
"SpeedDuplexEnable": true,
"SpeedSetting": 0,
"DuplexSetting": 0
}4.3.3 专用网口CSR配置
专用网口CSR配置的字段为"DedicatedPort"。该CSR用于配置专用网口信息,三网口组环境的专用网口CSR配置示例如下所示:
"DedicatedPort_Eth2": {
"Id": 1, //专用网口对应的PortId(eth2固定为1)
"EthId": 2, //专用网口对应的EthId
"DeviceId": 1, //专用网口对应的设备ID
"DevicePortId": 1, //专用网口对应的设备PortID
"Silkscreen": "Mgmt1", //专用网口对应的丝印
"NcsiInitPortFlag": true,
"VLANId": 0, //专用网口对应的VlanId(专用网口vlan需配置一致)
"VLANEnabled": false, //专用网口对应的Vlan使能
"OriginalGroupId": 0, //专用网口对应的默认网口组归属
"CurrentGroupId": 0 //专用网口对应的当前网口组归属
},
"DedicatedPort_Eth3": {
"Id": 2,
"EthId": 3,
"DeviceId": 1,
"DevicePortId": 2,
"Silkscreen": "Mgmt2",
"NcsiInitPortFlag": false,
"VLANId": 0,
"VLANEnabled": false,
"OriginalGroupId": 2,
"CurrentGroupId": 0
}4.3.4 LAN通道CSR配置
LAN通道CSR配置的字段为"IPMIChannel",该CSR用于配置IPMI的lan通道信息,于网口组EthGroup中的”Channel“字段对应。三网口组环境的LAN通道CSR配置示例如下所示:
"IPMIChannel_LAN1": {
"ChanType": 4,
"Instance": 1, //与LAN通道ID一致
"ChanPro": 1,
"ChannelID": 1, //与LAN通道ID一致
"DestAddr": 32,
"SrcAddr": 0,
"MedType": 4
},
"IPMIChannel_LAN2": {
"ChanType": 4,
"Instance": 2,
"ChanPro": 1,
"ChannelID": 2,
"DestAddr": 32,
"SrcAddr": 0,
"MedType": 4
},
"IPMIChannel_LAN3": {
"ChanType": 4,
"Instance": 3,
"ChanPro": 1,
"ChannelID": 3,
"DestAddr": 32,
"SrcAddr": 0,
"MedType": 4
},5. 日志说明
5.1 一键日志收集
| 文件路径 | 内容说明 |
|---|---|
| dump_info\AppDump\bmc_network\lldp_info.txt | lldp配置信息 |
| dump_info\AppDump\bmc_network\mdb_info.log | 资源树信息 |
| dump_info\AppDump\bmc_network\network_info.txt | 网络配置信息 |
5.2 关键日志信息
| 日志片段 | 日志级别 | 含义解读 | 建议处理动作 |
|---|---|---|---|
| ===== network service init ======= | NOTICE | 网络初始化 | 无 |
| eth mac self discovery finish | NOTICE | 自发现对象分发完成 | 无 |
| set_ipv4_mask_gateway: ip_mode = [Static], ip_addr = [x.x.x.x], ip_submask = [x.x.x.x], ip_gateway = [x.x.x.x] | NOTICE | rpc设置ipv4静态地址 | 无 |
| set_ipv6_prefix_gateway: [Static], ip_addr = [xxxx], PrefixLength = [x], DefaultGateway = [xxxx] | NOTICE | 自发现对象rpc设置ipv6静态地址分发完成 | 无 |
| dhcp get out eth(ethx) new ipv4 info, ip: x.x.x.x, mask: x.x.x.x, gateway: x.x.x.x | NOTICE | DHCP获取到ipv4地址 | 无 |
| dhcpv6 get out eth(ethx) new ipv6 info, ip: xxxx, prefix: x, gateway: xxxx | NOTICE | DHCPv6获取到ipv6地址 | 无 |
6. 问题定界指南
6.1 典型问题定界
| 现象描述 | 是否为本组件问题 | 判断依据 | 关键证据收集方法 |
|---|---|---|---|
| ssh登录bmc失败,可以ping通BMC | 否 | - | - |
| ssh登录bmc失败,不能ping通BMC | 是 | - | - |
| ping BMC环境或者用ssh登录BMC环境,一会通一会不通 | 是 | MAC地址冲突,在OS修改MAC地址后解决 | - |
6.2 调试方法
6.2.1 开启调试日志
- 定制互联网仓
##设置xx定制仓
busctl --user set-property bmc.kepler.maca /bmc/kepler/Managers/1/Package bmc.kepler.Managers.Package Customer s "xx"
##定制完互联网仓后需重启BMC生效
ipmcset -d reset
##查询当前环境定制类型
busctl --user get-property bmc.kepler.maca /bmc/kepler/Managers/1/Package bmc.kepler.Managers.Package Customer- 查看与删除持久化数据
由于单网口和多网口环境中持久化数据不一致,在使用多网口环境回退到单网口环境时,可能存在某些持久化数据不一致的问题,因此可以在环境内进行持久化数据的查看与清理。
持久化数据主要分为临时持久化、复位持久化、掉电持久化和永久持久化,其数据库存储路径如下:
临时持久化(TemporaryPer): /run/persistence/per_temporary.db
复位持久化(ResetPer): /opt/bmc/pram/persistence/per_reset.db
掉电持久化(PoweroffPer): /data/trust/persistence/per_poweroff.db
永久持久化(PermanentPer): /dev/mmcblk0p8
- 查看与清除持久化的命令示例
/usr/sbin/sqlite3 /data/trust/persistence/per_poweroff.db
//查看
select * from persist_table where table_name='t_ncsi_nc_info';
select * from persist_table where table_name='t_channel_number_mappings';
select * from persist_table where table_name='t_network_mgmtport';
select * from persist_table where table_name='t_network_ethernetInterface';
select * from persist_table where table_name='t_network_ipv4';
select * from persist_table where table_name='t_network_ipv6';
select * from persist_table where table_name='t_network_eth_group';
//删除
DELETE FROM t_update_mgmt WHERE ID = 1;
DELETE FROM persist_table WHERE table_name='t_channel_number_mappings';
DELETE FROM persist_table WHERE table_name='t_network_eth_group';
DELETE FROM persist_table WHERE table_name='t_network_mgmtport';
DELETE FROM persist_table WHERE table_name='t_network_ethernetInterface';
DELETE FROM persist_table WHERE table_name='t_ncsi_nc_info';- 常用的CLI命令
CLI命令分为ipmcset和ipmcget,使用CLI命令是主要关注-d、-t参数,可以参考:
Usage: ipmcget -d dataitem [-v value]
-d <dataitem>
ipinfo Get ip information
lldpinfo Get LLDP information
version Get openUBMC version
Usage: ipmcset -d dataitem [-v value]
-d <dataitem>
activeport Set EthGroup active port
backupipaddr Set backup ip address
gateway Set gateway
gateway6 Set ipv6 gateway
ipaddr Set ip address
ipaddr6 Set ipv6 address
ipmode Set ip mode
ipmode6 Set ipv6 mode
ipversion Set ip version
netmode Set net mode
vlan Set sideband vlan详细使用案例见2.2章节。
- 查看资源树属性
//查看网络模块相关资源树
busctl --user tree bmc.kepler.bmc_network | egrep -v "IpmiCmds"
//查看第一个网口组资源树
busctl --user introspect bmc.kepler.bmc_network /bmc/kepler/Managers/1/EthernetInterfaces
busctl --user introspect bmc.kepler.bmc_network /bmc/kepler/Managers/1/Ipv4
busctl --user introspect bmc.kepler.bmc_network /bmc/kepler/Managers/1/Ipv6
//查看新增网口组资源树(OutEthGroup1代表第一个新增网口组)
busctl --user introspect bmc.kepler.bmc_network /bmc/kepler/Managers/1/EthernetInterfaces/EthGroup/EthGroup_OutEthGroup1_00
//查看网口资源树(最后一个数字代表网口的PortId)
busctl --user introspect bmc.kepler.bmc_network /bmc/kepler/Managers/1/EthernetInterfaces/1- 查看系统协议栈
//查看系统协议栈网口信息
ifconfig
sbin/ifconfig
//查询过滤规则,是否每个对外网口均添加
iptables -t filter -nvL
ip6tables -t filter -nvL
//查询转发规则,是否每个对外网口均添加
iptables -t nat -nvL
ip6tables -t nat -nvL注意: 以上均配置正常则可能需要抓包处理。 可能不连通的原因:(1)局域网中存在相同的IP或MAC地址;(2)Vlan没有和交换机匹配;(3)能ping通,转发规则正常,ssh、web服务不能连通则需联系运维组件。
7. 常见问题解答
7.1 pingBMC环境或者用ssh登录bmc环境,一会通一会不通
| 原因 | 解决方案 |
|---|---|
| MAC地址冲突 | 在OS修改MAC地址解决 ipmitool raw 0x30 0x90 0x44 0x02 <6字节的mac> |
| IP地址冲突 | 可切换DHCP模式或修改静态IP |
更多常见问题请查阅《网络管理常见问题指南》。
附录
附录A 参考资料
附录B 修订记录
| 版本 | 日期 | 修订人 | 修订内容 |
|---|---|---|---|
| v1.0 | 2026-04-30 | mkdlf | 修改文档格式、补充bmc_network说明 |