ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

NetworkManager工具学习记录

NetworkManager工具学习记录

一、概述

经常会遇到在不同的Linux系统中配置网络的时候,修改的配置文件和语法都不一样。这种情况非常不利于运维人员日常对操作系统的维护和管理。为了解决这个问题,NetworkManager工具就应用而生了。通过使用NetworkManager工具,可以实现不同的Linux操作系统中对网络的管理和配置统一。

NetworkManager工具的功能非常好用,甚至在配置时出现语法错误,也不会影响当前网络,因为工具会暂停修改该网络。如果原来的网络配置文件被误删除了,也可以通过NetworkManager工具创建一个和原先参数一样的网络接口,该配置文件就会自动的重新生成。使用NetworkManager工具配置的所有网络配置文件会存放于/etc/NetworkManager/system-connections/目录下。

network-manager接管网络后使用nmcli命令修改网卡的相关配置后都会永久生效(重启网卡后依旧生效)。

二、NetworkManager的命令行工具

nmcli是NetworkManager的一个命令行工具,它提供了使用命令行配置由NetworkManager管理网络连接的方法(nm 代表 NetworkManager,cli 代表 Command-Line)。

2.1 nmcli的常用参数介绍

[root@openeuler2203-01 network-scripts]# nmcli help Usage: nmcli [OPTIONS] OBJECT { COMMAND | help } OPTIONS -a, --ask ask for missing parameters -c, --colors auto|yes|no whether to use colors in output -e, --escape yes|no escape columns separators in values -f, --fields <field,...>|all|common specify fields to output -g, --get-values <field,...>|all|common shortcut for -m tabular -t -f -h, --help print this help -m, --mode tabular|multiline output mode -o, --overview overview mode -p, --pretty pretty output -s, --show-secrets allow displaying passwords -t, --terse terse output -v, --version show program version -w, --wait <seconds> set timeout waiting for finishing operations OBJECT g[eneral] NetworkManager's general status and operations n[etworking] overall networking control r[adio] NetworkManager radio switches c[onnection] NetworkManager's connections d[evice] devices managed by NetworkManager a[gent] NetworkManager secret agent or polkit agent m[onitor] monitor NetworkManager changes

2.2 nmcli genneral

用于显示NetworkManager的一般状态和操作。

常用的命令如下:

显示系统的网络状态

nmcli general status

[root@openeuler2203-01 network-scripts]# nmcli general status STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled [root@openeuler2203-01 network-scripts]# nmcli g s STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled [root@openeuler2203-01 network-scripts]# nmcli gen s STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN connected full enabled enabled enabled enabled

还可以显示和修改主机名,命令如下

nmcli general hostname

nmcli genneral hostname newhostname

# 显示主机名 [root@openeuler2203-01 network-scripts]# nmcli general hostname openeuler2203-01 [root@openeuler2203-01 network-scripts]# nmcli g h openeuler2203-01 # 修改主机名 [root@openeuler2203-01 network-scripts]# nmcli general hostname openeuler2203 [root@openeuler2203-01 network-scripts]# nmcli general hostname openeuler2203 [root@openeuler2203-01 network-scripts]#

注意:

修改主机名之后,需要重启NetworkManager来使修改生效。这句话是别人说的,其实不用。只要退出终端连接工具之后,重新登陆之后就能看到主机名成已经修改了。

2.3 nmcli networking

[root@openeuler2203 ~]# nmcli networking help Usage: nmcli networking { COMMAND | help } COMMAND := { [ on | off | connectivity ] } on off connectivity [check]

显示NetworkManager是否接管了网络,使用如下命令。如果要使用nmcli来配置和管理网络,必须是NetworkManager接管网络之后才能操作的事情。

# 使用如下命令可以检查NM是否接管了网络 [root@openeuler2203 ~]# nmcli networking enabled # 可以看到回显的信息是enabled,说明NM已经接管网络。 # 可以使用以下命令开启或者关闭NM对网络的接管状态 nmcli networking on nmcli networking off 或者 nmcli n on nmcli n off

可以通过nmcli networking查看操作系统网络的连接状态

[root@openeuler2203 ~]# nmcli networking connectivity full # 网络的状态有五种,下面简单介绍一下 full: 联网 limited: 联网,但是无法上网 portal: 联网,但是需要登陆认证 none: 没网 unknown: 未知

2.4 nmcli connection

命令的语法如下

[root@openeuler2203 ~]# nmcli connection help Usage: nmcli connection { COMMAND | help } COMMAND := { show | up | down | add | modify | clone | edit | delete | monitor | reload | load | import | export } show [--active] [--order <order spec>] show [--active] [id | uuid | path | apath] <ID> ... up [[id | uuid | path] <ID>] [ifname <ifname>] [ap <BSSID>] [passwd-file <file with passwords>] down [id | uuid | path | apath] <ID> ... add COMMON_OPTIONS TYPE_SPECIFIC_OPTIONS SLAVE_OPTIONS IP_OPTIONS [-- ([+|-]<setting>.<property> <value>)+] modify [--temporary] [id | uuid | path] <ID> ([+|-]<setting>.<property> <value>)+ clone [--temporary] [id | uuid | path ] <ID> <new name> edit [id | uuid | path] <ID> edit [type <new_con_type>] [con-name <new_con_name>] delete [id | uuid | path] <ID> monitor [id | uuid | path] <ID> ... reload load <filename> [ <filename>... ] import [--temporary] type <type> file <file to import> export [id | uuid | path] <ID> [<output file>]

第一个常用的操作,是显示所有的网络连接

[root@openeuler2203 ~]# nmcli connection show NAME UUID TYPE DEVICE ens33 4cf75388-375f-43df-80eb-4e635d688c16 ethernet ens33 docker0 7af6246e-a205-4cbb-aad4-8c7aced6bc98 bridge docker0 virbr0 02c4f0ec-f34e-4bad-9786-670a571590e1 bridge virbr0

