问题:
- 网络接口处于unmanaged状态,网络不可达连接失败
参考IP地址网络配置的五种方法文章配置网络。
在Settings没有Wired有线网络设置键,右上角也没有结构图标识:
按照配置网络时的启动命令:
报错!!!
错误:连接激活失败:未找到适合此连接的设备(设备不可用,因为设备严格不受管理)。
表明nmcli工具未接管网络设置,无法使用该命令将设备启动,那么我们一起了解nmcli工具,解决这个问题吧!!!
nmcli工具
(一)RedHat9网络管理方法
Red Hat Enterprise Linux (RHEL) 和许多基于 RHEL 的发行版(如 CentOS)提供了两种主要的网络管理方法:NetworkManager 和传统的 network 服务。但在最新版本的 RHEL(比如 RHEL 7 及以后版本),NetworkManager 已成为推荐的网络管理工具,特别是对于动态网络配置和无线网络管理而言。
-
NetworkManager:是现代 Linux 系统中的默认网络管理工具,它提供了一个统一的工具来管理网络配置,并且支持广泛的网络设备和连接类型,包括有线、无线(Wi-Fi)、移动宽带(如 LTE/3G)、VPN 以及 DSL 连接等。NetworkManager 旨在简化复杂的网络配置和自动化日常网络管理任务。它提供了命令行界面(nmcli)、图形界面(如 GNOME 的网络设置)和文本用户界面(nmtui)。
-
传统 network 服务:在较旧的 RHEL 版本中(如 RHEL 6 及以前),传统的 network 服务是管理网络配置的标准方法。这种方法依赖于在 /etc/sysconfig/network-scripts/ 目录下编辑配置文件来手动配置网络接口。虽然这种方法在一些特定的服务器环境中仍然有其用歹,但它不如 NetworkManager 灵活,特别是在需要动态配置网络的情况下。
可以看到IP地址网络配置的五种方法这篇文章都用到了NetworkManager和传统network服务这两种网络管理方式来配置网络
(二)NetworkManager 概述
在 Red Hat Enterprise Linux 9中,默认网络服务由 NetworkManager 提供,NetworkManager 是一个动态网络控制和配置守护程序,用于在网络设备和连接可用时保持正常运行和活动状态。仍然支持传统类型的配置文件。
1、使用 NetworkManager 的好处
使用 NetworkManager 的主要好处是:
- 使网络管理更轻松:NetworkManager 确保网络连接正常工作。当它检测到系统中没有网络配置但有网络设备时,NetworkManager 会创建临时连接以提供连接。
- 为用户提供轻松的连接设置:NetworkManager 通过不同的工具(GUI、nmtui、nmcli)提供管理。
- 支持配置灵活性。例如,配置 WiFi 接口时,NetworkManager 会扫描并显示可用的 wifi 网络。您可以选择一个接口,NetworkManager 会在重新启动过程后显示所需的凭据,提供自动连接。NetworkManager 可以配置网络别名、IP 地址、静态路由、DNS 信息和 VPN 连接,以及许多特定于连接的参数。
- 通过 D-Bus 提供 API,允许应用程序查询和控制网络配置和状态。通过这种方式,应用程序可以通过D-BUS检查或配置网络。
- 在重新启动过程后维护设备的状态,并接管在重新启动期间设置为托管模式的接口。
- 处理未显式设置为非托管但由用户或其他网络服务手动控制的设备。
2、管理NetworkManager
- 默认情况下,NetworkManager 在 Red Hat Enterprise Linux 中安装。如果没有,以 root 用户身份输入:
# yum install NetworkManager
- 检查 NetworkManager 的状态
# systemctl status NetworkManager
- 启动 NetworkManager :
# systemctl start NetworkManager
# systemctl stop NetworkManager
- 在引导时自动启用 NetworkManager;禁止自启 :
# systemctl enable NetworkManager
# systemctl disable NetworkManager
3、 nmcli工具
nmcli (NetworkManager 命令行界面)命令行工具用于控制 NetworkManager 和报告网络状态。
- nmcli 用于创建、显示、编辑、删除、激活和停用网络连接,以及控制和显示网络设备状态。
(三)nmcli命令
nmcli有四类常用命令:n、g、c、d
1、nmcli networking
- 显示NetworkManager是否接管网络设置:
# nmcli networking
简写为:
# nmcli n
disabled
- 查看网络连接状态:
# nmcli n connectivity
简写为:
# nmcli n c
none #没连网
网络连接状态共有五种:full、limited(连网;但无法上网)、portal(连网,但需要登陆认证后才能上网)、none(没连网)和 unknown。
- 开启、关闭网络连接:
# nmcli n on #开启
# nmcli n off #关闭
2、nmcli general
- 显示网络状态:
# nmcli general status
简写为:
# nmcli g
命令结果如下:
其中参数:
STATE 显示网络是否连接;
CONNECTIVITY网络连接状态为full,已连网;
WIFI-HW 表示 WIFI 硬件开关;
WIFI 表示 WIFI 软件开关;
WWAN-HW 表示 WWAN 硬件开关;
WWAN 表示 WWAN 软件开关;
3、nmcli connection
- 显示所有网络连接的信息:
# nmcli connection show
简写为:
# nmcli c
# nmcli c s -active #显示当前启动的连接
简写为:
# nmcli c s -a
命令结果如下:
- 显示某一设备连接的详细信息(以ens160为例):
# nmcli c s ens160
- 启动、关闭指定连接设备:
# nmcli c up ens160 #启动,或者重启
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
# nmcli c down ens160 #关闭
Connection 'ens160' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
4、nmcli device
- 显示所有网络接口设备的状态:
# nmcli device status
简写为:
# nmcli d
命令结果如下:
显示:
DEVICE(设备):此列列出了网络接口设备的名称。
lo:通常是环回接口,用于设备内部的通信。
ens160:通常是以系统命名约定命名的以太网接口。
TYPE(类型):此列指定了网络接口的类型。
loopback:表示环回接口,用于设备内部的通信。
ethernet:表示以太网接口,用于网络通信。
STATE(状态):此列显示接口的当前状态。
connected (externally):表示环回接口 (lo) 已连接并在外部正常运行。这是环回接口的正常状态。
disconnected:表示以太网接口 (ens160) 未连接到网络。
CONNECTION(连接):此列通常显示与接口关联的网络连接。
lo:表示环回接口 (lo) 连接到自身,符合预期。
–:表示以太网接口 (ens160) 目前没有活动的网络连接。
- 显示所有设备的详细信息:
# nmcli d show
简写为:
# nmcli d sh
- 显示某一特定设备的详细信息:
# nmcli d sh ens160
- 连接设备:
# nmcli d connect ens33
简写为:
# nmcli d c ens33
(四)解决报错
在了解nmcli相关命令后,我们一起来输入命令解决
root@localhost ~]# nmcli networking #查看,未管理网络设置
disabled
[root@localhost ~]# nmcli n connectivity #未连网
none
[root@localhost ~]# nmcli n on #开启网络连接,则setting中的Wired设置出现,右上角的结构图标也出现了
[root@localhost ~]# nmcli networking #查看,已开启nmcli网络连接
enabled
[root@localhost ~]# nmcli n connectivity #查看连接状态,已连网
full
[root@localhost ~]# nmcli general #显示网络状态,已连网
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN METERED
connected full missing enabled missing enabled no (guessed)
[root@localhost ~]# nmcli device #显示所有网络接口状态为connect
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160
lo loopback connected (externally) lo
#如果ens160的网络接口状态不是connect则输入以下命令
[root@localhost ~]# nmcli c up ens160 #启动,或者重启ens160网络接口设备
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)
测试:
若出现其他问题,可以参考nmcli命令或者参考如下文章自行解决:
[参考文章]:https://zhuanlan.zhihu.com/p/395236748