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