Linux网络管理服务NetworkManager

一、Linux 网络管理概述

1.1 Linux 网络管理概述

早期的Linux发行版本里几乎所有的网络服务都是network服务,配置网络的方法,几乎只有创建网卡配置文件,添加网络参数,修改网络参数,然后重启network服务,让network服务加载网卡配置文件到内存,然后让内核读取内存里面的网卡配置文件来获取网络配置。

NetworkManager 是一个为系统提供检测和配置功能以便自动连接到网络的程序。NetworkManager 的功能对无线和有线网络都很有用。对于无线网络,NetworkManager 偏好已知的无线网络,并能切换到最可靠的网络。能感知 NetworkManager 的应用程序可以切换在线和离线模式。比起无线连接,NetworkManager 更偏好有线连接,且支持调制解调器连接和一些类型的 VPN。NetworkManager 最初由 Red Hat 开发,现在由 GNOME 管理。

NetworkManager 的设计目的是为了统一网络配置,统一网络配置的意思就是以后所有网络相关的配置都使用NetworkManager来实现

NetworkManager 服务提供了3种工具类配置网卡参数,无论哪种工具,都不需要手工的修改网卡配置文件。

要使用 NetworkManager 工具需先确认 NetworkManager 服务是开启的,如果服务不开启,就无法使用NetworkManager。

1
systemctl status NetworkManager

1.2 NetworkManager 网络管理工具

NetworkManager 提供三种方式管理主机网络:图形工具(nm-connection-editor )、伪图形工(nmtui) 和 命令行工具(nmcli )。

  • 图形工具(nm-connection-editor ): 需用登录图形桌面环境才能使用;
  • 伪图形工(nmtui): 通过终端字符,模拟出图形界面,其实看到的图形不是真正的图形,而是字符组出来的。
  • 命令行工具(nmcli): nmcli ( network manager cli command line interface) 是通过终端命令管理主机网络;

二、nmcli 命令行工具详解

2.1 nmcli networking

显示 NetworkManager 是否接管网络设置

1
2
root@host:~# nmcli networking
enabled

networking 可以简写为 n、ne、net、netw…… 所以以上命令可以简写为

查看网络连接状态

1
nmcli n connectivity

网络连接状态共有五种:full、limited(连网,但无法上网)、portal(连网,但需要登陆认证后才能上网)、none(没连网)和 unknown。

开启网络连接

1
nmcli n on

关闭网络连接

1
nmcli n off

2.2 nmcli general

显示系统网络状态

1
nmcli general status

general 可以简写为 g、ge、gen、gene……

status 是 general 的默认项,可以省略不写。所以,以上命令可简写为:

1
2
3
[root@master1 ~]# nmcli g
STATE   CONNECTIVITY  WIFI-HW  WIFI    WWAN-HW  WWAN
已连接  完全          已启用   已启用  已启用   已启用
  • STATE 显示网络是否连接;
  • CONNECTIVITY 与前面介绍的 nmcli n c 相同;
  • WIFI-HW 表示 WIFI 硬件开关、WIFI 表示 WIFI 软件开关;
  • WWAN-HW 表示 WWAN 硬件开关、WWAN 表示 WWAN 软件开关。

Tips: HW 代表 HardWare,WWAN 代表 Wireless Wide Area Network。

显示主机名

1
2
nmcli g hostname # 或
nmcli g h

更改主机名

1
2
nmcli g hostname newHostName # 或
nmcli g h newHostName

2.3 nmcli device 管理

1
nmcli device args

device 可以简写为 d、de、dev……

查看网卡和网卡配置文件的概述信息

1
2
3
4
5
6
7
[root@master1 ~]# nmcli device status
DEVICE           TYPE      STATE   CONNECTION
eth1             wifi      已连接  mubei
br-4fc17b0c28c3  bridge    已连接  br-4fc17b0c28c3
br-f1351335ee50  bridge    已连接  br-f1351335ee50
virbr0           bridge    已连接  virbr0
eth0             ethernet  不可用  --

