在RHEL/CentOS 7/8中重新启动网络

时间:2020-01-09 10:37:33  来源:igfitidea点击:

在本教程中,我将分享可用于在RHEL/CentOS环境下重新启动网络的不同方法。我将介绍RHEL/CentOS 7和8发行版,因为与RHEL/CentOS 8相比,在处理网络方面有一些重大变化。现在,Red Hat完全转向Network Manager,并尝试放弃旧式初始化脚本。

RHEL/CentOS 8的一些背景和更改

如果我们来自RHEL/CentOS 5或者6,那么我们将熟悉SysV脚本以重新启动任何服务,即

# service network restart

对于RHEL/CentOS 7,不推荐使用SysV脚本(尽管我们仍然可以使用这些命令,但是可以随时删除它们,不应使用它们)。现在,所有系统服务,分区,套接字都由systemd处理。

但这是一个完全不同的主题,现在我们使用RHEL/CentOS 7

# systemctl restart network

但是使用RHEL/CentOS 8时,此命令出现以下错误

# systemctl restart network
Failed to restart network.service: Unit network.service not found.

这是因为在RHEL/CentOS 7中,网络脚本是initscriptsrpm的一部分,该脚本已作为RHEL/CentOS 8的一部分被删除,并迁移到network-scripts rpm中,我已经针对该主题编写了详细的指南以及使用旧版网络重启命令的步骤。

现在考虑所有这些更改,我们可以使用多种方法来重新启动RHEL/CentOS版本中的网络。但是在我们跳到那里之前,让我们了解我们的界面是否由NetworkManager管理,因为命令和重启网络的步骤将相应地发生变化。

如何检查接口是否使用NetworkManager配置

有两种方法可以验证是通过" NetworkManager"配置以太网还是使用ip命令或者其他方法手动配置以太网:

使用nmcli con show列出活动连接

# nmcli con show
NAME  UUID                                  TYPE      DEVICE
eth0  31e959d2-1c5f-46ea-a122-1f4c0f74d938  ethernet  eth0

如果我们可以在输出中看到界面,则意味着该界面已配置为NetworkManager

或者在/etc/sysconfig/network-scripts/ifcfg-ethXX中为NM_CONTOLLED使用grep。

# grep NM_CONTROLLED /etc/sysconfig/network-scripts/ifcfg-eth1
NM_CONTROLLED=no

也可能会得到空白输出,在这种情况下,我们可以使用nmcli进行验证,但很可能是使用NetworkManager配置了该接口,这就是为什么我们看不到NM_CONTROLLED的任何原因。

因此,现在我们知道界面是否通过NetworkManager进行了配置。

暗示:

由于我已禁用一致的网络设备命名,因此接口显示为ethXX,在情况下,接口名称可能会有所不同。

方法1:使用systemctl重新启动NetworkManager

我们可以使用nmcli或者nmtui来配置网络。

一旦完成网络配置,就可以使用systemctl重新启动NetworkManager服务。

# systemctl restart NetworkManager

这将更新网络更改。但是,如果网络不是由NetworkManager管理的,则此命令不会更改接口配置。

方法2:使用ifup和ifdown

请谨慎使用此命令,因为这可能会导致我们可能用于SSH连接的活动接口关闭,从而使我们无法进入系统。通过控制台连接到服务器是恢复网络访问的唯一方法。

暗示:

对于RHEL/CentOS 7,我们可以不受限制地继续使用ifupifdown

在带有NetworkManager的RHEL/CentOS 8上

在RHEL/CentOS 8中,ifup和ifdown命令是NetworkManager rpm的一部分,这与较早的发行版是inscripts rpm的一部分不同。

# rpm -qf `which ifup`
NetworkManager-1.20.0-3.el8.x86_64

因此,由于使用的是NetworkManager,因此还可以使用ifup和ifdown刷新任何接口的网络配置。例如,我们对eth1进行了一些更改,因此要刷新更改,请先关闭接口,然后打开它

# ifdown eth1 && ifup eth1

