一、简介
NetworkManager服务是管理和监控网络设置的守护进程,是2004年RedHat启动的项目,皆在能够让Linux用户更轻松的处理现代网络需求,尤其是无线网络,能够自动发现网卡并配置IP地址。Centos7之前的版本都是通过network.service管理网络配置。到了Centos7就同时支持network.service和NetworkManager.service(简称NM),相当于在Centos7的一个过渡,默认情况下这2个服务都有开启,但是因为NetworkManager.service当时的兼容性不好,大部分人都会将其关闭。在RHEL 8/Centos 8上已废弃network.service(默认不安装),只能通过NetworkManager进行网络配置。
NetworkManager的作用:
NetworkManager主要管理2个对象: Connection(网卡连接配置) 和 Device(网卡设备),他们之间是多对一的关系,但是同一时刻只能有一个Connection对于Device才生效。
在RHEL 8/Centos 8有三种方法配置网络:
- 通过nmcli connection add命令配置,会自动生成ifcfg文件。
- 手动配置ifcfg文件,通过nmcli connection reload来加载生效。
- 手动配置ifcfg文件,通过传统network.service来加载生效。
NetworkManager在系统中的管理工具为nmcli
- 1
二、nmcli简单使用
2.1、nmcli命令的选项与参数
语法:
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
2.1、general 常规选项
命令格式:nmcli general {status|hostname|permissions|logging}
命令描述:使用此命令可以显示网络管理器状态和权限,你可以获取和更改系统主机名,以及网络管理器日志记录级别和域。
2.1.1、显示网络管理器的整体状态(status)
$ nmcli general status
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
2.1.2、获取主机名或该更主机名(hostname)
# 查询主机名
$ nmcli general hostname
centos8-nat-168-182-152
# 设置主机名
$ nmcli general hostname centos8-nat-168-182-152-test
$ hostname
centos8-nat-168-182-152-test
2.1.3、显示当前用户对网络管理器可允许的操作权限(permissions)
$ nmcli general permissions
PERMISSION VALUE
org.freedesktop.NetworkManager.checkpoint-rollback yes
org.freedesktop.NetworkManager.enable-disable-connectivity-check yes
org.freedesktop.NetworkManager.enable-disable-network yes
org.freedesktop.NetworkManager.enable-disable-statistics yes
org.freedesktop.NetworkManager.enable-disable-wifi yes
org.freedesktop.NetworkManager.enable-disable-wimax yes
org.freedesktop.NetworkManager.enable-disable-wwan yes
org.freedesktop.NetworkManager.network-control yes
org.freedesktop.NetworkManager.reload yes
org.freedesktop.NetworkManager.settings.modify.global-dns yes
org.freedesktop.NetworkManager.settings.modify.hostname yes
org.freedesktop.NetworkManager.settings.modify.own yes
org.freedesktop.NetworkManager.settings.modify.system yes
org.freedesktop.NetworkManager.sleep-wake yes
org.freedesktop.NetworkManager.wifi.scan yes
org.freedesktop.NetworkManager.wifi.share.open yes
org.freedesktop.NetworkManager.wifi.share.protected yes
2.1.4、获取和更改网络管理器日志记录级别和域,没有任何参数当前日志记录级别和域显示(loggin)
$ nmcli general logging
LEVEL DOMAINS
INFO PLATFORM,RFKILL,ETHER,WIFI,BT,MB,DHCP4,DHCP6,PPP,IP4,IP6,AUTOIP4,DNS,VPN,SHARING,SUPPLICANT,AGENTS,SETTINGS,SUSPEND,CORE,DEVICE,OLPC,INFINIBAND,FIREWALL,ADSL,BOND,VLAN,BRIDGE,TEAM,CONCHECK,DCB,DISPATCH,AUDIT,SYSTEMD,PROXY
2.2、networking 网络控制
命令格式:nmcli networking {on|off|connectivity}
命令描述:查询网络管理器网络状态,开启和关闭网络
选项:
- on: 禁用所有接口
- off: 开启所有接口
- connectivity:获取网络状态,可选参数checl告诉网络管理器重新检查连接性,否则显示最近已知的状态。而无需重新检查。(可能的状态如下所示)
- none: 主机为连接到任何网络
- portal: 无法到达完整的互联网
- limited: 主机已连接到网络,但无法访问互联网
- full: 主机连接到网络,并具有完全访问
- unknown: 无法找到连接状态
2.2.1、获取网络状态
$ nmcli networking connectivity
full
2.2.2、重启所有网络接口
$ nmcli networking off && nmcli networking on
2.3、radio 无线限传输控制
命令格式:nmcli radio {all|wifi|wwan}
显示无线开关状态,或启用和禁用开关
2.3.1、显示无线状态
$ nmcli radio all
WIFI-HW WIFI WWAN-HW WWAN
enabled enabled enabled enabled
$ nmcli radio wifi
enabled
$ nmcli radio wwan
enabled
2.4、monitor 活动监视器
活动监视器(ACTIVITY MONITOR)
观察网络管理器活动。监视连接的变化状态、设备或连接配置文件。
2.5、connection 连接管理
命令格式:nmcli connection {show|up|down|modify|add|edit|clone|delete|monitor|reload|load|import|export}
这是主要使用的一个功能。
2.5.1、列出活动的连接,或进行排序(±为升降序)
# 查看所有连接状态
$ nmcli connection show
# 等同于nmcli connection show --order +active
$ nmcli connection show --active
# 以活动的连接进行排序
$ nmcli connection show --order +active
# 将所有连接以名称排序
$ nmcli connection show --order +name
# 将所有连接以类型排序(倒序)
$ nmcli connection show --order -type
2.5.2、查看指定连接的详细信息
$ nmcli con show bond-bond0
2.5.3、激活连接,提供连接名称或uuid进行激活,若未提供,则可以使用ifname指定设备名进行激活(up)
# 以连接名进行激活
$ nmcli connection up bond-bond0
# 以uuid进行激活
$ nmcli connection up 3a538589-12b9-4a82-adda-fe3da844510c
# 以设备接口名进行激活
$ nmcli connection up ifname bond0
2.5.4、停用连接,提供连接名或uuid进行停用,若未提供,则可以使用ifname指定设备名进行激活(down)
# 以连接名进行激活
$ nmcli connection donw bond-bond0
# 以uuid进行激活
$ nmcli connection down 3a538589-12b9-4a82-adda-fe3da844510c
# 以设备接口名进行激活
$ nmcli connection donw ifname bond0
2.5.5、【修改】这些属性可以用nmcli connection show bond-bond0进行获取,然后可以修改、添加或删除属性,若要设置属性,只需指定属性名称后跟值,空值将删除属性值,同一属性添加多个值使用+。同一属性删除指定值用-加索引(modify)
添加多个ip(+ipv4.addresses)
# 添加三个ip
$ nmcli connection modify bond-bond0 +ipv4.addresses 192.168.182.102/24
$ nmcli connection modify bond-bond0 +ipv4.addresses 192.168.182.103/24
$ nmcli connection modify bond-bond0 +ipv4.addresses 192.168.182.104/24
# 查看,查不到。
$ nmcli -f IP4 connection show bond-bond0
IP4.ADDRESS[1]: 192.168.182.152/24
IP4.GATEWAY: 192.168.182.2
IP4.ROUTE[1]: dst = 192.168.182.0/24, nh = 0.0.0.0, mt = 300
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.182.2, mt = 300
IP4.DNS[1]: 8.8.8.8
# 启用配置
$ nmcli connection up bond-bond0
# 再次查看,就可以查到刚才添加的三个ip
$ nmcli -f IP4 connection show bond-bond0
IP4.ADDRESS[1]: 192.168.182.152/24
IP4.ADDRESS[2]: 192.168.182.102/24
IP4.ADDRESS[3]: 192.168.182.103/24
IP4.ADDRESS[4]: 192.168.182.104/24
IP4.GATEWAY: 192.168.182.2
IP4.ROUTE[1]: dst = 192.168.182.0/24, nh = 0.0.0.0, mt = 300
IP4.ROUTE[2]: dst = 192.168.182.0/24, nh = 0.0.0.0, mt = 300
IP4.ROUTE[3]: dst = 192.168.182.0/24, nh = 0.0.0.0, mt = 300
IP4.ROUTE[4]: dst = 192.168.182.0/24, nh = 0.0.0.0, mt = 300
IP4.ROUTE[5]: dst = 0.0.0.0/0, nh = 192.168.182.2, mt = 300
IP4.DNS[1]: 8.8.8.8
删除指定ip(-ipv4.addresses)
# 删除刚刚添加的三个ip
$ nmcli connection modify bond-bond0 -ipv4.addresses 192.168.182.102/24
$ nmcli connection modify bond-bond0 -ipv4.addresses 192.168.182.103/24
$ nmcli connection modify bond-bond0 -ipv4.addresses 192.168.182.104/24
# 启用配置
$ nmcli connection up bond-bond0
# 查看
$ nmcli -f IP4 connection show bond-bond0
2.5.5、【添加】这是创建一个新的连接,需要指定新创建连接的属性,语法与modify相同(add)
# 查看当前所有连接,c是connection的缩写
$ nmcli c show
$ nmcli con add con-name eth1 type ethernet autoconnect yes ifname ens33
$ nmcli c show
# con-name 连接名称
# type 连接类型
# autoconnect 是否自动连接
# ifname 连接到的设备名称
2.5.6、克隆连接,克隆一个存在的连接,除了连接名称和uuid是新生成的,其他都是一样的(clone)
$ nmcli connection clone eth1 eth1_1
2.5.7、【删除】删除连接,这将删除一个连接(delete),con 是connection的缩写
$ nmcli con delete eth1_1
2.5.8、从磁盘加载/重新加载一个或多个连接文件,例如你手动创建了一个/etc/sysconfig/network-scripts/ifcfg-ethx连接文件,你可以将其加载到网络管理器,以便管理。
$ echo -e "TYPE=Ethernet\nNAME=ethx" > /etc/sysconfig/network-scripts/ifcfg-ethx
$ nmcli con show
$ nmcli con load /etc/sysconfig/network-scripts/ifcfg-ethx
$ nmcli connection show
2.5.9、监视连接配置文件活动(monitor)
$ nmcli connection monitor bond-bond0
2.6、device 设备管理
命令格式:nmcli device {status|show|set|connect|reapply|modify|disconnect|delete|monitor|wifi|lldp}
显示和管理设备接口。该选项有很多功能,例如连接wifi,创建热点,扫描无线,邻近发现等,下面仅列出常用选项。详细功能可使用nmcli device help查看。
2.6.1、打印设备状态,如果没有将命令指定给nmcli device,则这是默认操作(status)
以下两条命令对等
$ nmcli device status
$ nmcli device
2.6.2、显示所有设备接口的详细信息(show)
$ nmcli device show ens33
2.6.3、设置设备属性(set)
$ nmcli device set ifname ens33 autoconnect yes
2.6.4、连接设备(connection)。提供一个设备接口,网络管理器将尝试找到一个合适的连接, 将被激活。它还将考虑未设置为自动连接的连接。(默认超时为90s)
$ nmcli dev connect ens33
2.6.5、修改设备上处于活动的设备(modify),但该修改只是临时的,并不会写入文件。(语法与 nmcli connection modify 相同)
$ nmcli device modify ens33 +ipv4.addresses 192.168.100.103/24
2.6.6、断开当前连接的设备(disconnect),防止自动连接。但注意,断开意味着设备停止!但可用 connect 进行连接
$ nmcli device disconnect ens33
2.6.7、删除设备(delete),该命令从系统中删除接口。请注意, 这仅适用于诸如bonds, bridges, teams等软件设备。命令无法删除硬件设备 (如以太网)。超时时间为10秒
$ nmcli device delete bond0
2.6.8、 监视设备活动(monitor)。每当指定的设备更改状态时, 此命令都会打印一行
$ nmcli device monitor bond0
2.7、nmcli 返回状态码
mcli 如果成功退出状态值为0,如果发生错误则返回大于0的值。
0: 成功-指示操作已成功
1: 位置或指定的错误
2: 无效的用户输入,错误的nmcli调用
3: 超时了(请参阅 --wait 选项)
4: 连接激活失败
5: 连接停用失败
6: 断开设备失败
7: 连接删除失败
8: 网络管理器没有运行
10: 连接、设备或接入点不存在
65: 当使用 --complete-args 选项,文件名应遵循。
三、network和NetworkManager之间的区别
network:对网卡的配置
NetworkManager:这个服务由几个部分组成;一个是管理系统网络连接;一个是允许用户管理网络连接的客户端程序,使用它可以更好的管理网络
四、network和NetworkManager两个服务之间冲突解
在CentOS系统上,目前有NetworkManager和network两种网络管理工具。如果两种都配置会引起冲突,而且NetworkManager在网络断开的时候,会清理路由,如果一些自定义的路由,没有加入到NetworkManager的配置文件中,路由就被清理掉,网络连接后需要自定义添加上去。
1)将NetworkManager 服务设置开机不启动
$ chkconfig NetworkManager off
- 1
2)将NetwokManager服务关闭
$ systemctl stop NetworkManager
- 1
3)重新启动一下network服务
$ systemctl restart network
- 1
4)重新加载配置
# 重新加载所有网卡配置
nmcli c reload
# 指定加载
nmcli c reload /etc/sysconfig/network-scripts/ifcfg-ens33
# 重新加载所有网卡配置(可靠,推荐)
nmcli networking off && nmcli networking on
ifdown ens33 && ifup ens33
nmcli con down ens33 && nmcli con up ens33