如何在 RHEL/CentOS 8 中使用 NetworkManager 管理网络
在 RHEL 和 CentOS 8 中,网络服务由 NetworkManager 守护进程管理,用于动态配置和控制网络设备并保持连接并在可用时激活。
NetworkManager 具有许多优点,例如支持使用命令行界面和图形用户界面工具轻松进行网络设置和管理,通过 D-Bus 提供 API,允许查询和控制网络配置,支持配置灵活性等等。
此外,NetworkManager还可以使用文件和Cockpit Web控制台进行配置,它支持使用自定义脚本根据连接状态启动或停止其他服务。
另请阅读:如何使用“nmcli”工具配置和管理网络连接
在我们进一步讨论之前,以下是有关 CentOS/RHEL 8 中网络的其他一些需要注意的要点:
- 仍然支持传统的 ifcfg 类型配置(例如 ifcfg-eth0、ifcfg-enp0s3)文件。
- 网络脚本已弃用,默认情况下不再提供。
- 最小安装提供了新版本的 ifup 和 ifdown 脚本,它们通过 nmcli 工具调用 NetworkManager。
- 要运行 ifup 和 ifdown 脚本,NetworkManager 必须正在运行。
在 CentOS/RHEL 8 上安装 NetworkManager
NetworkManager 应预安装在 CentOS/RHEL 8 基本安装上,否则,您可以使用 DNF 包管理器进行安装,如图所示。
dnf install NetworkManager
NetworkManager 的全局配置文件位于 /etc/NetworkManager/NetworkManager.conf,其他配置文件可在 /etc/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未运行,您只需运行即可启动它。
systemctl start NetworkManager
停止网络管理器
要出于某种原因停止或停用 NetworkManager,请发出以下命令。
systemctl stop NetworkManager
重新启动网络管理器
如果您对接口配置文件或 NetworkManager 守护程序的配置(通常位于 /etc/NetworkManager/ 目录下)进行了任何更改,您可以重新启动(停止然后启动)NetworkManager 以应用更改,如下所示显示。
systemctl restart NetworkManager
重新加载网络管理器
要在不重新启动服务的情况下重新加载 NetworkManager 守护进程的配置(但不是 systemd 的单元配置文件),请运行以下命令。
systemctl reload NetworkManager
使用 NetworkManager 工具和使用 ifcfg 文件
NetworkManager 支持一些供用户与其交互的工具,它们是:
- nmcli – 用于配置网络的命令行工具。
- nmtui – 一个简单的基于curses的文本用户界面,也用于配置和管理newtwork界面连接。
- 其他工具包括nm-connection-editor、控制中心和网络连接图标(均在 GUI 下)。
要列出 NetworkManager 检测到的设备,请运行 nmcli 命令。
nmcli device
OR
nmcli device status
要查看所有活动连接,请运行以下命令(请注意,如果没有 -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 有一个有用的选项,允许用户执行基于网络连接的服务(例如NFS、SMB 等)或简单脚本。
例如,如果您想在网络之间切换后自动使用 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 中已被弃用,并且默认情况下不会安装。如果您仍想使用网络脚本,则需要安装网络脚本包。
yum install network-scripts
安装后,此软件包提供新版本的 ifup 和 ifdown 脚本,它们通过 nmcli 工具调用 NetworkManager我们已经在上面看过了。请注意,NetworkManager 应该正在运行,以便您运行这些脚本。
有关详细信息,请参阅 systemctl 和 NetworkManager 手册页。
man systemctl
man NetworkManager
这就是我们在本文中准备的全部内容。您可以通过下面的反馈表寻求对任何要点的澄清或提出问题或对本指南进行任何补充。