环境:华为刀片服务器,操作系统 CentOS Linux 7.9 (Core) x86_64,内网无外网访问,只能通过 U 盘等方式离线安装软件。

这次的目标很简单,但过程不算短:

  1. 完全离线的 CentOS 7.9 上安装 ipmitool
  2. ipmitool 查出华为刀片的 BMC(管理口)IP
  3. 把原本 DHCP 获取的管理口 IP 固定下来(保持不变,但改为静态配置);
  4. 顺带解决 “跳板机 ping 不到管理口”、“ipmitool timeout” 等一系列小坑。

下面按时间线把过程梳理一下。


一、确认系统版本和架构:别一上来就装错包

在离线环境下安装 RPM 包,第一步必须搞清楚系统版本和架构,否则 100% 会装错。

在服务器上执行:

1
2
cat /etc/centos-release
uname -m

得到结果:

1
2
CentOS Linux release 7.9.2009 (Core)
x86_64

这两个信息非常关键:

  • 说明这是 CentOS 7 系列,而不是 Stream 9;
  • 架构是 x86_64,所以必须找 ...x86_64.rpm 的包。

后面所有 rpm 选择,都要和这个对应:el7 + x86_64


二、找到正确的 ipmitool RPM:ipmitool-1.8.18-9.el7_7.x86_64.rpm

在 CentOS 7 的官方/镜像仓库里,找到了这样一个包:

1
ipmitool-1.8.18-9.el7_7.x86_64.rpm

几个关键信息:

  • el7_7:适配 CentOS/RHEL 7.7 及后续小版本(7.9 用也没问题);
  • x86_64:架构正确;
  • 包说明里也写着:“ipmitool rpm build for : CentOS 7”

用 U 盘把这个 rpm 拷到服务器 /home/centos,切到 root,尝试安装:

1
2
3
su -
cd /home/centos
rpm -ivh ipmitool-1.8.18-9.el7_7.x86_64.rpm

这次的报错非常简洁:

1
2
错误:依赖检测失败:
OpenIPMI-modalias 被 ipmitool-1.8.18-9.el7_7.x86_64 需要

这就正常了:缺一个依赖而已,不是“整代不兼容”


三、补齐依赖:离线安装 OpenIPMI 系列包

ipmitool 依赖 OpenIPMI-modalias,而 OpenIPMI-modalias 又依赖 OpenIPMI / OpenIPMI-libs

所以在有网的机器上,需要额外下载这几个包(版本号可略有不同,只要是 el7 + x86_64 即可):

  • OpenIPMI-2.0.23-*.el7.x86_64.rpm
  • OpenIPMI-libs-2.0.23-*.el7.x86_64.rpm
  • OpenIPMI-modalias-2.0.23-*.el7.x86_64.rpm

同样用 U 盘拷到服务器上的某个目录(例如 /root/rpms):

1
2
3
4
5
6
7
8
mkdir -p /root/rpms
cd /root/rpms

# 这里假设已经有四个文件:
# OpenIPMI-2.0.23-*.el7.x86_64.rpm
# OpenIPMI-libs-2.0.23-*.el7.x86_64.rpm
# OpenIPMI-modalias-2.0.23-*.el7.x86_64.rpm
# ipmitool-1.8.18-9.el7_7.x86_64.rpm

一次性安装:

1
rpm -ivh OpenIPMI-*.rpm ipmitool-1.8.18-9.el7_7.x86_64.rpm

如果没有其它依赖报错,就算成功安装 OpenIPMI + ipmitool 了。

验证一下:

1
ipmitool -V

输出类似:

1
ipmitool version 1.8.18

到这里,离线安装 ipmitool 的任务就完成了


四、用 ipmitool 查管理口 IP

加载一下 IPMI 内核模块(有些系统自动加载,有些需要手动):

1
2
3
modprobe ipmi_msghandler
modprobe ipmi_si
modprobe ipmi_devintf

然后直接查询 BMC(管理口)网络配置,一般用 channel 1

1
ipmitool lan print 1

输出类似:

1
2
3
4
5
6
7
Set in Progress         : Set Complete
IP Address Source : DHCP Address
IP Address : 192.168.11.13
Subnet Mask : 255.255.255.128
MAC Address : f4:e5:f2:a2:93:28
Default Gateway IP : 192.168.11.1
...

这行:

1
IP Address              : 192.168.11.13

就是这次要找的 管理口(BMC/iBMC/iMana)的 IP 地址

注意:这个 IP 不等于 OS 网卡的 IP,它是独立的管理网口。


五、为什么本机能 ping 通,跳板机 ping 不通?

继续在 CentOS 上看网卡:

1
2
ip addr
ip route

可以看到 OS 的业务网口 eno3 是:

1
2
inet 192.168.11.14/25 dev eno3  proto dhcp
gateway 192.168.11.1

Windows 跳板机则是:

1
2
3
IPv4 Address : 192.168.11.29
Subnet Mask : 255.255.255.128
Default GW : 192.168.11.1

从 IP/掩码上看:

  • BMC:192.168.11.13/25
  • OS: 192.168.11.14/25
  • 跳板:192.168.11.29/25

