为什么新版CentOS系统里找不到ifcfg-网络配置文件?

对于许多长期使用CentOS系统的管理员来说,进入/etc/sysconfig/network-scripts/目录,编辑ifcfg-eth0或类似的配置文件,是配置网络连接如同呼吸般自然的操作,当您在较新的CentOS版本(如CentOS 8、9或Stream)中执行同样的操作时,会惊讶地发现,那个熟悉的目录里空空如也,或者只有一两个示例文件,这并非安装错误,而是CentOS网络管理方式的一次根本性变革,本文将深入探讨这一变化的原因,并详细介绍现代CentOS系统中网络配置的新方法。

为什么新版CentOS系统里找不到ifcfg-网络配置文件?

告别旧时代:为什么CentOS不再默认使用ifcfg-文件?

要理解现在,必须先回顾过去,传统的network-scripts服务通过读取/etc/sysconfig/network-scripts/目录下的shell脚本格式的文件(如ifcfg-*)来配置网络,这种方法在过去几十年里服务得很好,但也暴露出一些固有的局限性:

  1. 静态与僵化:配置是静态的,每次更改(如IP地址、网关、DNS),都需要手动编辑文件并重启网络服务,这在需要频繁调整或动态响应网络变化的现代环境中显得笨重。
  2. 功能有限:对于复杂的网络场景,如VLAN、网桥、绑定、Wi-Fi等,network-scripts的配置和管理变得异常复杂,缺乏统一的抽象层。
  3. 缺乏统一API:它没有一个统一的、可供其他应用程序调用的编程接口(API),这使得开发图形化工具或与上层应用集成变得困难。

为了解决这些问题,Red Hat(CentOS的上游)决定将网络管理的重心全面转向NetworkManagerNetworkManager是一个功能强大且动态的网络管理守护进程,它旨在让网络工作“自动搞定”,它能够检测网络硬件的变化,自动连接已知的网络,并提供了一套统一的D-Bus API,使得无论是命令行工具、图形界面还是其他系统服务,都能以一致的方式管理网络。

从CentOS 7开始,NetworkManager成为默认的网络管理工具,但network-scripts作为可选包依然存在,而到了CentOS 8及以后的版本,network-scripts包已不再被默认安装,标志着ifcfg-配置文件时代的正式落幕。

拥抱新工具:现代CentOS网络配置实战

既然ifcfg-文件已成往事,我们该如何在新系统上配置网络呢?NetworkManager提供了几种主流且高效的方法,其中最核心的是nmcli(命令行)和nmtui(文本用户界面)。

命令行王者:nmcli

nmcliNetworkManager的命令行界面,功能极其强大,适合脚本化自动化和习惯命令行操作的管理员,它的语法直观且一致。

假设我们要为名为ens33的网卡配置一个静态IP地址:168.1.100,子网掩码255.255.0,网关168.1.1,DNS为8.8.88.4.4

步骤如下:

  • 查看现有连接和设备状态

    nmcli connection show
    nmcli device status

    这会帮助你识别网卡的设备名(如ens33)和可能已存在的连接名(如Wired connection 1)。

  • 创建一个新的连接配置
    我们创建一个名为static-eth0的新连接,并将其绑定到ens33设备上。

    sudo nmcli connection add type ethernet ifname ens33 con-name static-eth0
  • 修改连接的IPv4设置
    将其设置为手动模式,并配置IP地址、网关和DNS。

    为什么新版CentOS系统里找不到ifcfg-网络配置文件?

    sudo nmcli connection modify static-eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4"

    注意:/24255.255.0的CIDR表示法,nmcli推荐使用这种格式。

  • 激活连接
    应用新配置并使其生效。

    sudo nmcli connection up static-eth0
  • 验证配置

    ip addr show ens33
    ip route show

    至此,一个静态IP就配置完成了,整个过程无需手动编辑任何文件,所有更改都由nmcli通过NetworkManager API完成。

用户友好的选项:nmtui

对于不熟悉命令行的用户,nmtui(NetworkManager Text User Interface)提供了一个基于文本的图形化菜单界面,操作非常直观。

  • 启动nmtui
    直接在终端中输入命令:

    sudo nmtui
  • 操作流程

    1. 使用方向键选择“Edit a connection”,然后按回车。
    2. 在列表中选择你要编辑的网卡(如ens33),选择“Edit”。
    3. 在配置页面,将IPv4 CONFIGURATION字段从Automatic改为Manual
    4. Addresses后面选择<Show>,然后填入你的IP地址和子网掩码(如168.1.100/24)。
    5. Gateway处填入网关地址。
    6. DNS servers处填入DNS服务器地址,多个地址用空格隔开。
    7. 配置完成后,选择底部的<OK>保存并退出。
    8. 返回主菜单,选择“Activate a connection”。
    9. 找到你刚刚配置的连接,选择“Deactivate”再“Activate”,使其重新加载配置。

新的配置文件在哪里?

虽然我们不再手动创建ifcfg-文件,但NetworkManager依然会将配置持久化到磁盘上,这些文件现在存储在/etc/NetworkManager/system-connections/目录下。

