NetworkManager服务和 /etc/sysconfig/network-scripts/ifcfg-ens33的关系
这两者的关系本质上是"管理者与被管理的配置文件"的关系。ifcfg-ens33 是传统的 Red Hat 风格网络配置文件,NetworkManager 通过 ifcfg-rh 插件来读取和管理它。
核心关系
NetworkManager 是一个网络管理服务(守护进程),而 ifcfg-ens33 是一个网络配置文件。NetworkManager 通过其内置的 ifcfg-rh 插件来解析和操作这个文件,从而实现对网卡 ens33 的配置管理。
┌─────────────────────┐
│ NetworkManager │
│ (守护进程) │
│ │
│ ┌───────────────┐ │
│ │ ifcfg-rh 插件 │←─┼── 读取/写入 ──→ /etc/sysconfig/network-scripts/ifcfg-ens33
│ └───────────────┘ │
│ │
│ ┌───────────────┐ │
│ │ keyfile 插件 │←─┼── 读取/写入 ──→ /etc/NetworkManager/system-connections/ens33.nmconnection
│ └───────────────┘ │
└─────────────────────┘
演变历程
Red Hat 系列发行版的网络配置经历了清晰的演进路线:
| 版本 | 网络配置方式 | 说明 |
|---|---|---|
| RHEL 6 | network.service + ifcfg-* |
ifcfg 是核心配置方式 |
| RHEL 7 | NetworkManager + ifcfg-* |
NetworkManager 成为默认,但仍支持 ifcfg |
| RHEL 8 | NetworkManager(主线) |
legacy network-scripts 被 deprecated |
| RHEL 9 | NetworkManager + keyfile(默认) |
ifcfg 仍兼容但不再是默认存储格式 |
| RHEL 10 | NetworkManager + keyfile |
ifcfg 不再受支持,NetworkManager 忽略 ifcfg 文件 |
两种配置格式的对比
ifcfg 格式(传统)
文件路径:/etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
keyfile 格式(新默认)
文件路径:/etc/NetworkManager/system-connections/ens33.nmconnection
[connection]
id=ens33
uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
type=ethernet
interface-name=ens33
[ipv4]
method=manual
address1=192.168.1.100/24,192.168.1.1
dns=8.8.8.8;
插件优先级与共存规则
在 NetworkManager.conf 中通过 plugins 参数指定使用的插件,例如:
[main]
plugins=keyfile,ifcfg-rh
共存时的优先级规则:
-
keyfile 优先:如果同一个连接同时存在 keyfile 和 ifcfg 两种格式的文件(通过 UUID 识别为同一连接),NetworkManager 会优先使用 keyfile 格式的配置。
-
工具默认写 keyfile:使用
nmcli、nmtui、Cockpit 等工具创建新连接时,默认写入 keyfile 格式。 -
ifcfg 仍可读写:如果系统中只有 ifcfg 文件,NetworkManager 会正常读取;对现有 ifcfg 连接的修改也会继续更新 ifcfg 文件。
如何判断当前使用的是哪种格式
# 查看所有连接及其对应的配置文件路径
nmcli -f NAME,TYPE,DEVICE,FILENAME connection show
输出示例:
NAME TYPE DEVICE FILENAME
ens33 ethernet ens33 /etc/NetworkManager/system-connections/ens33.nmconnection
如果 FILENAME 指向 /etc/NetworkManager/system-connections/,说明使用的是 keyfile 格式;如果指向 /etc/sysconfig/network-scripts/ifcfg-ens33,说明使用的是 ifcfg 格式。
格式迁移
如果需要将 ifcfg 格式迁移到 keyfile 格式,可以使用:
# 迁移所有 ifcfg 连接到 keyfile 格式
sudo nmcli connection migrate
# 验证迁移结果
nmcli -f TYPE,FILENAME,NAME connection show
注意事项
-
不要混用管理方式:如果通过 NetworkManager(nmcli/nmtui)管理网络,就不要再手动编辑 ifcfg 文件;反之,如果手动编辑了 ifcfg 文件,需要执行
nmcli connection reload让 NetworkManager 重新加载。 -
NM_CONTROLLED=no:如果在 ifcfg 文件中设置了
NM_CONTROLLED=no,NetworkManager 将完全忽略该连接,不会对其进行管理。 -
文件权限:keyfile 格式的
.nmconnection文件需要设置为600权限,否则 NetworkManager 会拒绝加载。
总结
ifcfg-ens33 是 NetworkManager 通过 ifcfg-rh 插件管理的一种配置文件格式。它代表了传统的 Red Hat 网络配置方式,目前仍被兼容支持,但已被标记为 deprecated。新系统推荐使用 keyfile 格式,并通过 nmcli

浙公网安备 33010602011771号