环境
红帽企业 Linux 7
问题
- RHEL 7 现在增加了对 NetworkManager 的支持,那么我应该使用哪个?
- 现在 NetworkManager 正在崛起,Network Initscript 会消失吗?
- 何时首选网络初始化脚本功能?什么时候首选 NetworkManager?
解析度
有两种网络方法可用于 RHEL 7。此 KBASE 详细介绍了它们是什么,何时应该使用一种或另一种,以及每种方法的未来。
什么是网络初始化脚本和网络管理器?
NetworkManager 是一套协作网络管理工具,旨在通过消除手动编辑网络配置文件的需要,使网络变得简单明了。NetworkManager 提供带有 GUI、CLI 和 TUI 选项的灵活管理界面,用于管理本地、远程甚至无头系统。它支持广泛的网络接口类型,包括以太网、InfiniBand IPoIB、VLAN、网桥、绑定、团队、WiFi、WiMAX、WWAN、蓝牙、VPN 等。
Network initscript 是一个基本的网络接口启动/停止框架,它是 initscripts 包的一部分。
什么时候应该使用网络初始化脚本?
目前,NetworkManager 不支持以下设备类型:
- 综合业务数字网
- 56k 调制解调器
- 打开 vSwitch
- IPSec
- IPv6 相关隧道 (SIT)
- VXLAN封装
但是,计划在 RHEL 7 中 NetworkManager 的未来版本中支持其中一些设备类型。
什么时候应该使用网络管理器?
- 用于管理 InfiniBand IPoIB 接口
网络初始化脚本也可以使用,但系统启动时间可能会慢得多。 - 每当需要或首选易于使用的网络配置和管理界面来配置网络设备时
使用网络 initscript 要求管理员了解 ifcfg 文件格式,并且需要手动进行编辑以配置或什至进行简单的更改接口配置(引入配置错误的机会) 与网络初始化脚本不同,NetworkManager 简化了网络配置,并使用 GUI、CLI 或 TUI 界面提供了灵活的接口选项。
虽然 RHEL 5/6 具有设备热插拔支持(为新创建的设备运行 ifup 脚本的 udev 规则),但它已在 RHEL 7 中被禁用,因为它会在初始化新发现的设备时导致竞争条件。
其他信息和已知问题
- NetworkManager 现在是 RHEL 7 的默认机制。如果 NetworkManager 被管理员禁用,则回退将使用 initscripts 进行网络接口管理。
- 一旦服务已经停止,Systemd 不允许停止服务。这意味着您不再能够停止网络服务,只启动一个甚至几个网络接口,然后使用网络初始化脚本对这些活动接口执行必要的清理/停止。例如,“服务网络停止;ifup eth0;服务网络停止”将不再有效。
- 当从 NetworkManager 转换为使用网络初始化脚本时,接口的 ifcfg 文件中的默认网关参数将被描述为“GATEWAY0”。为了使 ifcfg 文件与网络初始化脚本兼容,必须将此参数重命名为“GATEWAY”。此限制将在即将发布的 RHEL7 版本中解决。
- 由接口 ifcfg 文件中的 BONDING_OPTS 参数定义的某些接口绑定配置选项可能与 NetworkManager 不兼容。(解决方案 1249593)
各自的未来是什么?
由于对 NetworkManager 的关注增加,Red Hat 可能会在未来的主要版本中弃用 Network Initscript。同时,在 RHEL 7 时间范围内,Network Initscript 将不接受任何新功能或 RFE。NetworkManager 中计划了新功能和 RFE。无论如何,这两种技术都将允许存在缺陷和错误修复。
Network Initscript方法最初设计为同步加载。这对于 RHEL 5/6 来说不是问题,其中服务一个接一个地启动,因此系统以可预测的方式加载。从 RHEL 7 开始,引导过程是高度并行化的(由于 systemd),服务的职责是应对系统中的任何变化并对其做出动态反应。因此,网络初始化脚本不打算以这种方式加载,并且已经发现了许多时间问题,其中网络设备在系统初始化后可能无法启动。
这个问题的唯一解决方案是在使用网络初始化脚本时减慢和序列化服务启动以可靠地启动这些类型的设备。但是,这样做是有代价的,会对启动时间产生巨大影响(否定 systemd 的主要优势之一),并且有时可能会导致系统在等待某些设备启动时在启动过程中出现无响应或停顿。
Ref: 2018, https://access.redhat.com/solutions/783533