重要的提示:

重要的是,以这种格式执行命令,就像尝试单独执行一样,否则服务器可能无法访问。

这将更新网络配置。

在没有NetworkManager的RHEL/CentOS 8上

在RHEL/CentOS 8上,如果网络接口不是由NetworkManager管理的,则必须安装network-scripts才能使用ifup和ifdown命令。

说明:

在RHEL系统上,我们必须具有RHN的有效订阅,或者我们可以配置本地脱机存储库,通过该本地脱机存储库,yum软件包管理器可以安装提供的rpm及其依赖项。

# dnf -y install network-scripts

接下来,我们可以检查ifup的rpm所有权。

# rpm -qf `which ifup`
NetworkManager-1.20.0-3.el8.x86_64
network-scripts-10.00.4-1.el8.x86_64

现在," ifup"是" NetworkManager"和" network-scripts" rpm的一部分。接下来,我们可以使用ifdown eth1 && ifup eth1

# ifdown eth1 && ifup eth1
WARN      : [ifdown] You are using 'ifdown' script provided by 'network-scripts', which are now deprecated.
WARN      : [ifdown] 'network-scripts' will be removed in one of the next major releases of RHEL.
WARN      : [ifdown] It is advised to switch to 'NetworkManager' instead - it provides 'ifup/ifdown' scripts as well.

对于ifup动作,也可以看到类似的WARN。

ifup和ifdown接口

由于添加了network-scripts只是为了支持后备行为,因此每次我们在不使用NetworkManager的情况下使用ifup或者ifdown时,都会抛出"警告"。

方法3:使用nmcli网络

我们还可以使用命令行工具nmcli网络来控制NetworkManager重新启动网络并更新网络配置。

# nmcli networking off && nmcli networking on

这个命令将关闭所有的NetworkManager接口,然后将它们打开。重要提示:以这种格式执行命令很重要,就像尝试单独执行一样,否则服务器可能无法访问,因为第一个命令将关闭所有的" NetworkManager"托管接口

方法4:上下使用nmcli con

使用" nmcli",我们还可以使用类似于传统" ifup"和" ifdown"的" nmcli con up"或者" con down"来停用和激活单个网络接口,而不用重新启动服务器上的所有网络接口。

# nmcli con down eth1 && nmcli con up eth1
Connection 'eth1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/14)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/15)

重要提示:以这种格式执行命令很重要,就像尝试单独执行一样,否则服务器可能无法访问,因为第一个命令将关闭所有的" NetworkManager"托管接口

方法5:使用nmtui

我们还有NetworkManagerTUI,它是nmcli命令的替代方案。不熟悉nmcli命令行的用户可以使用nmtui来管理网络。要使用nmtui停用或者激活网络接口,请在Linux服务器终端上以root用户身份执行nmtui。

# nmtui

这将打开一个窗口,然后选择"激活连接"以更新网络配置。

激活连接

选择我们要停用和重新激活的界面。

重要的提示:

如果我们停用活动接口,则SSH连接将丢失。如果打算重新启动网络以使用主界面,则必须从图形控制台使用" nmtui",而与SSH或者网络连接无关。

停用eth1

下一步激活相应的界面

激活eth1

界面激活后,我们可以返回并退出" nmtui"会话。

方法6:使用systemctl重新启动网络

暗示:

对于RHEL/CentOS 7,我们可以不受限制地继续使用ifupifdown

在RHEL/CentOS 8中,不赞成使用'initscripts'rpm,因此该命令在默认情况下将不起作用。我们必须从RHEL/CentOS 8存储库手动安装network-scriptsrpm,以便能够使用此命令重新启动网络。

说明:

在RHEL系统上,我们必须具有RHN的有效订阅,或者我们可以配置本地脱机存储库,通过该本地脱机存储库,yum软件包管理器可以安装提供的rpm及其依赖项。

# dnf -y install network-scripts

接下来,即使在RHEL/CentOS 8上,我们也应该能够使用legacy命令来重新启动网络接口

# systemctl restart network