"network-scripts"和"NetworkManger"的关系和对比 笔记250706

230 阅读31分钟

"network-scripts"和"NetworkManger"的关系和对比 笔记250706

















1️⃣ 参考 1

在 CentOS/RHEL 系统中,network-scripts(传统 network 服务)与 NetworkManager 是两种不同的网络管理机制,二者既有继承关系,也存在显著差异。以下是它们的核心对比及关系解析:


📊 一、核心关系与定位差异

维度network-scriptsNetworkManager
本质基于脚本的静态配置(/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=staticIPADDR=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-scriptsNetworkManager说明
动态网络切换自动切换 WiFi/有线/VPN
多IP/路由配置需多个文件单连接支持NetworkManager 支持 ipv4.addresses 多地址
DNS 管理直接写 resolv.conf集成管理避免 DHCP 覆盖(ipv4.ignore-auto-dns=yes
热插拔支持有限完整自动检测新设备(如 USB 网卡)
云平台集成自动识别 AWS/Azure 元数据
3. 网络模型差异
  • network-scripts
    • 设备为中心:一个物理接口对应一个配置文件。
    • 无连接状态管理,配置即生效。
  • NetworkManager
    • 连接为中心:一个物理接口可绑定多个连接配置(如 eth0-officeeth0-home),但仅一个激活。
    • 支持连接优先级(connection.autoconnect-priority),自动选择最优网络。

⚠️ 三、冲突机制与共存方案

冲突表现

当二者同时管理同一接口时,可能导致:

  • IP 地址被覆盖
  • 接口频繁 up/down
  • DNS 配置重置
解决方案
  1. 完全使用 NetworkManager(推荐新系统):
    systemctl disable --now network
    yum remove network-scripts  # CentOS 8+
    nmcli device set eth0 managed yes  # 确保设备被接管
    
  2. 完全使用 network-scripts(适合服务器):
    systemctl disable --now NetworkManager
    yum install network-scripts  # CentOS 8+ 需手动安装
    
  3. 混合模式(谨慎使用):
    • ifcfg-eth0 中添加 NM_CONTROLLED=no
    • 执行:nmcli device set eth0 managed no

🖥️ 四、典型应用场景

场景推荐方案原因
服务器(静态IP)✅ network-scripts配置稳定,无运行时开销
桌面/笔记本✅ NetworkManager自动切换网络,支持 WiFi/VPN
云实例/容器主机⚠️ NetworkManager动态适配云元数据,集成 SDN
嵌入式设备✅ network-scripts轻量级,无守护进程依赖
多网卡绑定(Bonding)⚠️ NetworkManager图形化配置更便捷(需 nmcli 命令)

🔮 五、演进趋势与建议

  1. 版本演进
    • CentOS 7:双服务并存,建议服务器关闭 NetworkManager
    • CentOS 8+network-scripts 已弃用,新配置默认存为 Keyfile(/etc/NetworkManager/system-connections/)。
  2. 迁移工具
    nmcli con import type ethernet file ifcfg-eth0  # 转换旧配置
    
  3. 终极建议
    • 新部署:统一使用 NetworkManager + nmcli,避免兼容问题。
    • 遗留系统:逐步迁移配置,关闭冲突服务。

故障排查提示
network 状态为 active (exited) 但网络正常,可能是 NetworkManager 干扰,建议彻底禁用其一。


💎 总结对比表

维度network-scriptsNetworkManager
配置方式静态(手动编辑文件)动态(自动持久化)
管理粒度设备级连接级(支持多配置)
适用场景服务器/无动态网络需求桌面/移动设备/云环境
未来支持CentOS 9 需额外安装所有新版默认支持
复杂度低(简单脚本)高(支持策略路由/VPN/热插拔)

推荐策略

  • 服务器/静态环境:保守选 network-scripts,但需隔离 NetworkManager
  • 动态/混合环境:必选 NetworkManager,善用 nmcli 实现高效管理。

















2️⃣ 参考 2

"network-scripts" 与 "NetworkManager" 深度对比与关系解析

在 Linux 网络配置体系中,network-scriptsNetworkManager 是两种不同的网络管理方案,它们既有历史继承关系,又在设计理念和功能上存在显著差异。


📂 一、本质定义

组件本质定位
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-scriptsNetworkManager
配置方式手动编辑文件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-scriptsNetworkManager
查看接口状态ip addr shownmcli device status
添加静态 IP编辑 ifcfg 文件 → systemctl restart networknmcli con mod eth0 ipv4.addresses 192.168.1.100/24
临时启用接口ifup eth0nmcli con up eth0
查看连接详情cat ifcfg-eth0nmcli con show "Wired-Connection"
Wi-Fi 扫描不支持nmcli device wifi list

🚀 七、适用场景推荐

场景推荐方案理由
服务器/数据中心network-scripts配置稳定,易于脚本化和版本控制
桌面/移动设备NetworkManager自动处理网络切换,支持 Wi-Fi/VPN
云环境/容器NetworkManager更好支持动态配置和云初始化
嵌入式系统network-scripts资源占用低,无需守护进程
网络高级配置混合使用用 network-scripts 配置底层,NM 管理连接

⚠️ 八、注意事项

  1. CentOS/RHEL 8+ 的变革

    # 需要显式安装传统脚本
    dnf install network-scripts
    
    • 官方已弃用 network-scripts,默认仅安装 NetworkManager
  2. 配置冲突解决原则

    • 避免同时修改同一接口
    • 修改后同步配置:
      nmcli con reload  # NetworkManager 重载配置
      
  3. 诊断工具差异

    • network-scripts:/var/log/messages
    • NetworkManager:journalctl -u NetworkManager

💎 总结:核心关系图谱

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 配置,需手动编辑文件并重启服务。
    • 命令行工具:ifconfigrouteifup/ifdown
  • 适用场景:服务器环境、静态 IP 配置、无图形界面系统。
1.2 NetworkManager
  • 定义:现代网络管理工具,适用于 CentOS 7 及更高版本。
  • 功能
    • 支持动态配置和自动检测网络接口,提供图形界面(如 GNOME 设置)和命令行工具 nmcli
    • 配置存储在 /etc/NetworkManager/system-connections/ 目录下。
    • 支持多种网络类型(有线、Wi-Fi、VPN 等)。
  • 适用场景:桌面/移动设备、需要频繁切换网络(如 Wi-Fi)、VPN 支持。
2. 核心差异
特性network-scriptsNetworkManager
管理方式静态配置,需手动编辑文件并重启服务动态管理,支持实时调整配置,无需重启
默认启用情况CentOS 6 默认使用CentOS 7+ 默认启用
命令行工具ifconfigrouteifup/ifdownnmclinmtui
配置文件路径/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-scriptsNetworkManager 是两种不同的网络管理方式,它们的设计理念、使用场景和功能存在显著差异。以下是它们的 关系对比 详细分析:


一、关系

  1. 发展历程

    • network-scripts:是传统的网络管理方式,广泛用于 CentOS 6 及更早版本的 Linux 系统。它通过静态配置文件(如 /etc/sysconfig/network-scripts/ifcfg-*)管理网络接口,适合服务器环境。
    • NetworkManager:是新一代的网络管理工具,自 CentOS 7 及更高版本默认启用。它支持动态网络配置(如 Wi-Fi、VPN、移动网络),适合桌面环境和需要频繁切换网络的场景。
  2. 共存与优先级

    • 在 CentOS 7+ 系统中,NetworkManagernetwork-scripts 可以 共存,但 NetworkManager 的优先级更高
    • 如果同时启用两者,NetworkManager 会接管大多数网络接口的管理,而 network-scripts 的配置仅在特定情况下(如配置文件未指定由 NetworkManager 管理)生效。
  3. 功能替代性

    • NetworkManagernetwork-scripts 的现代化替代工具,提供更灵活的动态网络管理能力。
    • 在服务器环境中,network-scripts 仍被广泛使用(尤其是静态 IP 配置),但 NetworkManager 逐渐成为主流。

二、对比分析

对比维度network-scriptsNetworkManager
设计目标提供静态网络配置,适合服务器环境。提供动态网络管理,适合桌面和移动设备。
配置方式手动编辑配置文件(如 /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)。
兼容性与传统工具(如 ifconfigroute)兼容。与现代工具(如 ipnmcli)兼容,部分旧工具(如 ifup/ifdown)可能失效。
默认启用版本CentOS 6 及更早版本。CentOS 7 及更高版本。
未来发展逐步被 NetworkManager 取代。持续更新,成为主流网络管理工具。

三、核心差异示例

1. 配置 IPv6 地址
  • network-scripts(CentOS 6)

    1. 编辑接口配置文件(如 /etc/sysconfig/network-scripts/ifcfg-eth0):
      IPV6INIT=yes
      IPV6ADDR=2001:db8::1/64
      IPV6_DEFAULTGW=2001:db8::1
      
    2. 重启网络服务:
      service network restart
      
  • NetworkManager(CentOS 7)

    1. 使用 nmcli 配置:
      nmcli connection modify ens33 ipv6.method manual ipv6.addresses 2001:db8::1/64 ipv6.gateway 2001:db8::1
      nmcli connection up ens33
      
    2. 或编辑配置文件(如 /etc/sysconfig/network-scripts/ifcfg-ens33):
      TYPE=Ethernet
      BOOTPROTO=static
      IPV6INIT=yes
      IPV6ADDR=2001:db8::1/64
      IPV6_DEFAULTGW=2001:db8::1
      ONBOOT=yes
      
    3. 重启网络服务:
      systemctl restart network
      
2. 管理 Wi-Fi 连接
  • network-scripts:不支持 Wi-Fi 管理,需手动配置无线驱动和密钥。
  • NetworkManager:支持 Wi-Fi 自动连接、加密密钥管理、信号强度监控等。

四、如何选择?

  1. 选择 network-scripts

    • 适用于 服务器环境(如数据中心、虚拟机)。
    • 需要 静态 IP 配置 且网络环境稳定。
    • 不需要 Wi-Fi、VPN 等动态网络功能。
  2. 选择 NetworkManager

    • 适用于 桌面环境(如笔记本电脑、开发机)。
    • 需要 动态网络管理(如频繁切换网络、Wi-Fi 连接)。
    • 支持图形界面或命令行工具(nmcli)快速配置。

五、注意事项

  1. 共存问题

    • 如果系统同时启用 NetworkManagernetwork-scripts,需确保配置文件中 NM_CONTROLLED=nonetwork-scripts 接口配置文件)以避免冲突。
    • 禁用 NetworkManager 后,需手动启用 network 服务:
      systemctl stop NetworkManager
      systemctl disable NetworkManager
      systemctl enable network
      systemctl start network
      
  2. 工具兼容性

    • NetworkManager 会接管 ifup/ifdown 命令,需通过 nmclinmtui 管理接口。
    • 旧版工具(如 ifconfig)在 CentOS 7+ 中逐渐被 ip 命令替代。

六、总结

  • network-scripts:传统、静态、稳定,适合服务器环境。
  • NetworkManager:现代、动态、灵活,适合桌面和移动设备。
  • 趋势:随着 Linux 系统向动态化、自动化发展,NetworkManager 已成为主流工具,而 network-scripts 逐渐被淘汰。

根据实际需求选择合适的工具,可兼顾稳定性与灵活性。

















5️⃣ 参考 5

在Linux系统中,network-scriptsNetworkManager是两个与网络配置相关的组件,但它们的定位、功能和适用场景存在显著差异。以下是对两者的详细对比和关系说明:

一、基本概念与定位

1. network-scripts(脚本工具集)
  • 本质:一组用于管理网络接口的Shell脚本,属于传统network服务的核心组件。
  • 作用:读取配置文件(如ifcfg-eth0)并执行网络接口的配置(如IP地址、路由、DNS等)。
  • 适用场景:静态服务器环境(如CentOS 6),通过脚本一次性配置网络,启动时生效,运行时不支持动态调整。
2. NetworkManager(网络管理服务)
  • 本质:一个动态网络管理守护进程(服务),用于实时监控和管理网络连接。
  • 作用:支持有线、Wi-Fi、VPN等多种网络类型的热切换,提供命令行(nmcli)和图形界面(如nm-connection-editor)管理网络配置。
  • 适用场景:桌面环境、移动设备(如笔记本电脑),需要动态切换网络或自动获取IP的场景。

二、核心差异对比

1. 功能与设计理念
维度network-scriptsNetworkManager
核心组件脚本集合(如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-scriptsnetwork服务

    • network服务(如CentOS 6中的service network)本质上是通过调用network-scripts中的脚本(如ifup)来配置网络接口。
    • network-scriptsnetwork服务的执行层,两者属于“服务+工具集”的关系。
  • NetworkManagernetwork-scripts的兼容性

    • 在CentOS 7中,NetworkManager默认启用,但仍会读取network-scripts的配置文件(ifcfg-*),以兼容旧系统的配置。
    • 若通过nmcli修改配置,会生成新的.nmconnection文件,优先级高于ifcfg-*文件。
4. 服务控制与管理方式
  • network-scripts的使用

    • 依赖network服务:通过service network start/restartsystemctl 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-scriptsifcfg-*文件仍被兼容,但推荐使用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支持。

五、注意事项

  1. 配置冲突:在CentOS 7中,若同时运行NetworkManagernetwork服务,会导致网络配置冲突,需确保仅启用其中一个。
  2. 配置文件优先级NetworkManager的原生配置(.nmconnection)优先级高于ifcfg-*文件,修改时需注意生效顺序。
  3. 迁移建议:从CentOS 6迁移到CentOS 7时,可保留ifcfg-*文件,NetworkManager会自动兼容;若需动态管理,建议逐步切换到nmcli

通过理解network-scriptsNetworkManager的定位与差异,可根据系统版本和实际需求选择更合适的网络管理方式,确保配置的稳定性和灵活性。

















6️⃣ 参考 6

在 Linux 系统中,network-scriptsNetworkManager 是两种完全不同的网络管理方案,分别代表了传统静态配置与现代动态管理的范式。以下是两者的详细对比分析:


一、核心定位与关系

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-scriptsNetworkManager
设计目标静态配置,适用于固定 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 字段动态更新
防火墙集成需配合 iptablesfirewalld原生支持 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-scriptsNetworkManager
服务器环境推荐,避免动态配置干扰不推荐(除非需无线/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-scriptsNetworkManager
无线网络不支持原生支持(需安装 NetworkManager-wifi 包)
VPN 集成需第三方脚本原生支持 OpenVPN、IPSec 等
网络监控依赖 ifconfignetstat提供 nmcli 命令和 GUI 状态面板
IPv6 支持需手动配置 IPV6INIT=yes默认启用,支持 SLAAC/DHCPv6

七、操作建议

  • 服务器环境

    • CentOS 6/7:使用 network-scripts,禁用 NetworkManager。
    • CentOS 8+:若必须使用传统配置,安装 network-scripts 包并设置 NM_CONTROLLED=no
  • 桌面环境

    • 保留 NetworkManager,利用 nmcli 或图形界面简化管理。
  • 混合环境

    • 对关键服务接口禁用 NetworkManager,其他接口由 NetworkManager 管理。

总结

维度network-scriptsNetworkManager
核心理念静态、手动配置,适合稳定环境动态、自动化管理,适合灵活场景
学习成本低(基于文件配置)中等(需掌握 nmcli 或 GUI 操作)
未来趋势逐步淘汰(CentOS 8+ 已废弃)官方主推,持续集成新功能

实际选择

  • 传统服务器环境:坚持使用 network-scripts,确保配置可控性。
  • 现代系统(尤其是桌面/云环境):全面转向 NetworkManager,以获取更好的兼容性和功能支持。

















7️⃣ 参考 7

在 Linux 网络管理中,network-scripts(传统网络服务)与 NetworkManager 是两种不同时期的核心工具,它们的关系与差异直接影响系统网络配置的实践方式。以下从设计定位、配置机制、功能支持、适用场景及演进趋势五个维度进行深度对比:


⚙️ 1. 设计定位与核心差异

特性network-scriptsNetworkManager
定位静态网络配置(服务器固定环境)动态网络管理(桌面/移动/云)
服务名network.serviceNetworkManager.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 传统方式)
  • 操作流程
    1. 编辑 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
      
    2. 重启服务生效: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-scriptsNetworkManager
无线网络不支持(需额外工具)原生支持(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+ 用户必须使用 nmclinmtui
  • 旧配置迁移命令:nmcli connection migrate

⚠️ 5. 选择建议与冲突规避

何时用 network-scripts
  • 纯静态服务器环境(如机房物理机固定IP)
  • 资源受限设备(嵌入式系统)
  • 操作:禁用 NM → systemctl disable NetworkManager
何时用 NetworkManager
  • 动态网络环境(笔记本多Wi-Fi切换、云服务器弹性网卡)
  • 需高级功能(VPN、网络绑定、IPv6自动配置)
  • 操作:卸载旧脚本 → dnf remove network-scripts(CentOS 8+)。

💎 总结

network-scriptsNetworkManager 代表 Linux 网络管理的静态与动态两种范式

  • network-scripts:精准控制但灵活性差,逐步退出历史舞台。
  • NetworkManager:自动化与场景适应性强,是未来演进方向。
    决策关键

新系统(尤其云环境)必选 NetworkManager;遗留系统维护可短期沿用 network-scripts,但需规划迁移。

















8️⃣ 参考 8

在CentOS/RHEL系统中,network-scripts(传统network服务)与NetworkManager是两套网络管理机制,二者在架构、功能和使用场景上存在显著差异。以下从五个维度进行深度对比分析:


🔧 一、核心定位与设计目标

维度network-scriptsNetworkManager
设计目标静态配置,专注基础网络管理(服务器/嵌入式场景)动态网络管理(支持多连接自动切换、热插拔等)
配置方式手动编辑/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-scriptsNetworkManager
无线网络❌ 不支持✅ 完整支持(需NetworkManager-wifi包)
VPN集成❌ 需额外脚本✅ 原生支持(OpenVPN/WireGuard等)
IPv6高级特性❌ 基础支持✅ SLAAC隐私扩展、DHCPv6
云平台适配❌ 无优化✅ 自动识别AWS/Azure元数据
热插拔支持❌ 有限✅ 自动检测新设备并应用配置

⚠️ 三、服务冲突与共存机制

冲突表现
  • IP地址被意外覆盖
  • DNS配置(/etc/resolv.conf)频繁重置
  • 接口频繁up/down导致网络不稳定
解决方案
  1. 完全使用NetworkManager
    systemctl disable --now network          # 禁用network服务
    yum remove network-scripts               # 移除旧配置包
    nmcli device set eth0 managed yes        # 确保设备由NM接管
    
  2. 完全使用network-scripts
    systemctl disable --now NetworkManager   # 禁用NM
    yum install network-scripts              # 安装传统支持包
    
  3. 混合模式(不推荐)
    • ifcfg-eth0中添加 NM_CONTROLLED=no
    • 执行 nmcli device set eth0 managed no

💡 关键提示:CentOS 8+默认仅支持NetworkManager,network-scripts需额外安装;CentOS 9+已彻底移除network-scripts


🛠️ 四、操作命令对比

操作network-scriptsNetworkManager
查看接口状态ip addr show eth0nmcli device status
配置静态IP编辑ifcfg-eth0systemctl restart networknmcli con mod eth0 ipv4.addresses 192.168.1.100/24nmcli con up eth0
启用/禁用接口ifdown eth0 && ifup eth0nmcli con down eth0nmcli con up eth0
DNS管理ifcfg中设置DNS1=8.8.8.8nmcli 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-scriptsNetworkManager 的详细对比分析,涵盖两者的核心定位、功能差异及适用场景。


1. 核心定位

工具network-scriptsNetworkManager
定位传统网络配置工具(基于静态文件)现代动态网络管理工具(支持动态环境和复杂需求)
主要功能通过脚本管理网络接口的启动与停止统一管理有线/无线网络、VPN、移动宽带等
适用系统CentOS/RHEL 7 及更早版本CentOS/RHEL 7+、Fedora、Ubuntu 等现代发行版

2. 核心差异对比

特性network-scriptsNetworkManager
配置方式手动编辑 /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 动态配置
  • 命令行工具nmcli
    nmcli 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
  1. 兼容模式
    保留现有 ifcfg 文件,让 NetworkManager 直接接管。
  2. 转换配置
    使用 nmcli 命令将旧配置转换为原生 NetworkManager 连接:
    nmcli con load /etc/sysconfig/network-scripts/ifcfg-eth0
    
  3. 禁用传统服务
    systemctl mask network
    

6. 如何选择?

使用 network-scripts 的场景
  • 简单服务器环境,仅需静态 IP。
  • 旧版系统(如 CentOS 6)或需要完全手动控制。
使用 NetworkManager 的场景
  • 动态网络环境(如笔记本电脑、云服务器)。
  • 需要管理 Wi-Fi、VPN 或复杂网络拓扑。
  • 未来兼容性(CentOS 8+ 已弃用 network-scripts)。

7. 总结

  • network-scripts
    是传统网络配置的基石,适合静态环境,但缺乏动态管理能力,逐步被弃用。
  • NetworkManager
    是未来趋势,支持动态、移动和云原生场景,推荐新项目优先使用。

















🔟 参考 10