在 2002 年的第一次红帽认证工程师 (RHCE) 快速通道培训中,我们使用的是红帽 Linux 7.2,我学会了喜欢 中的网络配置文件。后来,Red Hat Enterprise Linux(RHEL)6推出了NetworkManager(也称为“NM”)。在阅读 RHEL 9 发行说明时,我关注到了对网络配置的更改 /etc/sysconfig/network-scripts
7.3. 网络 Red Hat Enterprise Linux 9 | Red Hat Customer Portal
NetworkManager 以 key-file 格式将新网络配置保存到 /etc/NetworkManager/system-connections/
在以前的版本中,NetworkManager 将新的网络配置以 ifcfg 格式保存到 /etc/sysconfig/network-scripts/。从 RHEL 9.0 开始,RHEL 以 key-file 格式在 /etc/NetworkManager/system-connections/ 中存储新的网络配置。配置以旧格式存储在 /etc/sysconfig/network-scripts/ 中的连接仍然可以正常工作。对现有配置集的修改会继续更新旧的文件。
细节在 RHEL 9 中,ifcfg (也称为 文件)将不再是网络配置文件的主存储。虽然 ifcfg 样式仍然可用,但它不再是 NetworkManager 存储新网络配置文件的默认位置。让我们看一下:/etc/sysconfig/network-scripts ifcfg
[root@rhel9a ~]# NetworkManager --print-config
# NetworkManager configuration: /etc/NetworkManager/NetworkManager.conf
[main]
# plugins=keyfile,ifcfg-rh
[...]
[root@rhel9a ~]#
这是指不同的存储位置,如“keyfile”和“ifcfg-rh”。它首先查找keyfile文件,然后查找 ifcfg-rh 文件。您可以在 NetworkManager 文档和 RHEL 9 文档中找到有关关键文件的详细信息。NetworkManager 在各个位置查找关键文件,但本文重点介绍 中的文件。/etc/NetworkManager/system-connections
使用默认配置,您可以在 /etc/sysconfig/network-scripts 中继续使用 ifcfg-rh 文件,但您需要注意:
- 在默认配置中,NetworkManager 将确定关键文件的优先级。例如,如果keyfile文件和 ifcfg 文件都具有具有相同 UUID 的接口配置,则 NetworkManager 将为该接口使用keyfiles文件配置。
- 当使用 NetworkManager API 的工具创建新的网络接口配置时,例如 nmcli、nmtui、gnome-control-center、anaconda、cockpit、nmstate、RHEL System Role for networking或network-manager-applet,它们将使用keyfiles文件进行配置。
虽然 ifcfg- 和 key 文件格式不具有相同的语法,但它们主要表示有关接口配置的类似数据。以下是两种格式的比较:
如何更改界面设置
无论您是决定继续使用ifcfg-rh文件(尽管不推荐)还是使用keyfiles文件,您都可以通过以下任一方式更改界面设置(如IP):
- 基于工具:您可以使用图形工具,如 nm 连接编辑器或“nmcli”命令行工具。一个优点是,与直接修改文件相比,这些工具允许您检查命令的语法。您可以在 中找到一些很好的例子,例如:man nmcli
nmcli con mod enp2s0 ipv4.addr "10.0.0.4/24"
nmcli con down enp2s0
nmcli con up enp2s0
- 基于文件:还可以使用文本编辑器编辑 中的keyfiles文件或 中的 ifcfg-rh 文件,然后将更改通知 NetworkManager。例如:/etc/NetworkManager/system-connections/etc/sysconfig/network-connections
vi /etc/NetworkManager/system-connections/<name>.nmconnection
nmcli connection load \
/etc/NetworkManager/system-connections/<name>.nmconnection
nmcli connection up filename \
/etc/NetworkManager/system-connections/<name>.nmconnection
“nmcli connection load [..]”命令将只重新加载一个特定的 NetworkManager 配置文件;或者,您可以使用命令“nmcli connection reload”来重新加载所有配置文件,或者使用“nmcli general reload”命令来重新加载设置;这的行为就像网络管理器的信号挂断(SIGHUP)。
ifcfg-rh 发生了什么变化?从历史上看,各种Linux发行版已经将界面配置分散到许多地方:Debian及其衍生产品传统上使用,CentOS和相关发行版使用,等等。随着越来越多的发行版采用NetworkManager,keyfiles 已经成为Linux上网络连接的规范位置。/etc/network/interfaces、/etc/sysconfig/network-scripts、/etc/NetworkManager/system-connections
这个变化落在了 Fedora 33 中,现在它在 RHEL 9 中。RHEL的新主要版本(如RHEL 9)是可以实现像这样的重大更改的地方,这些更改可能会破坏现有的脚本和工作流。由于 RHEL 目前的计划是提供 10 年的次要版本,因此熟悉此更改并开始将其合并到代码中是明智的。
https://www.redhat.com/en/blog/rhel-9-networking-say-goodbye-ifcfg-files-and-hello-keyfiles
,