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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值