Rocky Linux 10.1网络配置:从传统ifcfg到NetworkManager

1. 问题现象与背景解析

最近在Rocky Linux 10.1上配置网络时,发现传统的/etc/sysconfig/network-scripts目录消失了。这其实不是系统安装错误,而是Red Hat系发行版近年来的一项重要变革。作为RHEL的衍生版本,Rocky Linux 9开始就默认采用了新的网络配置方式。

传统网络配置脚本(ifcfg文件)从RHEL 7时代沿用至今,其核心文件通常存放在:

/etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/route-eth0

但在新版本中,这些文件被NetworkManager的keyfile格式所取代,默认存储在:

/etc/NetworkManager/system-connections/

重要提示:虽然ifcfg方式仍可通过安装额外包来支持,但官方已明确表示将在未来版本中完全移除对传统脚本的支持

2. 新旧网络管理机制对比

2.1 传统network-scripts的运作原理

传统方式通过init脚本调用ifup/ifdown命令,直接操作网络接口。其典型配置示例:

DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 ONBOOT=yes

这种方式的局限性包括:

  • 缺乏动态网络状态管理能力
  • 无法处理现代网络拓扑(如多租户VPN)
  • 与NetworkManager服务存在冲突风险

2.2 NetworkManager的新体系

Rocky Linux 10.1默认使用NetworkManager的keyfile后端,其特点包括:

  1. 统一配置存储

    • 所有连接配置集中管理
    • 支持JSON-like的键值对格式
    • 示例配置文件路径:/etc/NetworkManager/system-connections/ens18.nmconnection
  2. 动态响应能力

    # 查看当前连接状态 nmcli connection show # 实时监控网络变化 nmcli monitor
  3. 多后端支持

    • keyfile(默认)
    • ifcfg-rh(兼容模式)
    • ifupdown(Debian系)

3. 实际配置操作指南

3.1 基础网络配置方法

通过nmcli配置静态IP的完整流程:

# 1. 创建新连接配置 nmcli connection add con-name "office-lan" ifname ens18 \ type ethernet ip4 192.168.1.100/24 gw4 192.168.1.1 # 2. 设置DNS(Cloudflare示例) nmcli connection modify "office-lan" \ ipv4.dns "1.1.1.1 1.0.0.1" # 3. 启用连接 nmcli connection up "office-lan" # 4. 验证配置 ip addr show ens18

3.2 传统ifcfg用户的过渡方案

如需临时恢复旧模式:

  1. 安装兼容包:

    dnf install network-scripts
  2. 禁用NetworkManager:

    systemctl disable --now NetworkManager systemctl enable --now network

注意:这种降级方案可能导致与某些新硬件(如Wi-Fi 6网卡)的兼容性问题

4. 高级网络场景配置

4.1 绑定接口配置

创建mode-4(802.3ad)绑定接口:

nmcli connection add type bond con-name bond0 ifname bond0 \ mode 802.3ad ipv4.method manual ipv4.addresses 10.0.0.2/24 nmcli connection add type ethernet slave-type bond \ con-name bond0-port1 ifname ens19 master bond0 nmcli connection add type ethernet slave-type bond \ con-name bond0-port2 ifname ens20 master bond0

4.2 VLAN配置示例

为ens18接口添加VLAN 100:

nmcli connection add type vlan con-name vlan100 dev ens18 id 100 \ ipv4.method manual ipv4.addresses 192.168.100.2/24

5. 常见问题排查手册

5.1 基础诊断命令

# 查看NetworkManager日志 journalctl -u NetworkManager -f # 检查连接配置 nmcli connection show --active # 测试网络连通性 nmcli networking connectivity check

5.2 典型错误解决方案

问题1:nmcli修改配置后不生效

  • 解决方案:
    nmcli connection reload nmcli connection down <name> && nmcli connection up <name>

问题2:双网卡路由混乱

  • 修复方法:
    nmcli connection modify <conn> ipv4.never-default yes nmcli connection modify <default_conn> ipv4.gateway <correct_gw>

问题3:DHCP获取失败

  • 排查步骤:
    1. 检查物理连接状态:nmcli device show <iface>
    2. 测试DHCP服务:dhclient -v <iface>
    3. 检查防火墙规则:firewall-cmd --list-all

6. 最佳实践建议

  1. 配置备份策略

    # 定期备份网络配置 mkdir -p /backup/network cp /etc/NetworkManager/system-connections/* /backup/network/ chmod 600 /backup/network/*
  2. 自动化部署技巧: 在Kickstart文件中添加:

    %post nmcli connection add type ethernet con-name prod-net ifname ens18 \ ipv4.method manual ipv4.addresses 10.0.0.100/24 \ ipv4.gateway 10.0.0.1 ipv4.dns "8.8.8.8" %end
  3. 性能调优参数: 对于高吞吐量网卡:

    echo 'ETHTOOL_OPTS="-G ${DEVICE} rx 4096 tx 4096"' > /etc/sysconfig/network-scripts/ifcfg-<device>

经过实际部署验证,新网络管理体系在以下场景表现优异:

  • 云环境中的动态网络配置
  • 容器化部署的网桥管理
  • 企业级SDN网络集成

对于从旧版本迁移的用户,建议先在测试环境熟悉nmcli操作,再逐步将ifcfg脚本转换为keyfile格式。虽然学习曲线存在,但新体系最终会带来更稳定高效的网络管理体验