NetworkManager是2004年Red Hat启动的项目,旨在能够让Linux用户更轻松地处理现代网络需求,尤其是无线网络,能自动发现网卡并配置ip地址。

在rhel8上,必须开启NM,否则无法使用网络。

类似在手机上同时开启wifi和蜂窝网络,自动探测可用网络并连接,无需手动切换。

nmcli使用方法

nmcli使用方法非常类似linux ip命令、cisco交换机命令,并且支持tab补全,也可在命令最后通过-h、--help、help查看帮助。在nmcli中有2个命令最为常用:

nmcli connection

译作连接可理解为配置文件,相当于ifcfg-eth0。可以简写为nmcli c

nmcli device

译作设备可理解为实际存在的网卡(包括物理网卡和虚拟网卡)。可以简写为nmcli d

在NM里,有2个维度:连接(connection)设备(device),这是多对一的关系。想给某个网卡配ip,首先NM要能纳管这个网卡。设备里存在的网卡(即 nmcli d可以看到的),就是NM纳管的。接着,可以为一个设备配置多个连接(即 nmcli c可以看到的),每个连接可以理解为一个ifcfg配置文件。同一时刻,一个设备只能有一个连接活跃。可以通过 nmcli c up切换连接。

connection有2种状态

▷ 活跃(带颜色字体):表示当前该connection生效 ▷ 非活跃(正常字体):表示当前该connection不生效

device有4种常见状态

▷ connected:已被NM纳管,并且当前有活跃的connection ▷ disconnected:已被NM纳管,但是当前没有活跃的connection ▷ unmanaged:未被NM纳管 ▷ unavailable:不可用,NM无法纳管,通常出现于网卡link为down的时候(比如ip link set ethX down)


配置动态ip(等同于配置ifcfg,其中BOOTPROTO=dhcp,并ifup启动)

nmcli c add type ethernet con-name eth0 ifname ens33 ipv4.method auto

type ethernet:创建连接时候必须指定类型,类型有很多,可以通过nmcli c add type -h看到,这里指定为ethernet。

con-name eth0 ifname ens33第一个eth0表示连接(connection)的名字,这个名字可以任意定义,无需和网卡名相同第二个ens33表示网卡名,这个ens33必须是在nmcli d里能看到的。

配置静态ip(等同于配置ifcfg,其中BOOTPROTO=none,并ifup启动)

nmcli c add type ethernet con-name eth0 ifname ens33 ipv4.addr 192.168.1.100/24 ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,4.4.4.4' ipv4.method manual

ipv4.method对应ifcfg文件内容的BOOTPROTO,ipv4.method默认为auto,对应为BOOTPROTO=dhcp这种时候如果指定ip,就可能导致网卡同时有dhcp分配的ip和静态ip。设置为manual表示BOOTPROTO=none,即只有静态ip。

# 查看ip(类似于ifconfig、ip addr)

nmcli

# 启用指定网卡配置文件(相当于ifup)

nmcli c up ethX

# 停止指定网卡配置文件(相当于ifdown)

nmcli c down ethX

# 删除指定网卡配置文件(类似于ifdown并删除ifcfg)

nmcli c delete ethX

# 查看connection列表

nmcli c show

# 查看connection详细信息

nmcli c show ethX

# 重载所有网卡配置文件(不会立即生效)

nmcli c reload

# 重载指定ifcfg或route到connection(不会立即生效)

nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX

nmcli c load /etc/sysconfig/network-scripts/route-ethX

# 立即使网卡配置文件生效,有3种方法

nmcli c up eth0                # 启用指定网卡配置文件

nmcli d reapply eth0        #刷新网卡配置文件,前提是网卡的device处于connected状态,否则会报错。

nmcli d connect eth0       #激活网卡

# 查看网卡列表

nmcli d

# 查看所有网卡的详细信息

nmcli d show

# 查看指定网卡的详细信息

nmcli d show eth0

# 激活网卡(就算之前nmcli c delete eth0删除网卡配置文件,也可以使用此命令激活重新生成配置文件

由NM对指定网卡进行管理,同时刷新该网卡对应的活跃connection(如果之前有修改过connection配置);如果有connection但是都处于非活跃状态,则自动选择一个connection并将其活跃;如果没有connection,则自动生成一个并将其活跃。

nmcli d connect eth0

nmcli d disconnect eth0

让NM暂时不管理指定网卡,此操作不会变更实际网卡的link状态,只会使对应的connection变成非活跃。若重启系统则又会自动connect。另外,如果手工将该网卡的connection全部删掉,该网卡状态也会自动变为disconnected。

# 关闭无线网络(NM默认启用无线网络)

nmcli r all off

# 查看NM启动状态

nmcli n

# 开启NM纳管

nmcli n on

# 关闭NM纳管(谨慎执行)

nmcli n off

# 监听事件

nmcli m

# 查看NM本身状态

nmcli

# 检测NM是否在线可用

nm-online