我们用nmcli创建的static-eth0连接,会生成一个名为static-eth0.nmconnection的文件,其内容大致如下:

[connection]
id=static-eth0
uuid=...
type=ethernet
interface-name=ens33
[ethernet]
[ipv4]
method=manual
address1=192.168.1.100/24,192.168.1.1
dns=8.8.8.8;8.8.4.4;
[ipv6]
method=auto

可以看到,这是一种更简洁的键值对格式,而非shell脚本。强烈建议不要直接手动编辑这些文件,因为NetworkManager可能不会立即识别更改,且手动编辑容易导致语法错误,正确的做法是始终使用nmclinmtui进行修改。

我还能用回ifcfg-吗?传统方法的回归之路

尽管不推荐,但在某些特殊情况下(如遗留系统迁移),你可能确实需要使用ifcfg-文件,这是可以实现的,但需要一些额外的步骤:

为什么新版CentOS系统里找不到ifcfg-网络配置文件?

  1. 安装network-scripts

    sudo dnf install network-scripts
  2. 禁用NetworkManager服务
    这是至关重要的一步,因为两个服务同时运行会导致冲突。

    sudo systemctl disable --now NetworkManager
  3. 启用并启动传统的network服务

    sudo systemctl enable --now network

完成这些步骤后,你就可以在/etc/sysconfig/network-scripts/目录中创建或编辑ifcfg-*文件,并使用systemctl restart network来应用更改了,但请记住,这样做意味着你放弃了NetworkManager带来的所有便利和高级功能。

新旧对比:一目了然

特性 传统方法 现代方法
配置文件位置 /etc/sysconfig/network-scripts/ifcfg-* /etc/NetworkManager/system-connections/*.nmconnection
主要工具 vi/nano 编辑器, systemctl restart network nmcli, nmtui
配置方式 手动编写Shell脚本风格的文件 通过工具API进行声明式配置
动态能力 弱,需重启服务 强,支持热插拔、自动连接
复杂网络支持 复杂,配置繁琐 原生支持,管理简单
推荐度 不推荐(除非有特殊需求) 强烈推荐

相关问答 (FAQs)

问题1:我修改了 /etc/NetworkManager/system-connections/ 下的文件,为什么网络没有立即生效?

解答: NetworkManager默认不会持续监控这些配置文件的手动更改,为了使手动编辑的文件生效,你需要通知NetworkManager重新加载配置,最安全的方法是使用nmcli命令:

sudo nmcli connection reload

重新激活受影响的连接:

sudo nmcli connection down <连接名>
sudo nmcli connection up <连接名>

直接重启整个NetworkManager服务(sudo systemctl restart NetworkManager)虽然也能生效,但会短暂中断所有网络连接,不推荐在生产环境中频繁使用。

问题2:NetworkManager 和 network-scripts 可以同时运行吗?

解答: 绝对不可以。 NetworkManagernetwork是两个独立的网络管理服务,它们都试图控制系统的网络接口,如果同时启用,它们会互相争夺控制权,导致网络配置混乱、频繁掉线、IP地址被意外覆盖等不可预测的行为,在任何一个系统中,你必须选择其中一种作为网络管理方案,并确保另一个服务已被彻底禁用,这是系统稳定运行的基本原则。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-07 21:51
下一篇 2025-10-07 21:54

相关推荐

  • 云耀云服务器在性能和成本效益上有哪些显著优势?

    云耀云服务器提供弹性扩展、成本效益高、易于维护和升级等优势。它支持按需付费,减少了企业的前期投资和运营成本。云服务器具备高可用性和可靠性,确保业务的连续性和数据安全。

    2024-07-26
    007
  • CentOS开机后如何设置才能让系统自动连接网络?

    在服务器管理和日常使用中,确保CentOS系统在启动后能够自动连接网络是一项基础且至关重要的任务,无论是为了远程管理、自动化部署还是服务持续可用性,一个稳定的网络连接都是前提,本文将详细介绍在不同版本的CentOS中设置开机自动联网的几种主流方法,涵盖命令行和图形界面,并提供清晰的步骤和故障排除思路,使用 Ne……

    2025-10-05
    003
  • 如何在centos 7.2上彻底卸载nginx?

    在服务器管理和运维过程中,软件的安装与卸载是基础且频繁的操作,Nginx 作为一款高性能的 HTTP 和反向代理 Web 服务器,因其轻量、稳定和高效而被广泛部署,在某些情况下,我们可能需要从 CentOS 7.2 系统中彻底卸载 Nginx,例如版本升级、更换为其他 Web 服务器(如 Apache)、解决配……

    2025-10-03
    002
  • 如何选择合适的服务器托管服务来优化应用性能?

    服务器托管论坛是一个专注于讨论与分享服务器和应用托管相关知识的平台。用户可以在此交流托管服务的选择、配置、维护经验,以及解决托管过程中遇到的问题。论坛旨在帮助用户更好地了解并管理他们的服务器和应用托管需求。

    2024-07-25
    009

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信