如何在RHEL / CentOS 8中使用NetworkManager管理网络

在RHEL和CentOS 8中,网络服务由NetworkManager守护程序管理,并用于动态配置和控制网络设备。

RHELCentOS 8中 ,网络服务由NetworkManager守护程序管理,它用于动态配置和控制网络设备,并在可用时保持连接状态并保持活动状态。

NetworkManager具有许多优点,例如使用命令行界面和图形用户界面工具支持轻松的网络设置和管理,通过D-Bus提供API,允许查询和控制网络配置,支持配置灵活性等等。

此外,还可以使用文件和Cockpit Web控制台配置NetworkManager ,它支持使用自定义脚本来根据连接状态启动或停止其他服务。

另请参阅如何使用“ nmcli”工具配置和管理网络连接

在继续之前,以下是有关CentOS / RHEL 8中联网的其他一些重要要点:

  • 仍然支持传统的ifcfg类型配置(例如ifcfg-eth0ifcfg-enp0s3 )文件。
  • 网络脚本已弃用,默认情况下不再提供。
  • 最少的安装提供了通过nmcli工具调用NetworkManager的ifupifdown脚本的新版本。
  • 要运行ifupifdown脚本,必须运行NetworkManager

在CentOS / RHEL 8上安装NetworkManager

NetworkManager应该预先安装在CentOS / RHEL 8基本安装上,否则,您可以使用DNF软件包管理器进行安装,如图所示。

# dnf install NetworkManager
在CentOS 8中安装网络管理器

在CentOS 8中安装网络管理器

NetworkManager的全局配置文件位于/etc/NetworkManager/NetworkManager.conf中 ,其他配置文件位于/ etc / NetworkManager /中

NetworkManager配置文件

NetworkManager配置文件

在CentOS / RHEL 8上使用Systemctl管理NetworkManager

CentOS / RHEL 8和其他采用systemd的现代Linux系统(系统和服务管理器)中,使用systemctl工具管理服务。

以下是用于管理NetworkManager服务的有用的systemctl命令

检查NetworkManager的状态

默认情况下,最小安装的CentOS / RHEL 8应该已启动NetworkManager并被启用以在启动时自动启动。 您可以使用以下命令来检查NetworkManager是否处于活动状态,已启用并打印NetworkManager的运行时状态信息。

# systemctl is-active NetworkManager
# systemctl is-enabled NetworkManager
# systemctl status NetworkManager 
检查NetworkManager服务

检查NetworkManager服务

启动NetworkManager

如果NetworkManager没有运行,则可以通过简单运行来启动它。

# systemctl start NetworkManager

停止NetworkManager

要出于某种原因停止或停用NetworkManager ,请发出以下命令。

# systemctl stop NetworkManager

重新启动NetworkManager

如果对接口配置文件或NetworkManager守护程序的配置(通常位于/ etc / NetworkManager /目录下)进行了任何更改,则可以重新启动(停止然后再启动)NetworkManager以应用更改,如图所示。

# systemctl restart NetworkManager

重新加载NetworkManager

要在不重新启动服务的情况下重新加载NetworkManager守护程序的配置(而不是systemd的单元配置文件),请运行以下命令。

# systemctl reload NetworkManager

使用NetworkManager工具并使用ifcfg文件

NetworkManager支持一些工具供用户与其交互,这些工具是:

  1. nmcli –用于配置网络的命令行工具。
  2. nmtui –一个简单的基于curses的文本用户界面,还用于配置和管理newtwork界面连接。
  3. 其他工具包括nm-connection-editorcontrol-center网络连接图标 (均在GUI下)。

要列出NetworkManager检测到的设备,请运行nmcli命令

 
# nmcli device 
OR
# nmcli device status
列出NetworkManager检测到的设备

列出NetworkManager检测到的设备

要查看所有活动的连接,请运行以下命令(请注意,如果没有-a ,它将列出可用的连接配置文件)。

# nmcli connection show -a
查看活动的网络连接

查看活动的网络连接

在CentOS / RHEL 8上设置静态IP地址

特定于网络接口的配置文件位于/ etc / sysconfig / network-scripts /目录中。 您可以编辑任何这些文件,例如,为CentOS / RHEL 8服务器设置静态IP地址。

# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

这是用于设置静态IP地址的示例配置。

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=e81c46b7-441a-4a63-b695-75d8fe633511
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.0.110
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
PEERDNS=no
查看网络接口配置

查看网络接口配置

保存更改后,您需要重新加载所有连接配置文件或重新启动NetworkManager才能应用新更改。

# nmcli connection reload
OR
# systemctl restart NetworkManager

基于网络连接性启动或停止网络服务/脚本

NetworkManager有一个有用的选项,允许用户执行服务(例如NFSSMB等)或基于网络连接的简单脚本。

例如,如果要在网络之间切换后使用sshfs自动挂载远程目录挂载SMB共享挂载NFS共享 您可能希望在NetworkManager启动并运行(所有连接均处于活动状态)之前执行此类网络服务。

此功能由NetworkManager-dispatcher服务提供(必须启动并启用它才能在系统启动时自动启动)。 服务运行后,您可以将脚本添加到/etc/NetworkManager/dispatcher.d目录。

所有脚本必须是可执行的且可写的,并且由root拥有,例如:

# chown root:root /etc/NetworkManager/dispatcher.d/10-nfs-mount.sh
# chmod 755 /etc/NetworkManager/dispatcher.d/10-nfs-mount.sh

重要说明 :调度程序脚本将在连接时以字母顺序执行,而在断开连接时以相反的字母顺序执行。

使用旧版网络脚本

如前所述, CentOS / RHEL 8不推荐使用网络脚本,默认情况下不安装网络脚本。 如果仍要使用网络脚本 ,则需要安装network-scripts软件包。

# yum install network-scripts

安装完成后,该软件包将提供新版本的ifupifdown脚本,这些脚本将通过我们在上面介绍的nmcli工具调用NetworkManager 请注意, NetworkManager应该正在运行,以便您运行这些脚本。

有关更多信息,请参见systemctlNetworkManager手册页。

# man systemctl
# man NetworkManager

这就是我们在本文中准备的所有内容。 您可以通过以下反馈表寻求任何要点的澄清或提出问题或对本指南进行任何补充。