我正在开发一个系统,在该系统中,我们重命名了一些网络接口,以确保应用程序的一致性。我们在安装过程中很难配置 IP 地址。我做了一些测试,通过配置连接,nmtui
似乎有两个用例:
自动命名接口:
当接口名称具有操作系统指定的名称(示例eno1
)时,连接配置存储在/etc/NetworkManager/system-connections/eno1.nmconnection
重命名的接口:
当接口名称更改时(例如在文件中data
提供),连接配置将存储在文件中。DEVICE
ifcfg-
/etc/sysconfig/network-scripts/ifcfg-data
现在,在这两种情况下,ifcfg-
都存在一个文件。在 的情况下eno1
,文件设置MTU
和ZONE
,在 的情况下data
,文件设置NAME
和DEVICE
。
有谁能解释一下为什么会出现明显的不一致以及在这两种情况下我应该如何预先配置我的界面?
更新:
我做了一些进一步的测试,无论是否在 中包含该NAME
设置ifcfg
,只要设置device
为默认值以外的其他值,NetworkManager 都会将该接口的 IP 配置存储在 中ifcfg
。如果您使用原始接口名称填充NAME
and DEVICE
,它会将 IP 配置存储在.nmconnection
文件中。
答案1
我从未找到有效地预先配置重命名的接口的方法,因此我们现在使用的过程如下:
- 不要使用 ks
network
命令配置接口。这会导致网络配置根据 nmconnection 密钥文件格式的默认接口名称进行配置。如果您在安装过程中需要该界面,则可以这样做。无论如何,我们稍后会删除它们。 - 在启动
%post
脚本中:- 在新文件系统(应安装在
/mnt/sysimage
)中,ifcfg-
为要重命名的接口创建文件。HWADDR
将接口的 MAC 地址DEVICE
与所需的设备名称和NAME
连接名称一起包含在内。 - 创建一个
network-config.sh
将在首次引导期间运行的脚本,该脚本执行以下操作:- 删除所有自动生成的连接
/etc/NetworkManager/system-connections
- 重新加载网络配置 (
nmcli conn reload
) - 使用 nmcli 使用新设备名称配置网络接口
- 禁用然后重新启用接口
- 修改引导脚本以确保该
network-config.sh
脚本仅在第一次引导时运行。
- 删除所有自动生成的连接
- 在新文件系统(应安装在
最终结果是重命名的接口将存储其 IP 配置/etc/sysconfig/network-scripts/ifcfg-*
,并且具有默认名称的接口将配置在/etc/NetworkManager/system-connections/*.nmconnection