说明:

命令的简写nmcli c s或者nmcli c因为show是nmcli connection的默认选项,因此可以省略。

如果只想查看已经启动的或者已经激活的连接,可以使用下面的命令来实现

[root@openeuler2203 ~]# nmcli connection show --active NAME UUID TYPE DEVICE ens33 4cf75388-375f-43df-80eb-4e635d688c16 ethernet ens33 docker0 7af6246e-a205-4cbb-aad4-8c7aced6bc98 bridge docker0 virbr0 02c4f0ec-f34e-4bad-9786-670a571590e1 bridge virbr0 # 命令简写 [root@openeuler2203 ~]# nmcli c s -a NAME UUID TYPE DEVICE ens33 4cf75388-375f-43df-80eb-4e635d688c16 ethernet ens33 docker0 7af6246e-a205-4cbb-aad4-8c7aced6bc98 bridge docker0 virbr0 02c4f0ec-f34e-4bad-9786-670a571590e1 bridge virbr0 # 启动或者关闭连接的命令如下 nmcli connection up/dwon 设备名 nmcli c up/down 设备名

设备名就是查询结果中DEVICE对应的列。

一般情况下,给一台主机刚安装好操作系统之后,接口设备的连接状态都是正常的,我们经常需要做的操作都是和修改有关的,这里只是简单的介绍一下如何新增一个连接,下面主要说一下如何修改连接。

新增一个连接的命令参考如下:

nmcli c add type 连接类型 选项 选项值 nmcli c a type 连接类型 选项 选项值 [root@openeuler2203-01 ~]# nmcli connection add type ethernet con-name ens199 ifname ens199 Connection 'ens199' (5e08e8ec-e073-4fe7-aa1b-1801f945bdf0) successfully added. [root@openeuler2203-01 ~]# nmcli c show NAME UUID TYPE DEVICE ens33 4cf75388-375f-43df-80eb-4e635d688c16 ethernet ens33 docker0 7af6246e-a205-4cbb-aad4-8c7aced6bc98 bridge docker0 virbr0 02c4f0ec-f34e-4bad-9786-670a571590e1 bridge virbr0 ens199 5e08e8ec-e073-4fe7-aa1b-1801f945bdf0 ethernet --

可以看到命令执行成功,查看连接信息也可以发现多了一个ens199的信息

当然这个新增的连接的当前是没有启动的状态,设备那一列显示的是--

启动设备的名就是nmcli c up 接口的名称

如果要删除一个连接,可以使用如下的命令

nmcli c delete ens199

或者

nmcli c de ens199

注意这里简写的时候,delete不能简写成d,因为会和down冲突。

另外,在创建连接的时候,也可以同时配置好IP地址,网关,网卡的开启自启动的网络配置。

需要特别注意的几个参数还有:

connection.id(别名 con-name):连接名

connection.interface-name(别名 ifname):设备名

connection.autoconnect(别名 autoconnect):是否开机自启,其值只能是 yes 或 no,默认 yes

平常工作中经常用到的是网络连接的配置修改操作

nmcli c modify 设备名 [+ | -]选项 选项值 nmcli c m 设备名 [+ | -]选项 选项值 下面演示一下一些常用的修改示例 nmcli c m ens33 ipv4.address 192.18.43.100/24 # 修改IP地址和子网掩码 nmcli c m ens33 +ipv4.address 192.18.43.200/24 # 添加IP地址 nmcli c m ens33 ipv4.method manual # 修改为静态配置,默认是auto nmcli c m ens33 ipv4.gateway 192.18.43.1 # 修改默认网关 nmcli c m ens33 ipv4.dns 8.8.8.8 # 修改dns nmcli c m ens33 connection.autoconnect yes # 开启启动 注意: 修改method之前,需要先修改address 使用空引号""代替选项只,可以将选项设为默认值

注意:配置好之后需要重启操作系统,才能查看到对应的接口已经启动。否则nmcli c s查询不到

有的时候,也有人习惯是去修改网卡配置文件,这就需要考虑修改后如何生效的问题。

我们可以重载一下网卡配置文件来使修改生效,操作命令如下:

nmcli c reload # 或 nmcli c r nmcli c load ifcfg-ens33 # 或 nmcli c l ifcfg-ens33 ## 指定文件 nmcli connection load /etc/sysconfig/network-scripts/ifcfg-ens199

2.5 nmcli device

[root@openeuler2203 ~]# nmcli device help Usage: nmcli device { COMMAND | help } COMMAND := { status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp } status show [<ifname>] set [ifname] <ifname> [autoconnect yes|no] [managed yes|no] connect <ifname> reapply <ifname> modify <ifname> ([+|-]<setting>.<property> <value>)+ disconnect <ifname> ... delete <ifname> ... monitor <ifname> ... wifi [list [ifname <ifname>] [bssid <BSSID>] [--rescan yes|no|auto]] wifi connect <(B)SSID> [password <password>] [wep-key-type key|phrase] [ifname <ifname>] [bssid <BSSID>] [name <name>] [private yes|no] [hidden yes|no] wifi hotspot [ifname <ifname>] [con-name <name>] [ssid <SSID>] [band a|bg] [channel <channel>] [password <password>] wifi rescan [ifname <ifname>] [[ssid <SSID to scan>] ...] wifi show-password [ifname <ifname>] lldp [list [ifname <ifname>]]

显示所有网络接口的设备状态

nmcli device status

显示所有设备的详细信息,需要指定设备名

nmcli device show ens33

连接设备或者断开设备的命令如下

nmcli device connect ens33

nmcli device disconnect ens33

更新设备

nmcli device reapply ens33

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进