Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.6. 将 NetworkManager 与网络脚本搭配使用

这部分论述了如何在网络脚本中运行脚本以及如何使用自定义命令。
术语 网络脚本引用脚本 /etc/init.d/network 及其调用的其他已安装脚本。虽然 NetworkManager 提供默认网络服务,但脚本和 NetworkManager 可以并行运行并协同工作。红帽建议先测试它们。

运行网络脚本

仅使用 systemctl 命令运行网络脚本:
systemctl start|stop|restart|status network
systemctl 工具会清除任何现有环境变量并确保正确执行。
在 Red Hat Enterprise Linux 7 中,首先启动 NetworkManager,并使用 NetworkManager 进行 /etc/init.d/网络检查,以避免对 NetworkManager 的连接进行篡改。NetworkManager 旨在作为使用 sysconfig 配置文件的主要应用,/etc/init.d/network 则是辅助应用程序。
/etc/init.d/network 脚本运行:
  1. 手动 - 使用其中一个 systemctl 命令start|stop|restart 网络
    或者
  2. 如果网络服务已启用,则引导和关闭 - 作为 systemctl enable network 命令的结果。
这是一个手动过程,不会响应启动后发生的事件。用户也可以手动调用 ifupifdown 脚本。
注意
由于 initscripts 的技术限制,systemctl reload network.service 命令无法正常工作。要为网络服务应用新配置,请使用 restart 命令:
~]# systemctl restart network.service
这会关闭并启动所有网络接口卡(NIC)以加载新配置。如需更多信息,请参阅 Red Hat Knowledgebase 解决方案 Reload 和 force-reload 选项用于网络服务

在网络脚本中使用自定义命令

只有在 /etc/init.d/network服务控制这些设备时,才会在 /sbin/ifup -local、ifdown-pre-local 脚本中执行自定义命令。默认情况下,ifup-local 文件不存在。如果需要,在 /sbin/ 目录下创建它。
ifup-local 脚本仅可由 initscripts 读取,NetworkManager 不可读取。要使用 NetworkManager 运行自定义脚本,请在分配程序.d/ 目录下创建它。请参阅 “运行 Dispatcher 脚本”一节
重要
不建议修改 initscripts 软件包或相关 rpms 中包含的任何文件。如果用户修改这些文件,红帽不提供支持。
当网络连接上线和停机时,可以使用旧的 网络脚本NetworkManager 运行自定义任务。如果启用了 NetworkManager ,ifupifdown 脚本将询问 NetworkManager 是否管理相关的接口,该接口可从 ifcfg 文件的 DEVICE= 行中找到。
NetworkManager 管理的设备:
调用 ifup
当您调用 ifup 且设备由 NetworkManager 管理时,有两个选项:
  • 如果该设备尚未连接 ,则是否会询问 NetworkManager 启动连接。
  • 如果设备已经连接,则不执行任何操作。
调用 ifdown
当您调用 ifdown 且设备由 NetworkManager 管理时
  • ifdown 要求 NetworkManager 终止连接。
网络管理器(NetworkManager )未管理的设备:
如果您调用 ifupifdown,该脚本将使用自 NetworkManager 存在之前的较旧的非网络管理器机制启动连接。

运行 Dispatcher 脚本

NetworkManager 提供了根据连接状态运行其他自定义脚本以启动或停止服务的方法。默认情况下,/etc/NetworkManager/dispatcher.d/ 目录存在,NetworkManager 会以字母顺序运行脚本。每个脚本必须是 root 拥有的 可执行文件,并且必须仅对文件所有者具有 写入权限。有关运行 NetworkManager 分配程序脚本的更多信息,请参阅红帽知识库解决方案如何编写 NetworkManager 分配程序脚本以应用 ethtool 命令