一、传统 network服务(network-scripts)
这是 CentOS 6 及更早版本的默认网络管理工具,属于静态、脚本驱动的管理体系。
1. 工作过程
- 启动阶段系统启动时,network 服务会扫描 /etc/sysconfig/network-scripts/ 目录下的 ifcfg-* 配置文件(每个物理 / 虚拟网卡对应一个文件)。
- 执行初始化脚本对每个配置了 ONBOOT=yes 的网卡,调用 ifup 脚本,通过 ip、ifconfig、route 等底层命令,将配置文件中的静态 IP、网关、子网掩码、DNS 等参数直接应用到网卡设备。
- 静态维持配置完成后,服务进入 “被动等待” 状态,不会主动监控网络变化(如网线插拔、DHCP 地址过期)。仅当手动执行 service network restart 或 ifdown/ifup <网卡名> 时,才会重新读取配置并生效。
- DNS 处理逻辑初始化时会将 ifcfg-* 中的 DNS1/DNS2 写入 /etc/resolv.conf,但后续若该文件被其他工具(如 NetworkManager)修改,network 服务不会自动同步,需重启服务才能覆盖。
2. 核心特点
- 完全依赖本地静态配置文件,无动态适配能力。
- 重启服务会中断所有网卡的网络连接,远程操作风险高。
- 不支持 WiFi、VPN、自动重连等动态网络场景。
3. 适用场景
仅适用于 CentOS 6 及更早版本,或需要完全静态、无动态变化的服务器环境。
二、NetworkManager
这是 CentOS 7/RHEL 7 及以后版本的默认网络管理工具,属于动态、事件驱动的守护进程。
1. 工作过程
- 持续监控与守护作为后台守护进程(NetworkManager.service)持续运行,实时监控网络接口、网线插拔、WiFi 信号强度、DHCP 租期等事件。
- 配置读取与兼容
- 兼容传统的 /etc/sysconfig/network-scripts/ifcfg-* 配置文件。
- 同时维护自身配置目录 /etc/NetworkManager/system-connections/,存储更精细的连接配置(如 WiFi 密码、VPN 参数)。
- 动态响应与自愈当检测到网络事件(如网线断开、DHCP 地址变化)时,自动触发重连、切换备用网络、更新 DNS 等操作,无需人工干预。
- DNS 自动管理
- 动态生成 /etc/resolv.conf(通常是软链接到 /run/NetworkManager/resolv.conf)。
- 会根据当前活跃连接的 DNS 配置(如 DHCP 获取的 DNS 或 ifcfg-* 中手动设置的 DNS)自动更新该文件,确保 DNS 始终与当前网络连接同步。
2. 核心特点
- 事件驱动,支持动态网络场景(WiFi、VPN、移动网络等)。
- 配置修改后可通过 nmcli 命令局部生效,无需中断所有网卡。
- 提供图形化(nm-connection-editor)和命令行(nmcli)两种管理方式。
3. 适用场景
适用于 CentOS 7/RHEL 7 及以后版本,尤其是需要动态网络适配、远程管理或桌面环境的场景。
三、核心差异对比
四、总结与建议
- CentOS 7+ 版本:优先使用 NetworkManager 进行网络管理,通过 nmcli 或图形化工具操作,避免直接修改 /etc/resolv.conf。
- 配置生效:修改 ifcfg-* 后,使用 nmcli connection reload <网卡名> + nmcli connection up <网卡名> 局部生效,避免全局重启。
- DNS 问题排查:若 /etc/resolv.conf 未更新,检查是否为 NetworkManager 生成的软链接,并通过重启 NetworkManager 服务强制刷新。
|