栏目介绍:“玩转OurBMC”是OurBMC社区开创的知识分享类栏目,主要聚焦于社区和BMC全栈技术相关基础知识的分享,全方位涵盖了从理论原理到实践操作的知识传递。OurBMC社区将通过“玩转OurBMC”栏目,帮助开发者们深入了解到社区文化、理念及特色,增进开发者对BMC全栈技术的理解。
欢迎各位关注“玩转OurBMC”栏目,共同探索OurBMC社区的精彩世界。同时,我们诚挚地邀请各位开发者向“玩转OurBMC”栏目投稿,共同学习进步,将栏目打造成为汇聚智慧、激发创意的知识园地。
网络作为BMC系统中的核心要素之一,其通畅性直接关系到服务器管理人员能否高效地进行远程管理和维护工作。在本期内容中,我们将全面介绍OpenBMC的网络配置。首先,我们将概述OpenBMC网络配置的不同方式,随后详细阐述具体的配置方法,旨在为读者提供清晰的指导,帮助他们更好地掌握并应用这些技巧,以提升服务器远程管理的效率。
OpenBMC 网络配置
BMC系统的网络配置涵盖了多个关键要素,包括:IP地址设置、网关与路由配置、静态DNS服务器配置、主机名定义以及NTP(Network Time Protocol,网络时间协议)设置等。
网络配置方式根据生效时效可以分为以下两种:
1. 暂时的网络配置:利用ifconfig等命令直接对系统的网络参数进行配置,配置后立即生效。当系统或网络服务被重启后,这些配置将失效,系统恢复到之前的网络配置状态。
2. 永久的网络配置:修改BMC系统内的网络配置文件,不会立即生效,需要重启网络服务或系统后才生效,并且会永久生效。
在BMC网络配置过程中,永久生效的网络配置方法主要涉及三个重要的模块:phosphor-ipmi-host,phosphor-network-manage以及systemd-networkd。下面将分别对这三个模块进行介绍。
-
phosphor-ipmi-host
phosphor-ipmi-host是BMC固件中的软件包。在BMC中,phosphor-ipmi-host.service在BMC上电后会自动启动,如图 1 所示:
图 1 phosphor-ipmi-host.service
当BMC系统运行后,phosphor-ipmi-host在系统内启动ipmid守护进程,负责响应网络配置相关的IPMI命令。例如:通过transporthandler.cpp 中的getlan() 和setlan()获取和配置网络信息。
LPC(Low Pin Count)是一种用于连接外围设备的接口标准,主要用于服务器BMC与服务器之间进行通信。使用LPC接口,管理人员可在BIOS/OS中通过带内IPMI的方式配置BMC的网络。
通过带外IPMI方式配置BMC网络还涉及phosphor-ipmi-net\@.service,该服务依赖于phosphor-ipmi-host.service。在BMC系统中,phosphor-ipmi-net\@.services启动netipmid守护进程后,通过IPMITOOL lanplus接口发送的IPMI命令,在BMC端交由netipmid和ipmid处理。需要注意的是每个以太网网络设备都对应各自的服务和套接字,例如,eth0对应的服务名称为phosphor-ipmi-net\@eth0.service,对应的套接字为phosphor-ipmi-net\@eth0.socket。
-
phosphor-network-manager
phosphor-network-manager是处理BMC网络管理操作的守护进程,当进程启动时,其在系统上创建实现物理链路/虚拟接口的对象。在BMC系统中,该进程由xyz.openbmc_project.Network.service启动,后者在BMC上电后会自动启动,如图 2 所示:
图 2 xyz.openbmc_project.Network.service
在使用IPMI命令或在BMC WEB界面上对BMC网络进行配置后,phosphor-network-manager通过ethernet_interface.cpp中的writeConfigurationFile()将对应的配置参数写入网络配置文件,最后自动重启systemd-networkd.service重置网络。因此,这两种方式对BMC的网络进行配置后,配置会立即生效,而且在BMC网络重启或者系统重启后仍然生效。
-
systemd-networkd
systemd-networkd.service对应的守护进程名为systemd-networkd,守护进程的绝对路径为/lib/systemd/systemd-networkd。配置静态IP,发送DHCP请求等功能均由该进程完成。在BMC中,systemd-networkd.service在BMC上电后会自动启动,如图 3 所示:
图 3 systemd-networkd.service
在BMC系统中,网络设备的配置文件须以 .network 为后缀名,否则将被忽略。以BMC的带外管理网口eth0为例,其配置文件路径为:/etc/systemd/network/00-bmc-eth0.network,具体内容如图 4 所示:
图 4 00-bmc-eth0.network
当人为直接修改网络设备的配置文件后,新的网络配置并不会立即自动生效。为了应用这些更改,需要通过重启systemd-networkd.service服务来重置网络配置,这样修改后的配置文件才会被加载并生效。
IPMI 命令配置 BMC 网络
在服务器中,利用IPMI命令配置BMC网络,主要有在BIOS下和在HOST OS下使用IPMI命令进行BMC网络配置两种方式。具体流程如下图 5 所示:
图 5 IPMI命令配置BMC网络
-
BIOS下配置BMC网络
该方法需要LPC可用且BIOS固件支持带内IPMI配置网络。
在无法使用BMC串口且无法获取BMC固件中的默认IP时,如果BMC卡在位且已上电完成,可通过服务器的BIOS setup界面查看并配置BMC网络。该方法原理是BIOS与BMC通过IPMI进行通信,需要服务器外接显示器及键鼠进行操作。
以搭载飞腾腾云S5000C的服务器为例,上电后按F2后,选择 “Enter Setup”,再依次选择 “Advanced Config”,“BMC information”,“BMC Network” 即可配置BMC 网络(eth1普通管理网口)。如图 6 所示:
图 6 BIOS下配置BMC网络
-
HOST OS下配置BMC网络
该方法需要LPC可用且HOST OS安装好IPMITOOL。
在BIOS下配置BMC网络的方式不需要服务器进入OS,如果可进入服务器OS,则可以在服务器OS下使用IPMITOOL,通过带内的方式配置BMC网络,省去启动服务器进入BIOS SETUP界面寻找网络配置界面的步骤。
常见的带内IPMI配置网络命令如下:
-
显示BMC的IP地址信息(可使用其它通道号查看设备可使用通道的信息,此处配置通道1,以下命令中的1都是代表配置通道1):
# ipmitool lan print 1
-
设置BMC的IP地址:
# ipmitool lan set 1 ipaddr 192.168.0.198
-
设置BMC的子网掩码:
# ipmitool lan set 1 netmask 255.255.255.0
-
设置 IPMI的网关:
# ipmitool lan set 1 defgw ipaddr 192.168.0.254
按照上述步骤依次执行,最终结果如图 7 所示:
图 7 ipmitool lan print 1
如BMC网络已连通且已知bmc_ip,则可通过带外方式配置网络,在上述命令后加上 “-I lanplus -H bmc_ip -U username -P password -C 17” 即可。带外配置BMC网络的方式不局限于在服务器中使用,其它连通BMC网络且能发送IPMI命令的设备均可使用。
D-BUS 配置 BMC 网络
-
BMC WEB配置网络
BMC WEB配置网络依赖于phosphor-network-manager和systemd-networkd两个守护进程,本质上使用了D-BUS来配置网络。关于D-BUS机制,玩转OurBMC第七期有更详细的介绍。
在BMC网络连通的情况下,管理人员可使用BMC WEB对网络进行配置。在浏览器输入:https://bmc_ip/#/settings/network,添加静态IPv4地址,如图 8 所示:
图 8 BMC WEB添加IPv4地址
在图 8 中点击 “添加” 后,BMC后端会执行如下命令:
busctl call xyz.openbmc_project.Network /xyz/openbmc_project/network/eth0 xyz.openbmc_project.Network.IP.Create IP ssys "xyz.openbmc_project.Network.IP.Protocol.IPv4" "192.168.20.100" 24 "192.168.20.1"
Ifconfig 配置 BMC 网络
-
适用场景
该方法适用于临时配置网络,在BMC重启网络服务或复位后,通过ifconfig配置的网络失效。适用于能够使用BMC的串口的场景。
-
常见用法
-
ifconfig 查看active的网卡信息
-
ifconfig -a 查看所有网卡信息
-
ifconfig eth_name 查看指定网卡的信息
-
ifconfig eth_name [up|down] 启用或禁用某个网卡
-
ifconfig eth_name ip_addr 配置静态IP
OpenBMC的网络配置对实现高效的服务器远程管理至关重要。通过以上内容,我们可以了解网络配置的基本方式和详细方法,希望可以帮助服务器管理人员建立稳定、可靠的BMC网络,为服务器的远程管理提供有力保障。
欢迎大家关注OurBMC社区,了解更多BMC技术干货。
OurBMC社区官方网站:
https://www.ourbmc.cn/