三者同网段。但是现象是:

  • CentOS 本机能 ping 192.168.11.13
  • 跳板机能 ping 192.168.11.14,但 ping 不到 192.168.11.13

这非常典型——说明:

  • BMC 管理口实际上在一个“管理 VLAN / 管理网”里,逻辑上虽然是这个网段,但交换机 / 路由 / ACL 对办公网是有限制的;
  • OS 到 BMC 是“板上通道 + 同交换机”,所以通;
  • 办公网到管理网被隔离,所以 ping 不通。

这种场景非常常见于机房:BMC 管理网和业务网隔离


六、绕过网络隔离:用 SSH 端口转发访问 BMC Web

虽然跳板机不能直接 ping BMC,但是能通过 OS(192.168.11.14)做“跳板”。

在跳板机上执行(假设用户是 centos):

1
ssh -L 8443:192.168.11.13:443 centos@192.168.11.14
  • 8443 是本地监听端口;
  • 192.168.11.13:443 是 BMC 的 HTTPS 服务;
  • centos@192.168.11.14 是登录到服务器的账户。

登陆成功之后,这个 ssh 窗口保持打开,在跳板机的浏览器里访问:

1
https://127.0.0.1:8443

浏览器会提示证书不受信任,点“继续访问”即可——看到的就是 BMC 的 Web 登录界面

用 PuTTY 的话,就是在 Connection → SSH → Tunnels 里配置:
Source port: 8443
Destination: 192.168.11.13:443
类型选 Local,加进去,再打开会话即可。

通过这种方式,即使管理网对办公网封锁,我们依然可以通过服务器本机访问 BMC。


七、把 DHCP 改为静态 IP(仍然使用 192.168.11.13)

当用 ipmitool lan print 1 看到:

1
2
IP Address Source : DHCP Address
IP Address : 192.168.11.13

此时管理口是从 DHCP 拿到 192.168.11.13未来有可能因为 DHCP 变化而改变 IP

要求是:

“我就想一直用 192.168.11.13,这个 IP 不要变。”

可以用 ipmitool 把 IP 源从 DHCP 改成 static,并显式写入 IP/掩码/网关:

1
2
3
4
5
6
7
8
9
10
11
# 改成静态地址模式
ipmitool lan set 1 ipsrc static

# 设置 IP 地址(保持原来的 192.168.11.13)
ipmitool lan set 1 ipaddr 192.168.11.13

# 设置掩码(和之前 DHCP 获取的一样)
ipmitool lan set 1 netmask 255.255.255.128

# 设置默认网关
ipmitool lan set 1 defgw ipaddr 192.168.11.1

再查一遍:

1
ipmitool lan print 1

确认变成:

1
2
IP Address Source : Static Address
IP Address : 192.168.11.13

到这里,管理口 IP 就变成静态 192.168.11.13 了


八、改完 IP 后短暂 ping 不通、ipmitool timeout 的处理

在改为 static 的过程中,遇到过短时间内:

  • ping 192.168.11.13 不通;
  • ipmitool lan print 1 / ipmitool mc info 报错 timeout。

这其实是正常现象:
BMC 在应用新的网络配置或重启自身控制器时,会有一小段“不可用窗口”

常用救援步骤:

  1. 在 OS 上执行一次 BMC 冷重启:

    1
    ipmitool mc reset cold
  2. 等 1–2 分钟,再尝试:

    1
    2
    ipmitool lan print 1
    ping -c 4 192.168.11.13
  3. 如果 lan print 能正常输出,且 IP Address Source 仍然是 Static Address,说明配置已保存;

  4. 即便 mc reset cold 那条命令本身显示 timeout,也不代表没重启,通常 BMC 已经在重启了,只是通道断了响应

这次的结果是:

等了一会儿之后,BMC 恢复了响应,静态 192.168.11.13 可以正常 ping 通和 Web 访问。


总结

这次从零开始,在一台离线的华为刀片服务器上:

  1. 确认了系统版本和架构是 CentOS 7.9 x86_64
  2. 下载并离线安装了 ipmitool-1.8.18-9.el7_7.x86_64 和相关 OpenIPMI 依赖;
  3. 使用 ipmitool lan print 1 成功查到 BMC 管理口 IP:192.168.11.13(原先为 DHCP);
  4. 分析出业务网和管理网的隔离问题,通过 SSH 本地端口转发 实现从跳板机访问 BMC Web;
  5. 将 BMC IP 从 DHCP 改为静态 192.168.11.13 并成功应用;
  6. 处理了 BMC 配置变更过程中短暂 ping 不通、ipmitool timeout 的现象,并通过 mc reset cold + 等待让管理口恢复。

最终达成的状态是:

  • 管理口 IP 已固定为 192.168.11.13,可长期用于远程管理;
  • 通过 ssh -L 8443:192.168.11.13:443 centos@192.168.11.14 + https://127.0.0.1:8443,可以在任何能 ssh 到服务器的机器上访问 BMC;
  • 日后若 OS 登录口需要固定 IP,更推荐通过 DHCP 保留地址(网管侧配置),而不是在生产环境里随意改网卡为静态。