"network-scripts"和"NetworkManger"的关系和对比 笔记250706
1️⃣ 参考 1
在 CentOS/RHEL 系统中,network-scripts(传统 network 服务)与 NetworkManager 是两种不同的网络管理机制,二者既有继承关系,也存在显著差异。以下是它们的核心对比及关系解析:
📊 一、核心关系与定位差异
| 维度 | network-scripts | NetworkManager |
|---|---|---|
| 本质 | 基于脚本的静态配置(/etc/init.d/network) | 动态守护进程(NetworkManager.service) |
| 配置存储 | /etc/sysconfig/network-scripts/ifcfg-* | /etc/NetworkManager/system-connections/*.nmconnection(Keyfile 格式) |
| 管理对象 | 物理接口(Device) | 逻辑连接(Connection),支持一设备多配置 |
| 演进阶段 | CentOS 5-6 默认 | CentOS 7+ 默认,CentOS 9 起完全替代 |
| 兼容性 | 需手动禁用 NetworkManager | 可兼容旧版 ifcfg 文件(需启用 ifcfg-rh 插件) |
关系总结:
- CentOS 7 过渡期:二者并存,但需通过
NM_CONTROLLED=no明确接口归属。- CentOS 8+:
network-scripts需额外安装包(network-scripts),NetworkManager 为官方唯一支持。- CentOS 9/RHEL 9:默认以 Keyfile 格式存储配置,彻底弃用
ifcfg新配置。
⚙️ 二、技术架构与功能对比
1. 配置方式
- network-scripts:
- 手动编辑文本文件(如
ifcfg-eth0),配置参数如BOOTPROTO=static、IPADDR=192.168.1.100。 - 需重启服务生效:
systemctl restart network。
- 手动编辑文本文件(如
- NetworkManager:
- 动态管理,支持命令行(
nmcli)、图形工具(nmtui/GNOME)。 - 示例:
nmcli con add con-name eth0-static type ethernet ifname eth0 ipv4.addresses 192.168.1.100/24 nmcli con up eth0-static - 配置自动持久化,无需手动重启。
- 动态管理,支持命令行(
2. 高级功能支持
| 功能 | network-scripts | NetworkManager | 说明 |
|---|---|---|---|
| 动态网络切换 | ❌ | ✅ | 自动切换 WiFi/有线/VPN |
| 多IP/路由配置 | 需多个文件 | 单连接支持 | NetworkManager 支持 ipv4.addresses 多地址 |
| DNS 管理 | 直接写 resolv.conf | 集成管理 | 避免 DHCP 覆盖(ipv4.ignore-auto-dns=yes) |
| 热插拔支持 | 有限 | 完整 | 自动检测新设备(如 USB 网卡) |
| 云平台集成 | ❌ | ✅ | 自动识别 AWS/Azure 元数据 |
3. 网络模型差异
- network-scripts:
- 设备为中心:一个物理接口对应一个配置文件。
- 无连接状态管理,配置即生效。
- NetworkManager:
- 连接为中心:一个物理接口可绑定多个连接配置(如
eth0-office、eth0-home),但仅一个激活。 - 支持连接优先级(
connection.autoconnect-priority),自动选择最优网络。
- 连接为中心:一个物理接口可绑定多个连接配置(如
⚠️ 三、冲突机制与共存方案
冲突表现
当二者同时管理同一接口时,可能导致:
- IP 地址被覆盖
- 接口频繁 up/down
- DNS 配置重置
解决方案
- 完全使用 NetworkManager(推荐新系统):
systemctl disable --now network yum remove network-scripts # CentOS 8+ nmcli device set eth0 managed yes # 确保设备被接管 - 完全使用 network-scripts(适合服务器):
systemctl disable --now NetworkManager yum install network-scripts # CentOS 8+ 需手动安装 - 混合模式(谨慎使用):
- 在
ifcfg-eth0中添加NM_CONTROLLED=no。 - 执行:
nmcli device set eth0 managed no
- 在
🖥️ 四、典型应用场景
| 场景 | 推荐方案 | 原因 |
|---|---|---|
| 服务器(静态IP) | ✅ network-scripts | 配置稳定,无运行时开销 |
| 桌面/笔记本 | ✅ NetworkManager | 自动切换网络,支持 WiFi/VPN |
| 云实例/容器主机 | ⚠️ NetworkManager | 动态适配云元数据,集成 SDN |
| 嵌入式设备 | ✅ network-scripts | 轻量级,无守护进程依赖 |
| 多网卡绑定(Bonding) | ⚠️ NetworkManager | 图形化配置更便捷(需 nmcli 命令) |
🔮 五、演进趋势与建议
- 版本演进:
- CentOS 7:双服务并存,建议服务器关闭
NetworkManager。 - CentOS 8+:
network-scripts已弃用,新配置默认存为 Keyfile(/etc/NetworkManager/system-connections/)。
- CentOS 7:双服务并存,建议服务器关闭
- 迁移工具:
nmcli con import type ethernet file ifcfg-eth0 # 转换旧配置 - 终极建议:
- 新部署:统一使用
NetworkManager+nmcli,避免兼容问题。 - 遗留系统:逐步迁移配置,关闭冲突服务。
- 新部署:统一使用
故障排查提示:
若network状态为active (exited)但网络正常,可能是NetworkManager干扰,建议彻底禁用其一。
💎 总结对比表
| 维度 | network-scripts | NetworkManager |
|---|---|---|
| 配置方式 | 静态(手动编辑文件) | 动态(自动持久化) |
| 管理粒度 | 设备级 | 连接级(支持多配置) |
| 适用场景 | 服务器/无动态网络需求 | 桌面/移动设备/云环境 |
| 未来支持 | CentOS 9 需额外安装 | 所有新版默认支持 |
| 复杂度 | 低(简单脚本) | 高(支持策略路由/VPN/热插拔) |
推荐策略:
- 服务器/静态环境:保守选
network-scripts,但需隔离NetworkManager。 - 动态/混合环境:必选
NetworkManager,善用nmcli实现高效管理。
2️⃣ 参考 2
"network-scripts" 与 "NetworkManager" 深度对比与关系解析
在 Linux 网络配置体系中,network-scripts 和 NetworkManager 是两种不同的网络管理方案,它们既有历史继承关系,又在设计理念和功能上存在显著差异。
📂 一、本质定义
| 组件 | 本质 | 定位 |
|---|---|---|
| network-scripts | 一组配置文件+脚本 (/etc/sysconfig/network-scripts/) | 静态网络配置的底层基础设施 |
| NetworkManager | 一个动态网络管理守护进程 (systemd 服务) | 网络管理的智能控制层 |
🔧 二、核心架构对比
network-scripts
- 工作方式:
- 基于文件的静态配置
- 通过
/etc/sysconfig/network-scripts/ifcfg-eth0等文件定义网络参数 - 依赖
ifup/ifdown脚本激活/停用接口
- 服务控制:
systemctl restart network # 重启服务 ifup eth0 # 手动启动接口
NetworkManager
- 工作方式:
- 守护进程实时监控网络状态
- 使用连接配置文件(存储于
/etc/NetworkManager/system-connections/) - 通过 D-Bus 提供 API 接口
- 服务控制:
systemctl restart NetworkManager nmcli connection up "Wired-Connection" # 激活连接
⚙️ 三、功能特性对比
| 功能 | network-scripts | NetworkManager |
|---|---|---|
| 配置方式 | 手动编辑文件 | nmcli/nmtui/GUI 动态管理 |
| 热插拔支持 | 有限 (需自定义脚本) | 原生支持 |
| 多网络切换 | 不支持 | 自动切换 Wi-Fi/有线/VPN |
| 移动设备支持 | 无 | 完整支持 (4G/5G 模块等) |
| 策略路由 | 需手动配置 | 原生支持连接优先级路由 |
| API 接口 | 无 | 提供 D-Bus 接口供应用调用 |
| 云环境集成 | 需定制 | 原生支持 cloud-init |
🔗 四、两者关系
1. 历史演进
graph LR
A[传统网络配置] --> B[network-scripts] --> C[NetworkManager]
network-scripts是传统的网络配置方式(源自 System V init 时代)- NetworkManager 是为解决动态网络需求而生的现代方案
2. 配置兼容性
- NetworkManager 可读取 network-scripts 配置:
nmcli connection load /etc/sysconfig/network-scripts/ifcfg-eth0 - 但反向操作会导致配置丢失(NetworkManager 特有属性无法转换)
3. 共存与冲突
- 默认关系:
- CentOS 7+:两者共存,NetworkManager 优先接管
- 可通过设置
NM_CONTROLLED=no禁用接管:# /etc/sysconfig/network-scripts/ifcfg-eth0 NM_CONTROLLED=no
- 冲突场景:
- 两者同时修改同一接口会导致配置混乱
- 解决方案:明确禁用其中一个
# 禁用 NetworkManager(服务器推荐) systemctl disable --now NetworkManager # 禁用 network 服务(桌面推荐) systemctl disable --now network
🖥️ 五、配置文件对比
network-scripts 示例 (ifcfg-eth0)
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
ONBOOT=yes
NM_CONTROLLED=no # 明确禁止 NetworkManager 接管
NetworkManager 连接文件 (Wired-Connection.nmconnection)
[connection]
id=Wired-Connection
type=ethernet
uuid=1c5cc2a0-2a9d-4b0a-9b1a-1a1a1a1a1a1a
[ipv4]
method=manual
addresses1=192.168.1.100/24,192.168.1.1
dns=8.8.8.8;
🛠️ 六、操作命令对比
| 任务 | network-scripts | NetworkManager |
|---|---|---|
| 查看接口状态 | ip addr show | nmcli device status |
| 添加静态 IP | 编辑 ifcfg 文件 → systemctl restart network | nmcli con mod eth0 ipv4.addresses 192.168.1.100/24 |
| 临时启用接口 | ifup eth0 | nmcli con up eth0 |
| 查看连接详情 | cat ifcfg-eth0 | nmcli con show "Wired-Connection" |
| Wi-Fi 扫描 | 不支持 | nmcli device wifi list |
🚀 七、适用场景推荐
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| 服务器/数据中心 | network-scripts | 配置稳定,易于脚本化和版本控制 |
| 桌面/移动设备 | NetworkManager | 自动处理网络切换,支持 Wi-Fi/VPN |
| 云环境/容器 | NetworkManager | 更好支持动态配置和云初始化 |
| 嵌入式系统 | network-scripts | 资源占用低,无需守护进程 |
| 网络高级配置 | 混合使用 | 用 network-scripts 配置底层,NM 管理连接 |
⚠️ 八、注意事项
-
CentOS/RHEL 8+ 的变革:
# 需要显式安装传统脚本 dnf install network-scripts- 官方已弃用 network-scripts,默认仅安装 NetworkManager
-
配置冲突解决原则:
- 避免同时修改同一接口
- 修改后同步配置:
nmcli con reload # NetworkManager 重载配置
-
诊断工具差异:
- network-scripts:
/var/log/messages - NetworkManager:
journalctl -u NetworkManager
- network-scripts:
💎 总结:核心关系图谱
graph TD
A[物理网络接口] --> B[network-scripts]
A --> C[NetworkManager]
B -->|配置文件| D[ifcfg-eth0]
C -->|连接配置| E[.nmconnection]
B --> F[network.service]
C --> G[NetworkManager.service]
F --> H[ifup/ifdown]
G --> I[nmcli/nmtui]
style B stroke:#f66,stroke-width:2px
style C stroke:#66f,stroke-width:2px
style D stroke:#f66
style E stroke:#66f
- network-scripts:静态配置的基石,适合确定性环境
- NetworkManager:动态网络的大脑,适合多变场景
- 演进趋势:NetworkManager 正逐步取代传统方案,成为现代 Linux 的标准网络管理层
3️⃣ 参考 3
"network-scripts" 和 "NetworkManager" 的关系与对比
1. 定义与功能
1.1 network-scripts
- 定义:传统网络管理工具,适用于 CentOS 6 及更早版本。
- 功能:
- 通过
/etc/sysconfig/network-scripts/目录下的配置文件(如ifcfg-eth0)管理网络接口。 - 支持静态 IP 配置,需手动编辑文件并重启服务。
- 命令行工具:
ifconfig、route、ifup/ifdown。
- 通过
- 适用场景:服务器环境、静态 IP 配置、无图形界面系统。
1.2 NetworkManager
- 定义:现代网络管理工具,适用于 CentOS 7 及更高版本。
- 功能:
- 支持动态配置和自动检测网络接口,提供图形界面(如 GNOME 设置)和命令行工具
nmcli。 - 配置存储在
/etc/NetworkManager/system-connections/目录下。 - 支持多种网络类型(有线、Wi-Fi、VPN 等)。
- 支持动态配置和自动检测网络接口,提供图形界面(如 GNOME 设置)和命令行工具
- 适用场景:桌面/移动设备、需要频繁切换网络(如 Wi-Fi)、VPN 支持。
2. 核心差异
| 特性 | network-scripts | NetworkManager |
|---|---|---|
| 管理方式 | 静态配置,需手动编辑文件并重启服务 | 动态管理,支持实时调整配置,无需重启 |
| 默认启用情况 | CentOS 6 默认使用 | CentOS 7+ 默认启用 |
| 命令行工具 | ifconfig、route、ifup/ifdown | nmcli、nmtui |
| 配置文件路径 | /etc/sysconfig/network-scripts/ifcfg-* | /etc/NetworkManager/system-connections/ |
| 自动检测网络 | 不支持 | 支持 |
| 图形界面支持 | 不支持 | 支持 |
3. 共存与冲突
3.1 冲突原因
- 两者均尝试管理网络接口,可能导致配置覆盖或服务启动失败。
- NetworkManager 默认接管网络管理,忽略传统
ifcfg文件的静态配置。
3.2 解决方案
方案一:禁用 NetworkManager
### 停止并禁用 NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
### 启用 network 服务
systemctl enable network
systemctl start network
方案二:配置 ifcfg 文件
在 /etc/sysconfig/network-scripts/ifcfg-* 中添加以下参数,禁止 NetworkManager 管理该接口:
NM_CONTROLLED=no
方案三:重启网络服务
systemctl restart network
4. 配置示例
4.1 使用 network-scripts(CentOS 6)
### 编辑配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
文件内容:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
4.2 使用 NetworkManager(CentOS 7)
### 添加新连接
nmcli connection add type ethernet con-name eth0 ifname eth0
### 修改配置
nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
nmcli connection modify eth0 ipv4.gateway 192.168.1.1
nmcli connection modify eth0 ipv4.dns 8.8.8.8
### 启用连接
nmcli connection up eth0
5. 适用场景建议
5.1 选择 network-scripts
- 场景:
- 服务器环境,需要稳定、静态的 IP 配置。
- 无图形界面系统,依赖命令行管理。
- 兼容旧版 CentOS 6 系统。
5.2 选择 NetworkManager
- 场景:
- 桌面/移动设备,需要动态切换网络(如 Wi-Fi、VPN)。
- 现代 CentOS 7+ 系统,默认启用。
- 需要图形界面或
nmcli命令行工具简化管理。
6. 总结
- 关系:两者均为网络管理工具,但设计目标和适用场景不同。NetworkManager 是 network-scripts 的进化版,提供更动态、灵活的管理方式。
- 对比:network-scripts 适合静态、服务器环境,而 NetworkManager 适合动态、桌面/移动环境。
- 共存:通过配置
NM_CONTROLLED=no或禁用 NetworkManager 服务,可实现两者共存,但建议根据系统版本选择默认工具以避免冲突。
4️⃣ 参考 4
在 Linux 系统中,network-scripts 和 NetworkManager 是两种不同的网络管理方式,它们的设计理念、使用场景和功能存在显著差异。以下是它们的 关系 和 对比 详细分析:
一、关系
-
发展历程
network-scripts:是传统的网络管理方式,广泛用于 CentOS 6 及更早版本的 Linux 系统。它通过静态配置文件(如/etc/sysconfig/network-scripts/ifcfg-*)管理网络接口,适合服务器环境。NetworkManager:是新一代的网络管理工具,自 CentOS 7 及更高版本默认启用。它支持动态网络配置(如 Wi-Fi、VPN、移动网络),适合桌面环境和需要频繁切换网络的场景。
-
共存与优先级
- 在 CentOS 7+ 系统中,
NetworkManager和network-scripts可以 共存,但NetworkManager的优先级更高。 - 如果同时启用两者,
NetworkManager会接管大多数网络接口的管理,而network-scripts的配置仅在特定情况下(如配置文件未指定由NetworkManager管理)生效。
- 在 CentOS 7+ 系统中,
-
功能替代性
NetworkManager是network-scripts的现代化替代工具,提供更灵活的动态网络管理能力。- 在服务器环境中,
network-scripts仍被广泛使用(尤其是静态 IP 配置),但NetworkManager逐渐成为主流。
二、对比分析
| 对比维度 | network-scripts | NetworkManager |
|---|---|---|
| 设计目标 | 提供静态网络配置,适合服务器环境。 | 提供动态网络管理,适合桌面和移动设备。 |
| 配置方式 | 手动编辑配置文件(如 /etc/sysconfig/network-scripts/ifcfg-eth0)。 | 支持命令行(nmcli)、图形界面(GUI)、终端工具(nmtui)动态管理网络。 |
| 适用场景 | 服务器、数据中心等需要稳定静态网络配置的环境。 | 桌面环境、移动设备、需要频繁切换网络(如 Wi-Fi、VPN)的场景。 |
| 支持功能 | - 静态 IP 配置 - 基础路由和 DNS 设置 - 不支持 Wi-Fi/VPN 动态管理 | - 自动检测网络连接 - 支持 Wi-Fi、VPN、移动网络 - 动态 IP 分配(DHCP) |
| 配置灵活性 | 需要手动修改配置文件并重启服务(systemctl restart network)。 | 可实时动态调整网络配置(如 nmcli connection modify),无需重启服务。 |
| 接口管理 | 依赖静态配置文件,接口状态由 ifup/ifdown 控制。 | 自动管理接口状态,支持运行时动态调整(如插拔网线、切换 Wi-Fi)。 |
| 兼容性 | 与传统工具(如 ifconfig、route)兼容。 | 与现代工具(如 ip、nmcli)兼容,部分旧工具(如 ifup/ifdown)可能失效。 |
| 默认启用版本 | CentOS 6 及更早版本。 | CentOS 7 及更高版本。 |
| 未来发展 | 逐步被 NetworkManager 取代。 | 持续更新,成为主流网络管理工具。 |
三、核心差异示例
1. 配置 IPv6 地址
-
network-scripts(CentOS 6)- 编辑接口配置文件(如
/etc/sysconfig/network-scripts/ifcfg-eth0):IPV6INIT=yes IPV6ADDR=2001:db8::1/64 IPV6_DEFAULTGW=2001:db8::1 - 重启网络服务:
service network restart
- 编辑接口配置文件(如
-
NetworkManager(CentOS 7)- 使用
nmcli配置:nmcli connection modify ens33 ipv6.method manual ipv6.addresses 2001:db8::1/64 ipv6.gateway 2001:db8::1 nmcli connection up ens33 - 或编辑配置文件(如
/etc/sysconfig/network-scripts/ifcfg-ens33):TYPE=Ethernet BOOTPROTO=static IPV6INIT=yes IPV6ADDR=2001:db8::1/64 IPV6_DEFAULTGW=2001:db8::1 ONBOOT=yes - 重启网络服务:
systemctl restart network
- 使用
2. 管理 Wi-Fi 连接
network-scripts:不支持 Wi-Fi 管理,需手动配置无线驱动和密钥。NetworkManager:支持 Wi-Fi 自动连接、加密密钥管理、信号强度监控等。
四、如何选择?
-
选择
network-scripts- 适用于 服务器环境(如数据中心、虚拟机)。
- 需要 静态 IP 配置 且网络环境稳定。
- 不需要 Wi-Fi、VPN 等动态网络功能。
-
选择
NetworkManager- 适用于 桌面环境(如笔记本电脑、开发机)。
- 需要 动态网络管理(如频繁切换网络、Wi-Fi 连接)。
- 支持图形界面或命令行工具(
nmcli)快速配置。
五、注意事项
-
共存问题
- 如果系统同时启用
NetworkManager和network-scripts,需确保配置文件中NM_CONTROLLED=no(network-scripts接口配置文件)以避免冲突。 - 禁用
NetworkManager后,需手动启用network服务:systemctl stop NetworkManager systemctl disable NetworkManager systemctl enable network systemctl start network
- 如果系统同时启用
-
工具兼容性
NetworkManager会接管ifup/ifdown命令,需通过nmcli或nmtui管理接口。- 旧版工具(如
ifconfig)在 CentOS 7+ 中逐渐被ip命令替代。
六、总结
network-scripts:传统、静态、稳定,适合服务器环境。NetworkManager:现代、动态、灵活,适合桌面和移动设备。- 趋势:随着 Linux 系统向动态化、自动化发展,
NetworkManager已成为主流工具,而network-scripts逐渐被淘汰。
根据实际需求选择合适的工具,可兼顾稳定性与灵活性。
5️⃣ 参考 5
在Linux系统中,network-scripts和NetworkManager是两个与网络配置相关的组件,但它们的定位、功能和适用场景存在显著差异。以下是对两者的详细对比和关系说明:
一、基本概念与定位
1. network-scripts(脚本工具集)
- 本质:一组用于管理网络接口的Shell脚本,属于传统
network服务的核心组件。 - 作用:读取配置文件(如
ifcfg-eth0)并执行网络接口的配置(如IP地址、路由、DNS等)。 - 适用场景:静态服务器环境(如CentOS 6),通过脚本一次性配置网络,启动时生效,运行时不支持动态调整。
2. NetworkManager(网络管理服务)
- 本质:一个动态网络管理守护进程(服务),用于实时监控和管理网络连接。
- 作用:支持有线、Wi-Fi、VPN等多种网络类型的热切换,提供命令行(
nmcli)和图形界面(如nm-connection-editor)管理网络配置。 - 适用场景:桌面环境、移动设备(如笔记本电脑),需要动态切换网络或自动获取IP的场景。
二、核心差异对比
1. 功能与设计理念
| 维度 | network-scripts | NetworkManager |
|---|---|---|
| 核心组件 | 脚本集合(如ifup, ifdown, ifconfig) | 守护进程(NetworkManager)+ 命令行工具(nmcli) |
| 网络管理方式 | 基于配置文件的静态一次性配置 | 动态监控网络状态,支持运行时热切换 |
| 自动化能力 | 无自动网络检测,需手动配置所有参数 | 自动检测网络连接变化,支持自动重连和切换 |
| 网络类型支持 | 主要支持有线网络、静态IP | 支持有线、Wi-Fi、3G/4G、VPN、蓝牙等多种网络 |
2. 配置文件与存储位置
-
network-scripts的配置:- 接口配置文件:
/etc/sysconfig/network-scripts/ifcfg-<interface>(如ifcfg-eth0)。 - 配置示例(静态IP):
DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 ONBOOT=yes - 脚本执行逻辑:通过
ifup/ifdown脚本读取配置文件并配置接口。
- 接口配置文件:
-
NetworkManager的配置:- 传统兼容配置:仍支持读取
/etc/sysconfig/network-scripts/ifcfg-<interface>,但优先级较低。 - 原生配置存储:通过
nmcli或图形界面创建的配置存储在/etc/NetworkManager/system-connections/目录下(以.nmconnection为后缀的文件)。 - 命令行配置示例(静态IP):
nmcli connection add type ethernet ifname eth0 con-name eth0-static nmcli connection modify eth0-static ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 nmcli connection up eth0-static
- 传统兼容配置:仍支持读取
3. 服务与脚本的关系
-
network-scripts与network服务:network服务(如CentOS 6中的service network)本质上是通过调用network-scripts中的脚本(如ifup)来配置网络接口。network-scripts是network服务的执行层,两者属于“服务+工具集”的关系。
-
NetworkManager与network-scripts的兼容性:- 在CentOS 7中,
NetworkManager默认启用,但仍会读取network-scripts的配置文件(ifcfg-*),以兼容旧系统的配置。 - 若通过
nmcli修改配置,会生成新的.nmconnection文件,优先级高于ifcfg-*文件。
- 在CentOS 7中,
4. 服务控制与管理方式
-
network-scripts的使用:- 依赖
network服务:通过service network start/restart或systemctl start/restart network(CentOS 7)调用脚本配置网络。 - 手动执行脚本:如
/sbin/ifup eth0直接启动接口。
- 依赖
-
NetworkManager的管理:- 服务控制:
systemctl start/stop/restart NetworkManager。 - 命令行工具:
nmcli(推荐)、nmtui(文本界面)、图形界面工具(如GNOME网络设置)。
- 服务控制:
三、CentOS版本中的角色变化
1. CentOS 6及之前
- 默认使用
network服务 +network-scripts脚本集,无NetworkManager(或仅作为可选组件)。 - 所有网络配置通过
ifcfg-*文件和network-scripts脚本完成,不支持动态网络管理。
2. CentOS 7及之后
- 默认启用
NetworkManager服务,network-scripts的ifcfg-*文件仍被兼容,但推荐使用nmcli管理配置。 - 若需使用
network-scripts,需禁用NetworkManager并启用network服务:# 禁用NetworkManager systemctl stop NetworkManager systemctl disable NetworkManager # 启用network服务 systemctl start network systemctl enable network
3. CentOS 8/Stream及后续
NetworkManager成为唯一官方支持的网络管理工具,network-scripts的兼容性逐渐弱化,推荐完全使用nmcli。
四、如何选择使用?
1. 推荐使用NetworkManager的场景:
- 桌面环境(需要图形化网络管理)、移动设备(如Wi-Fi切换)。
- 需要管理多种网络类型(VPN、移动网络)或动态获取IP(DHCP)。
- 希望网络配置支持热切换(如插拔网线后自动重连)。
2. 推荐使用network-scripts的场景:
- 纯静态服务器(如Web、数据库服务器),网络配置极少变更。
- 传统运维流程中依赖
ifcfg-*文件,或需要最大化系统稳定性(避免动态服务的潜在问题)。 - 运行CentOS 6等旧版本系统,无
NetworkManager支持。
五、注意事项
- 配置冲突:在CentOS 7中,若同时运行
NetworkManager和network服务,会导致网络配置冲突,需确保仅启用其中一个。 - 配置文件优先级:
NetworkManager的原生配置(.nmconnection)优先级高于ifcfg-*文件,修改时需注意生效顺序。 - 迁移建议:从CentOS 6迁移到CentOS 7时,可保留
ifcfg-*文件,NetworkManager会自动兼容;若需动态管理,建议逐步切换到nmcli。
通过理解network-scripts和NetworkManager的定位与差异,可根据系统版本和实际需求选择更合适的网络管理方式,确保配置的稳定性和灵活性。
6️⃣ 参考 6
在 Linux 系统中,network-scripts 和 NetworkManager 是两种完全不同的网络管理方案,分别代表了传统静态配置与现代动态管理的范式。以下是两者的详细对比分析:
一、核心定位与关系
1. 定义与历史演进
-
network-scripts
- 定位:传统网络配置工具,基于静态配置文件(
/etc/sysconfig/network-scripts/ifcfg-*),适用于服务器环境。 - 历史:CentOS 5-6 的默认方案,通过
/etc/init.d/network脚本管理服务,依赖 SysVinit 机制。
- 定位:传统网络配置工具,基于静态配置文件(
-
NetworkManager
- 定位:动态网络管理守护进程,支持运行时配置和复杂网络场景(如无线、VPN)。
- 历史:CentOS 7 引入,逐步取代
network-scripts,成为 Red Hat 系官方推荐方案。
2. 共存与优先级
- CentOS 7:两者默认共存,但
NetworkManager优先管理网络接口,若需使用network-scripts需显式禁用 NetworkManager。 - CentOS 8+:
network-scripts被废弃,仅通过安装network-scripts包可兼容旧配置。
二、核心差异对比
| 维度 | network-scripts | NetworkManager |
|---|---|---|
| 设计目标 | 静态配置,适用于固定 IP 的服务器环境 | 动态管理,支持无线/WiFi、VPN、热插拔等场景 |
| 配置文件 | /etc/sysconfig/network-scripts/ifcfg-ethX(需手动编辑) | /etc/NetworkManager/system-connections/(密钥文件格式)或兼容的 ifcfg-* 文件 |
| 管理工具 | service network 命令或 /etc/init.d/network 脚本 | nmcli 命令行工具、nmtui 图形界面、NetworkManager D-Bus API |
| 动态能力 | 需重启服务生效,无法响应硬件变化 | 自动检测接口状态变化(如 USB 网卡插入),支持运行时启用/禁用连接 |
| 功能支持 | 仅支持有线网络,无高级协议(如 VPN、策略路由) | 支持有线/无线、VPN、PPPoE、网络绑定(Bonding)、桥接等 |
| DNS 管理 | 直接写入 /etc/resolv.conf(可能被覆盖) | 集成管理,通过 dns-nameservers 字段动态更新 |
| 防火墙集成 | 需配合 iptables 或 firewalld | 原生支持 firewalld 规则同步 |
| 配置持久化 | 直接修改文件,依赖服务重启 | 配置存储在二进制数据库,通过 nmcli connection reload 同步 |
三、配置方式对比
1. 静态 IP 配置示例
-
network-scripts
# /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 -
NetworkManager
nmcli con add type ethernet con-name eth0-static ifname eth0 ip4 192.168.1.100/24 gw4 192.168.1.1 nmcli con modify eth0-static ipv4.dns "8.8.8.8 8.8.4.4" nmcli con up eth0-static
2. 动态 IP 配置
-
network-scripts
BOOTPROTO=dhcp -
NetworkManager
nmcli con modify eth0 ipv4.method auto nmcli con up eth0
四、适用场景
| 场景 | network-scripts | NetworkManager |
|---|---|---|
| 服务器环境 | 推荐,避免动态配置干扰 | 不推荐(除非需无线/VPN 等高级功能) |
| 桌面/移动设备 | 不适用 | 推荐,支持自动切换网络和热点 |
| 容器/虚拟化 | 推荐,兼容传统网络模型 | 需配合 systemd-networkd 或桥接工具 |
| 多网卡绑定 | 需手动配置 ifcfg-eth0:1 等别名 | 图形化配置,支持 LACP 和策略路由 |
五、共存与冲突解决
1. 典型冲突表现
- 配置覆盖:NetworkManager 可能忽略
network-scripts中的设置,导致 IP/DNS 配置失效。 - 服务竞争:两者同时管理同一接口时,NetworkManager 优先生效,可能引发网络中断。
2. 冲突解决方案
-
方案一:完全禁用 NetworkManager
systemctl stop NetworkManager systemctl disable NetworkManager yum install network-scripts # CentOS 8+ 需手动安装 systemctl enable network -
方案二:隔离接口管理
在ifcfg-eth0中添加:NM_CONTROLLED=no # 禁止 NetworkManager 管理该接口 -
方案三:迁移配置
使用nmcli connection migrate将旧配置迁移至 NetworkManager 格式。
六、功能特性对比
| 功能 | network-scripts | NetworkManager |
|---|---|---|
| 无线网络 | 不支持 | 原生支持(需安装 NetworkManager-wifi 包) |
| VPN 集成 | 需第三方脚本 | 原生支持 OpenVPN、IPSec 等 |
| 网络监控 | 依赖 ifconfig 和 netstat | 提供 nmcli 命令和 GUI 状态面板 |
| IPv6 支持 | 需手动配置 IPV6INIT=yes | 默认启用,支持 SLAAC/DHCPv6 |
七、操作建议
-
服务器环境:
- CentOS 6/7:使用
network-scripts,禁用 NetworkManager。 - CentOS 8+:若必须使用传统配置,安装
network-scripts包并设置NM_CONTROLLED=no。
- CentOS 6/7:使用
-
桌面环境:
- 保留 NetworkManager,利用
nmcli或图形界面简化管理。
- 保留 NetworkManager,利用
-
混合环境:
- 对关键服务接口禁用 NetworkManager,其他接口由 NetworkManager 管理。
总结
| 维度 | network-scripts | NetworkManager |
|---|---|---|
| 核心理念 | 静态、手动配置,适合稳定环境 | 动态、自动化管理,适合灵活场景 |
| 学习成本 | 低(基于文件配置) | 中等(需掌握 nmcli 或 GUI 操作) |
| 未来趋势 | 逐步淘汰(CentOS 8+ 已废弃) | 官方主推,持续集成新功能 |
实际选择:
- 传统服务器环境:坚持使用
network-scripts,确保配置可控性。 - 现代系统(尤其是桌面/云环境):全面转向 NetworkManager,以获取更好的兼容性和功能支持。
7️⃣ 参考 7
在 Linux 网络管理中,network-scripts(传统网络服务)与 NetworkManager 是两种不同时期的核心工具,它们的关系与差异直接影响系统网络配置的实践方式。以下从设计定位、配置机制、功能支持、适用场景及演进趋势五个维度进行深度对比:
⚙️ 1. 设计定位与核心差异
| 特性 | network-scripts | NetworkManager |
|---|---|---|
| 定位 | 静态网络配置(服务器固定环境) | 动态网络管理(桌面/移动/云) |
| 服务名 | network.service | NetworkManager.service |
| 配置存储 | 分散脚本(/etc/sysconfig/network-scripts/ifcfg-*) | 集中管理(/etc/NetworkManager/system-connections/) |
| 动态响应 | 需手动重启服务生效 | 自动检测网络变化(热插拔、Wi-Fi切换) |
关键冲突点:二者同时管理同一网卡会导致配置覆盖(如IP冲突、DNS重置)。根治方案是禁止共存:通过
NM_CONTROLLED=no声明network-scripts管理权,或完全禁用其一。
🛠️ 2. 配置方式对比
network-scripts(CentOS 6/7 传统方式)
- 操作流程:
- 编辑
ifcfg-eth0文件(示例):DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 - 重启服务生效:
service network restart。
- 编辑
- 缺点:
- 语法严格(键值对无空格)
- 无热插拔支持,依赖手动操作。
NetworkManager(CentOS 7+ 主流方式)
- 操作流程:
- 命令行工具
nmcli(示例静态IP配置):nmcli con add type ethernet con-name eth0-static ifname eth0 \ ipv4.method manual ipv4.addresses "192.168.1.100/24" \ ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8" - 文本界面工具
nmtui:交互式配置。
- 命令行工具
- 优点:
- 配置实时生效(无需重启服务)
- 支持复杂网络(VPN、网桥、多连接切换)。
🌐 3. 功能支持对比
| 能力 | network-scripts | NetworkManager |
|---|---|---|
| 无线网络 | 不支持(需额外工具) | 原生支持(Wi-Fi/4G) |
| IPv6 管理 | 需手动配置 | 原生支持(SLAAC/DHCPv6) |
| 路由管理 | 完全手动配置 | 自动管理(可能覆盖非托管路由) |
| DNS 持久化 | 直接修改 /etc/resolv.conf(易丢失) | 集成配置(nmcli 修改后持久保存) |
典型场景:
- 云服务器弹性网卡热插拔 →
NetworkManager自动适配- 服务器固定IP无变更 →
network-scripts轻量化更稳定。
📡 4. 演进趋势与版本兼容
| 系统版本 | network-scripts 状态 | NetworkManager 状态 |
|---|---|---|
| CentOS 6 | 默认且唯一 | 未集成 |
| CentOS 7 | 与 NM 共存(易冲突) | 默认启用(需手动关闭避冲突) |
| CentOS 8+ | 废弃(需手动安装 network-scripts 包) | 唯一官方支持工具 |
迁移建议:
- CentOS 8+ 用户必须使用
nmcli或nmtui- 旧配置迁移命令:
nmcli connection migrate。
⚠️ 5. 选择建议与冲突规避
何时用 network-scripts?
- 纯静态服务器环境(如机房物理机固定IP)
- 资源受限设备(嵌入式系统)
- 操作:禁用 NM →
systemctl disable NetworkManager。
何时用 NetworkManager?
- 动态网络环境(笔记本多Wi-Fi切换、云服务器弹性网卡)
- 需高级功能(VPN、网络绑定、IPv6自动配置)
- 操作:卸载旧脚本 →
dnf remove network-scripts(CentOS 8+)。
💎 总结
network-scripts 与 NetworkManager 代表 Linux 网络管理的静态与动态两种范式:
network-scripts:精准控制但灵活性差,逐步退出历史舞台。NetworkManager:自动化与场景适应性强,是未来演进方向。
决策关键:
新系统(尤其云环境)必选
NetworkManager;遗留系统维护可短期沿用network-scripts,但需规划迁移。
8️⃣ 参考 8
在CentOS/RHEL系统中,network-scripts(传统network服务)与NetworkManager是两套网络管理机制,二者在架构、功能和使用场景上存在显著差异。以下从五个维度进行深度对比分析:
🔧 一、核心定位与设计目标
| 维度 | network-scripts | NetworkManager |
|---|---|---|
| 设计目标 | 静态配置,专注基础网络管理(服务器/嵌入式场景) | 动态网络管理(支持多连接自动切换、热插拔等) |
| 配置方式 | 手动编辑/etc/sysconfig/network-scripts/ifcfg-*文件 | 通过nmcli/nmtui动态配置,或图形化工具 |
| 服务管理 | systemctl restart network生效 | 配置实时生效,无需重启服务 |
| 资源消耗 | 低(无守护进程) | 较高(依赖D-Bus通信,需后台守护进程) |
典型场景
- network-scripts:服务器固定IP、无图形界面环境、需精确控制网络参数。
- NetworkManager:笔记本/云主机(动态IP)、WiFi/VPN管理、容器/虚拟化平台。
⚙️ 二、技术架构与功能支持
1. 配置文件机制
- network-scripts:
- 使用文本文件(如
ifcfg-eth0),直接定义IP、网关、DNS等参数。 - 示例配置:
DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1
- 使用文本文件(如
- NetworkManager:
- 默认存储为二进制文件(
/etc/NetworkManager/system-connections/*.nmconnection),兼容传统ifcfg文件。 - 支持连接(Connection) 概念:一个物理网卡可绑定多个连接配置(如"办公室-静态IP"、"家庭-DHCP")。
- 默认存储为二进制文件(
2. 高级功能支持
| 功能 | network-scripts | NetworkManager |
|---|---|---|
| 无线网络 | ❌ 不支持 | ✅ 完整支持(需NetworkManager-wifi包) |
| VPN集成 | ❌ 需额外脚本 | ✅ 原生支持(OpenVPN/WireGuard等) |
| IPv6高级特性 | ❌ 基础支持 | ✅ SLAAC隐私扩展、DHCPv6 |
| 云平台适配 | ❌ 无优化 | ✅ 自动识别AWS/Azure元数据 |
| 热插拔支持 | ❌ 有限 | ✅ 自动检测新设备并应用配置 |
⚠️ 三、服务冲突与共存机制
冲突表现
- IP地址被意外覆盖
- DNS配置(
/etc/resolv.conf)频繁重置 - 接口频繁
up/down导致网络不稳定
解决方案
- 完全使用NetworkManager:
systemctl disable --now network # 禁用network服务 yum remove network-scripts # 移除旧配置包 nmcli device set eth0 managed yes # 确保设备由NM接管 - 完全使用network-scripts:
systemctl disable --now NetworkManager # 禁用NM yum install network-scripts # 安装传统支持包 - 混合模式(不推荐):
- 在
ifcfg-eth0中添加NM_CONTROLLED=no - 执行
nmcli device set eth0 managed no
- 在
💡 关键提示:CentOS 8+默认仅支持NetworkManager,
network-scripts需额外安装;CentOS 9+已彻底移除network-scripts。
🛠️ 四、操作命令对比
| 操作 | network-scripts | NetworkManager |
|---|---|---|
| 查看接口状态 | ip addr show eth0 | nmcli device status |
| 配置静态IP | 编辑ifcfg-eth0 → systemctl restart network | nmcli con mod eth0 ipv4.addresses 192.168.1.100/24 → nmcli con up eth0 |
| 启用/禁用接口 | ifdown eth0 && ifup eth0 | nmcli con down eth0 → nmcli con up eth0 |
| DNS管理 | 在ifcfg中设置DNS1=8.8.8.8 | nmcli con mod eth0 ipv4.dns "8.8.8.8" |
🚀 五、演进趋势与选型建议
版本兼容性
- CentOS 6:仅支持
network-scripts - CentOS 7:双系统并存,默认启用NetworkManager
- CentOS 8+:NetworkManager为唯一官方方案,
network-scripts需手动安装
选型指南
- 优先NetworkManager:
- 需动态网络管理(如云环境弹性网卡)
- 使用WiFi/VPN等高级功能
- 兼容现代工具链(如Kubernetes、Cockpit)
- 考虑network-scripts:
- 管理无变更的服务器(如数据库/存储节点)
- 需严格审计网络配置变更
- 资源受限的嵌入式环境
⚠️ 避坑提示:混合使用易导致配置覆盖,建议在CentOS 7+环境中明确主控服务,并通过
journalctl -u NetworkManager -u network排查冲突日志。
💎 总结
network-scripts是面向静态网络的“手工工具箱”,而NetworkManager是动态时代的“智能管家”。二者本质是不同代际的网络管理方案:
- 在服务器固定场景中,
network-scripts凭借简洁性仍有价值; - 在云原生与混合环境中,NetworkManager的自动化能力(如热插拔、多连接切换)已成为不可逆的趋势。
迁移至CentOS 8+/RHEL 9+时,建议全面转向nmcli命令管理网络,拥抱基于Keyfile的现代配置范式。
9️⃣ 参考 9
以下是关于 network-scripts 和 NetworkManager 的详细对比分析,涵盖两者的核心定位、功能差异及适用场景。
1. 核心定位
| 工具 | network-scripts | NetworkManager |
|---|---|---|
| 定位 | 传统网络配置工具(基于静态文件) | 现代动态网络管理工具(支持动态环境和复杂需求) |
| 主要功能 | 通过脚本管理网络接口的启动与停止 | 统一管理有线/无线网络、VPN、移动宽带等 |
| 适用系统 | CentOS/RHEL 7 及更早版本 | CentOS/RHEL 7+、Fedora、Ubuntu 等现代发行版 |
2. 核心差异对比
| 特性 | network-scripts | NetworkManager |
|---|---|---|
| 配置方式 | 手动编辑 /etc/sysconfig/network-scripts/ifcfg-* 文件 | 命令行 (nmcli)、图形界面 (nmtui) 或 API |
| 动态适应性 | 仅支持静态配置,需手动重启服务 | 自动检测网络变化(如热插拔网卡、Wi-Fi 切换) |
| 热插拔支持 | 需依赖 udev 规则和自定义脚本 | 原生支持,自动响应硬件事件 |
| 多连接管理 | 不支持同时激活多个连接 | 支持多连接优先级、故障切换和负载均衡 |
| VPN 整合 | 需手动配置 | 原生支持 OpenVPN、WireGuard、IPsec 等协议 |
| Wi-Fi 管理 | 不支持 | 支持扫描、连接、保存多个 Wi-Fi 配置 |
| 云/容器集成 | 需手动扩展 | 原生支持 cloud-init、Kubernetes 等动态环境 |
3. 配置文件对比
(1) network-scripts 静态配置
- 文件路径:
/etc/sysconfig/network-scripts/ifcfg-eth0 - 示例:
DEVICE=eth0 BOOTPROTO=none ONBOOT=yes IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 - 操作命令:
systemctl restart network # 重启服务 ifup eth0 # 启动接口
(2) NetworkManager 动态配置
- 命令行工具:
nmclinmcli con add con-name "Static-eth0" ifname eth0 type ethernet ip4 192.168.1.100/24 gw4 192.168.1.1 nmcli con mod "Static-eth0" ipv4.dns "8.8.8.8" nmcli con up "Static-eth0" - 配置存储:
NetworkManager 将连接配置存储在/etc/NetworkManager/system-connections/,并兼容传统ifcfg文件。
4. 两者关系
(1) 兼容性
- NetworkManager 支持
network-scripts:
默认启用ifcfg-rh插件,可读取和写入/etc/sysconfig/network-scripts/的配置文件。 - network-scripts 无法反向兼容:
若手动修改ifcfg文件,需通知 NetworkManager 重新加载配置:nmcli con reload
(2) 冲突场景
- 服务同时运行:
若未正确配置,可能导致接口重复初始化(如同时通过network服务和 NetworkManager 管理)。 - 解决方案:
systemctl stop network # 停止传统服务 systemctl disable network # 禁用自启 systemctl enable --now NetworkManager # 启用 NetworkManager
5. 迁移建议
从 network-scripts 迁移到 NetworkManager
- 兼容模式:
保留现有ifcfg文件,让 NetworkManager 直接接管。 - 转换配置:
使用nmcli命令将旧配置转换为原生 NetworkManager 连接:nmcli con load /etc/sysconfig/network-scripts/ifcfg-eth0 - 禁用传统服务:
systemctl mask network
6. 如何选择?
使用 network-scripts 的场景
- 简单服务器环境,仅需静态 IP。
- 旧版系统(如 CentOS 6)或需要完全手动控制。
使用 NetworkManager 的场景
- 动态网络环境(如笔记本电脑、云服务器)。
- 需要管理 Wi-Fi、VPN 或复杂网络拓扑。
- 未来兼容性(CentOS 8+ 已弃用
network-scripts)。
7. 总结
network-scripts:
是传统网络配置的基石,适合静态环境,但缺乏动态管理能力,逐步被弃用。NetworkManager:
是未来趋势,支持动态、移动和云原生场景,推荐新项目优先使用。