如何在 RHEL/CentOS 8 中使用 NetworkManager 管理网络
在RHEL和CentOS 8中,网络服务由NetworkManager守护程序管理,用于动态配置和控制网络设备并在可用时保持连接处于开启和活动状态。
NetworkManager具有许多优点,例如支持使用命令行界面和图形用户界面工具轻松进行网络设置和管理,通过 D-Bus 提供允许查询和控制网络配置的 API,支持配置灵活性等等。
此外,NetworkManager还可以使用文件和Cockpit Web控制台进行配置,并支持使用自定义脚本根据连接状态启动或停止其他服务。
在进一步讨论之前,以下是有关CentOS/RHEL 8中的网络需要注意的一些其他重要事项:
- 传统的ifcfg类型配置(例如ifcfg-eth0、ifcfg-enp0s3)文件仍然受支持。
- 网络脚本已被弃用,不再默认提供。
- 最小安装提供了通过nmcli 工具调用 NetworkManager 的ifup和ifdown脚本的新版本。
- 要运行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
如果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支持一些供用户与其交互的工具,包括:
- nmcli – 用于配置网络的命令行工具。
- nmtui — 一个简单的基于 curses 的文本用户界面,也用于配置和管理网络接口连接。
- 其他工具包括nm-connection-editor、control-center和网络连接图标(均在 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中已弃用,并且默认情况下不会安装。如果您仍想使用网络脚本,则需要安装network-scripts包。
# yum install network-scripts
安装后,此软件包将提供新版本的ifup和ifdown脚本,它们通过我们上面介绍的nmcli工具调用NetworkManager 。请注意,您必须运行NetworkManager才能运行这些脚本。
有关更多信息,请参阅systemctl和NetworkManager手册页。
# man systemctl # man NetworkManager
这就是我们在本文中准备的全部内容。您可以通过下面的反馈表寻求对任何要点的澄清或提出问题或对本指南进行任何补充。