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 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值