首页 / 帮助文档 / centos运维使用nmcli激活和停用网络连接

centos运维使用nmcli激活和停用网络连接

在CentOS系统中,使用nmcli命令激活和停用网络连接是最常用、最高效的网络管理方式。核心操作就两条命令:激活用nmcli connection up 连接名,停用用nmcli connection down 连接名。但实际运维中远不止这么简单,你需要先查看有哪些连接、确认连接状态、处理DHCP和静态IP配置、管理多网卡场景,以及在远程操作时避免把自己锁在外面。下面我把这些全部讲透,从基础到进阶,一篇搞定。

nmcli是什么,为什么CentOS运维必须掌握它

nmcli是NetworkManager命令行工具的缩写。CentOS 7及以后的版本默认使用NetworkManager来管理网络,取代了早期的network服务脚本。nmcli让你不用编辑配置文件就能完成几乎所有网络操作,特别适合在服务器终端、SSH远程会话、自动化脚本中使用。相比直接改/etc/sysconfig/network-scripts/下的ifcfg文件,nmcli更安全、更即时、更不容易出错。

第一步:查看当前所有网络连接

在做任何操作之前,你必须先知道系统里有哪些网络连接。执行以下命令:

nmcli connection show

输出结果类似这样:

NAME          UUID                                  TYPE      DEVICE
ens33         a1b2c3d4-e5f6-7890-abcd-ef1234567890  ethernet  ens33
ens37         b2c3d4e5-f6a7-8901-bcde-f12345678901  ethernet  ens37

NAME列就是连接名,后面操作都要用到它。DEVICE列是实际网卡设备名。如果你看到某个连接显示"disconnected"状态,说明它当前没有激活。

第二步:激活网络连接

激活一个已有的连接,命令非常直接:

nmcli connection up ens33

如果连接名里有空格,需要用引号括起来:

nmcli connection up "有线连接 1"

激活成功后,你可以用以下命令确认状态:

nmcli connection show ens33

会看到"active"状态。同时用ip addr show ens33可以看到IP地址是否正常获取到了。

如果你想激活所有网络连接,一条命令搞定:

nmcli connection up

第三步:停用网络连接

停用连接同样简单:

nmcli connection down ens33

停用后该连接会断开,IP地址释放。如果你只想断开某个设备而不是整个连接,可以用:

nmcli device disconnect ens33

两者区别在于:connection down是把整个连接配置停掉,device disconnect只是断开当前设备的物理链路,连接配置还在。运维场景中,如果你要更换网线或重启网卡驱动,用device disconnect更合适;如果要彻底关闭某个网络接口的使用,用connection down。

第四步:创建新的网络连接并激活

有时候系统里没有你需要的连接,或者你要新增一个。创建DHCP自动获取IP的连接:

nmcli connection add type ethernet con-name "my-dhcp" ifname ens33

创建静态IP的连接:

nmcli connection add type ethernet con-name "my-static" ifname ens33 \
  ipv4.addresses 192.168.1.100/24 \
  ipv4.gateway 192.168.1.1 \
  ipv4.dns "8.8.8.8 8.8.4.4" \
  ipv4.method manual

创建完直接激活:

nmcli connection up "my-static"

这里要注意,ipv4.method manual表示手动配置静态IP,如果是DHCP就用auto。子网掩码用CIDR格式/24表示255.255.255.0。

第五步:修改已有连接的配置

不需要删除重建,nmcli支持直接修改。比如把DHCP改成静态IP:

nmcli connection modify ens33 ipv4.addresses 192.168.1.100/24
nmcli connection modify ens33 ipv4.gateway 192.168.1.1
nmcli connection modify ens33 ipv4.dns "8.8.8.8"
nmcli connection modify ens33 ipv4.method manual

修改完需要重新激活才生效:

nmcli connection down ens33
nmcli connection up ens33

或者一条命令搞定:

nmcli connection up ens33

第六步:远程操作的安全注意事项

这是运维中最容易踩坑的地方。如果你通过SSH远程管理服务器,执行nmcli connection down停用了当前正在使用的连接,你会直接断开,而且无法重新连接。正确做法是:

第一,操作前确认当前使用的是哪个连接:

nmcli -t -f DEVICE,STATE device status

第二,如果要停用某个非当前连接的接口,先确认不会影响自己:

nmcli connection show

第三,最保险的做法是用screen或tmux开一个会话,或者确保你有带外管理(IPMI、iLO、iDRAC)可以在断网后重新接入。

第四,如果你确实需要停用当前连接再激活,可以写一个延时脚本:

nmcli connection down ens33 && sleep 5 && nmcli connection up ens33

这样给自己留5秒的缓冲时间,但仍然有风险,不推荐在生产环境使用。

第七步:管理多网卡和绑定场景

服务器通常有多块网卡。查看所有设备状态:

nmcli device status

输出会显示每个设备的状态(connected、disconnected、unavailable)。如果你有bond绑定接口,查看方式:

nmcli connection show bond0

激活bond:

nmcli connection up bond0

停用bond:

nmcli connection down bond0

如果bond下的从属接口需要单独管理,可以查看:

nmcli -f NAME,SLAVE-TYPE connection show

第八步:查看详细连接信息和排错

当网络出问题时,你需要看详细信息:

nmcli connection show ens33

这会显示IP、网关、DNS、MAC地址等全部信息。如果想看某个连接的完整配置:

nmcli connection show "my-static"

如果IP没有获取到,先检查DHCP是否正常:

nmcli device show ens33 | grep IP4

如果显示没有IP4.ADDRESS,说明DHCP失败或者静态配置有误。这时候可以尝试重新触发:

nmcli connection down ens33
nmcli connection up ens33

或者强制重新获取DHCP:

dhclient -r ens33
dhclient ens33

第九步:删除不需要的连接

系统用久了会积累很多废弃连接,清理掉保持整洁:

nmcli connection delete "old-connection"

删除前先确认不是正在使用的连接。批量删除可以结合grep:

nmcli connection show | grep "disconnected" | awk '{print $1}' | xargs -I {} nmcli connection delete {}

这条命令会删除所有处于disconnected状态的连接,操作前务必确认。

第十步:nmcli与传统network服务的关系

CentOS 7/8/9默认使用NetworkManager。如果你的系统还在用老的network服务,两者会冲突。检查当前网络管理服务:

systemctl status NetworkManager
systemctl status network

如果两个都在运行,建议关闭network服务:

systemctl stop network
systemctl disable network

然后重启NetworkManager:

systemctl restart NetworkManager

这样nmcli才能正常管理所有连接,不会出现"设备由其他进程管理"的报错。

实用技巧总结

在日常CentOS运维中,nmcli是你必须熟练掌握的工具。几个高频使用场景归纳一下:服务器重启后网络没起来,用nmcli connection up激活;更换IP配置,用modify修改后重启连接;新装系统配置网络,用add创建新连接;排查网络故障,用show和device status定位问题。把这些命令记熟,配合tab自动补全,效率会非常高。nmcli的优势在于所有操作都是即时生效的,不需要重启网络服务,这在生产环境中尤其重要,因为重启网络服务意味着所有连接中断。

最后提醒一点,nmcli的操作本质上是在修改/etc/NetworkManager/system-connections/下的配置文件。如果你习惯直接编辑文件,也可以,但nmcli提供了更安全的抽象层,避免了格式错误导致网络瘫痪的风险。对于CentOS运维人员来说,掌握nmcli不是可选项,而是基本功。