🌙

NetworkManager服务和 /etc/sysconfig/network-scripts/ifcfg-ens33的关系

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:使用 nmclinmtui、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 等工具进行管理,而非直接编辑配置文件。

posted @ 2026-06-24 17:20  星火撩原  阅读(5)  评论(0)    收藏  举报
本站已运行:0
🌙 夜间模式
🌙
🌙