status 是 device 的默认项,可以省略不写, 也可简写为 s。所以,以上命令可简写为:nmcli dnmcli d s

  • DEVICE:表示网卡名称(内核label)
  • TYPE: 网卡的类型(内核label)
  • STATE: 当前网卡的状态(指的是NetworkManager服务是否接管了这块网卡)
    • 如果 STATE 列是unmanaged,就表示该块网卡并没有被NetworkManager服务接管。如果网卡没有被NetworkManager服务接管,就意味着无法使用NetworkManager管理该网卡;
    • 如果 STATE 列是disconnected,意味着该块网卡,并没有使用任何配置文件
    • 如果 STATE 列是connected,意味着该块网卡,正在使用某个配置文件
    • 如果 STATE 列是connecting状态,就意味着该网卡正在获取ip地址
  • CONNECTION:表示当前网卡使用的配置文件是什么,如果有名字,就表示该网卡的配置文件就是那个名字。如果是"–“就表示该网卡当前没有配置文件。

删除网卡

1
nmcli device delete

delete 只能删除软网卡,不能删除硬件网卡

连接 / 断开网卡

1
2
nmcli device connect DEVICE     # 连接 / 打开 网络
nmcli device disconnect DEVICE  # 断开 / 关闭网络

指定一个网卡,就能建立 / 切断该网卡和当前配置文件的联系(断开/关闭网络) connect 可简写为 c 。 disconnect 可简写为 d 。

查看网卡信息

1
2
3
nmcli device show           # 查看所有网卡信息

nmcli device show  DEVICE   # 查看指定网卡信息

show 不可简写为 s,否则与 status 冲突,但可以简写为 sh

2.4 nmcli connection

显示所有网络连接的信息

1
nmcli connection show

connection 可以简写为 c、co、con、conn……

show 是 connection 的默认项,可以省略不写。

nmcli connection show 有一个 –active 参数,可以只显示当前启动的连接:

1
2
nmcli c s --active  # 或
nmcli c s -a        # 因为 show 后面有参数项,所以此时的 show 不能省

显示某一特定连接的详细信息(以 eth1 为例)

1
nmcli c s eth1

启动指定连接

1
nmcli c up eth1

如果 eth1 本来就处于连接状态,那此命令会重启 eth1。

关闭指定连接

1
nmcli c down eth1

关闭连接后,执行 nmcli c 命令, DEVICE 项将显示为 – 。

修改连接

1
2
nmcli c modify eth1  [ + | - ]选项 选项值  # 或
nmcli c m eth1  [ + | - ]选项 选项值

常用修改示例:

1
2
3
4
5
6
7
8
nmcli c m eth1 ipv4.address 192.168.80.10/24  # 修改 IP 地址和子网掩码
nmcli c m eth1 +ipv4.addresses 192.168.80.100/24
nmcli c m eth1 ipv4.method manual             # 修改为静态配置,默认是 auto
nmcli c m eth1 ipv4.gateway 192.168.80.2      # 修改默认网关
nmcli c m eth1 ipv4.dns 192.168.80.2          # 修改 DNS
nmcli c m eth1 +ipv4.dns 114.114.114.114      # 添加一个 DNS
nmcli c m eth1 ipv6.method ignored            # 将 IPv6 禁用,针对CentOS8,三个可选项:disabled、auto、manual
nmcli c m eth1 connection.autoconnect yes     # 开机启动

注意,必须先修改 ipv4.address,然后才能修改 ipv4.method!

用空引号"“代替选项的值,可将选项设回默认值(以 ipv4.method 为例):

选项有很多,详细信息可以通过以下命令查看:

1
man 5 nm-settings-nmcli

新增连接

1
2
nmcli c add tyep 连接类型 选项 选项值  # 或
nmcli c a tyep 连接类型 选项 选项值

type 为必选项,我们通常用到的是 802-3-ethernet(别名 ethernet)。

选项与前面介绍的“修改连接”中的选项一样,其中重要的几个选项:

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

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

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

下面给出一个示例:

1
nmcli c a type ethernet con-name ens36 ifname ens36

删除指定连接

1
2
nmcli c delete eth1  # 或
nmcli c de eth1      # delete 不可简写为 d,否则与 down 冲突,但可以简写为 de

重载所有连接的配置文件

1
2
nmcli c reload  # 或
nmcli c r

重载某一指定连接的配置文件

1
2
nmcli c load eth1  # 或
nmcli c l eth1