Linux的全新网络管理命令行工具——nmcli

发布于:2025-06-25 ⋅ 阅读:(22) ⋅ 点赞:(0)

一、nmcli简介

 1.1、NetworkManager简介

  1.1.1、NetworkManager介绍

        在红帽系的Linux中,默认的网络服务是由NetworkManager提供的(其主要是一个可以进行动态网络配置和控制的守护进程)。

使用NetworkManager的优点
序号 使用NetworkManager的优点
1

可更加轻松高效的对网络进行配置

(NetworkManager可确保网络连接的正常工作,但发现系统中没有网络配置但存在网络设备时,会创建临时连接)

2

支持配置的灵活性

(可以直接配置或修改网络别名、IP地址、静态路由、DNS等许多特定的连接参数)

3

提供与用户的简单网络连接设置

(提供不同的管理工具进行网络配置【如:GUI、nmtui、nmcli】)

4

通过D-Bus提供Api,允许应用程序查询和控制网络配置和状态

(应用程序可以通过D-Bus的api检查或配置网络)

5 重启过程后保持设备状态,并接管在重启过程中将其设定为受管模式的接口
6 处理没有被显式设置但由用户或其他网络设备手动控制的设备

  1.1.2、NetworkManager的安装与启动

        默认情况下,NetworkManager是安装在红帽系的Linux中的,不用安装,若当前系统中没有可以按照如下步骤检查操作安装:

-- 1、查看NetworkManager的运行状态(显示 Active: inactive (dead)表示没有启动需要启动)
systemctl status NetworkManager

-- 2、若查看NetworkManager运行状态报错则可以使用root用户权限安装
yum install NetworkManager

-- 3、启动NetworkManager(停止用stop)
systemctl start NetworkManager

-- 4、设置NetworkManager在系统开机自启(禁用开机自启用 disable)
systemctl enable NetworkManager

使用 systemd 管理服务https://docs.redhat.com/en/documentation/Red_Hat_Enterprise_Linux/7/html/system_administrators_guide/chap-managing_services_with_systemd

 1.2、nmcli简介

         【nmcli】是(NetworkManager)的命令行工具,用于控制NetworkManager和报告网络状态情况,可让用户和脚本与 NetworkManager 交互;且nmcli 可以在没有 GUI 的系统上使用;nmcli可以用于创建、显示、编辑、删除、激活和停用网络连接,以及控制和显示网络设备状态。

nmcli可以让用户和脚本用于控制NetworkManager
序号 nmcli可以让用户和脚本用于控制网络
1 对于服务器和终端,nmcli可以直接控制NetworkManager,且不需要GUI,就可以进行创建、编辑、启动和停止网络连接,以及查看网络状态
2 对于脚本,nmcli支持更适合脚本处理的terse输出格式。它是集成网络配置而不是手动管理网络连接的一种方式

        由于Red Hat Enterprise Linux 8【rhel8】以后版本上,在【/etc/sysconfig/network-scripts/】里也看不到任何脚本文件;也就是说没有传统的network.service了【即:无法使用systemctl restart network命令启动网络了】,所以在rhel8之后的版本必须启用NetworkManager,否则无法使用网络。

--查看系统详情的2种命令
-- 1、直接使用系统自带的文件查看
cat /etc/os-release

-- 2、使用第三方包查看
lsb_release -a

  如下是Centos7的网络情况(可以看到【/etc/sysconfig/network-scripts/】路径下有很多的网络文件内容):

    如下是Centos8的网络情况(可以看到【/etc/sysconfig/network-scripts/】路径下只有一个网络文件了):

  如下是平滑替换Centos的系统AImaLinux的网络情况(可以看到【/etc/sysconfig/network-scripts/】路径下都没有网络文件了)

二、nmcli配置网络

第 3 章 配置 IP 网络 | 网络指南 | Red Hat Enterprise Linux | 7 | Red Hat Documentationhttps://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/7/html/networking_guide/ch-configuring_ip_networking#sec-Selecting_Network_Configuration_Methods

 2.1、nmcli的语法

--nmcli的语法
nmcli [OPTIONS] OBJECT { COMMAND | help }

--查看nmcli用法命令
nmcli --help

-- 使用nmcli美化输出的示例(简化输出的就是将-p换为-t)
-- 查看NetworkManager的常规状态和操作
nmcli -p g

-- 查看整体网络控制
nmcli -p n

-- 查看NetworkManager无线网络的开关情况
nmcli -p r

-- 查看NetworkManager的连接情况
nmcli -p c

-- 查看NetworManager的管理设备
nmcli -p d

 2.2、nmcli的使用

  2.2.1、NetworkManager的启用关闭

-- 1、查看NetworkManager是否启用命令(显示enabled表示启用,否则就是禁用)
nmcli n

-- 2、启用NetworkManager命令
nmcli n on

-- 3、关闭NetworkManager命令(注意该命令一般不要轻易使用,只建议在Linux本机的终端上使用,一旦使用该命令则网络就断开了)
nmcli n off

  2.2.2、nmcli的常用命令

nmcli的常用命令
序号 nmcli的常用命令 说明
1

nmcli connection

nmcli c

表示查看当前的所有连接信息(包含连接别名、UUID、连接类型、网卡名称)

【nmcli c是nmcli connection的简写】

-- 网络连接有两种状态
1、活跃(带颜色字体):表示当前该connection连接生效;
2、非活跃(正常字体):表示当前该connection连接不生效

2 nmcli c -h

表示查看当前连接的帮助命令,可以对网络连接信息进行对应的【查看(show)、上线(up)、下线(down)、添加(add)、修改(modify)、克隆(clone)、编辑(edit)、删除(delete)、监控(monitor)、重载(reload)、导入(import)、导出(export)】操作:

-- 查看网络连接的帮助命令
nmcli c -h

-- 查看网络的所有连接信息命令
nmcli c show

-- 查看指定网络连接的详情命令(比如:查看ens33连接详情)
nmcli c show ens33

-- 激活指定的连接命令(比如激活ens33连接[对应nmcli c show]命令下的name对应的值,
--【启用用后使用[nmcli c show]命令查看有颜色显示的就是启用的连接】)
nmcli c up ens33

-- 停用指定的连接命令(比如激活ens33连接
--【停用后使用[nmcli c show]命令查看无颜色显示的就是停用的连接】)
nmcli c down ens33


-- 添加一个新的网络并配置信息命令(【nmcli c add type 网卡类型 con-name 连接名称 ifname 网卡名称 ip4 ip地址 gw4 网关地址 ipv4.dns 域名地址】(但是如果没有对应的网卡是没有办法启动的)
 nmcli c add type ethernet con-name testcon ifname ens36 ip4 192.168.1.7/24 gw4 192.168.1.1 ipv4.dns 223.5.5.5

-- 修改网络连接中的属性名称(比如修改连接名称testcon为conens36)
nmcli c modify testcon con-name conens36

-- 删除一个网络连接命令(比如删除testcon连接)
nmcli c delete testcon


-- 重新加载网络的配置文件命令(不会马上生效)
nmcli c reload

-- 让修改的网络配置立即生效命令(比如让网络连接ens33立即生效)
nmcli c up ens33

3

nmcli device

nmcli d

表示设备,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)可以简写为【nmcli d】

--网卡有四种状态
1、connected:已被NetworkManager接纳管理,并且当前有活跃的connection连接;
2、disconnected:NetworkManager接纳管理,但是当前没有活跃的connection连接;
3、unmanaged:未被NetworkManager接纳管理;
4、unavailable:不可用,NetworkManager无法接纳管理,通常出现于网卡link为down的时候(比如ip link set ens33 down)
4 nmcli d -h

表示查看网卡连接的帮助命令,可以对网卡进行对应的【状态(status)、详情(show)、设置(set)、激活(connect)、刷新(reapply)、修改(modify)、断开(disconnect)、删除(delete)、监控(monitor)】操作

-- 查看所有网卡列表命令
nmcli d

-- 查看所有网卡详情命令
nmcli d show

-- 查看指定网卡详情(如查看ens33网卡)
nmcli d show ens33

-- 激活指定网卡【刷新该网卡对应的活跃connection连接】(如ens33网卡)
nmcli d connect ens33

--刷新指定网卡【专门用于刷新connection连接,前提是网卡的device处于connected状态,否则会报错】
nmcli d reapply ens33

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

  2.2.3、nmcli常用命令实战

如下是实现查看常用命令的帮助、修改连接配置内容详细的操作步骤:

-- 查看NetworkManager的连接情况(完整命令是:nmcli connection;简写命令是:nmcli n)
nmcli n

nmcli n show

--查看指定的连接详情(比如这里查看连接名称为ens33的详情)
nmcli n show ens33


--查看编辑指定连接的用法帮助命令【必须使用root用户操作】
nmcli c help

--切换到管理员权限的用户操作
su -

--编辑制定的连接信息(比如这里编辑ens33的连接信息)
nmcli c edit ens33
-- 查看可使用的命令
?
--进入ipv4选项
goto ipv4
--查看ipv4的操作命令帮助
?
--进入ipv4地址
goto addresses
--先查看当前的ipv4地址
print
--修改ipv4地址
change
--直接将当前显示的内容修改为自己想要的ipv4地址(比如将原来的192.168.1.9/24修改为192.168.1.6/24)
192.168.1.6/24
--返回上一级
back


--进入dns
goto dns
--查看当前的dns信息
print
--修改dns
change
--将显示的dns内容修改即可(比如将114.114.114.114修改为223.5.5.5)
223.5.5.5
--返回
back
back

--保存修改的内容
save
--激活修改的内容
activate

--直接一步到位的查看与设置网络内容(如:设置ipv4的dns)

-- 1、查看nmcli的用法帮助命令
nmcli -h

-- 2、查看nmcli c的用法帮助命令
nmcli c -h

-- 3、查看nmcli的连接信息命令
nmcli c show

-- 4、切换管理员账号进行如下的编辑操作(否则到最后的保存时会提示权限不足错误)
su -

-- 5、编辑nmcli指定连接的命令(如我这里直接编辑ens33连接)
nmcli c edit ens33

-- 6、查看编辑ens33连接的帮助命令
?

-- 7、查看goto ipv4包含的所有属性命令(输入goto ipv4.后按下tab键会自动带出)
goto ipv4.

-- 8、进行需要修改的属性命令(比如:这里直接进入ipv4的dns属性)
goto ipv4.dns

-- 9、查看指定属性的操作帮助命令
?

-- 10、查看当前属性的信息
print

-- 11、修改当前属性的命令(输入change命令后就可以直接修改显示的内容了)
change

-- 12、修改后返回上一级
back
back

-- 13、保存修改的连接属性内容
save

-- 14、激活修改好的连接
activate

-- 15、退出nmcli的编辑模式
quit

 

        注意:这里在使用nmcli对网络信息进行修改的时候必须使用具有管理员权限的账号操作,不然在保存修改配置的时候会提示“错误:保存 "ens33" (9709103d-8f3d-3b0a-9d44-f2e1f1d03e67) 连接失败:Insufficient privileges” 的错误。

 

三、参考资料

3.3. 使用 nmcli 配置 IP 网络 | 网络指南 | Red Hat Enterprise Linux | 7 | Red Hat Documentationhttps://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/7/html/networking_guide/sec-configuring_ip_networking_with_nmcliLinux nmcli 命令 | 菜鸟教程https://www.runoob.com/linux/linux-comm-nmcli.html在 Ubuntu/Debian 上安装和使用 NetworkManager (NMCLI)https://cn.linux-console.net/?p=223641.7. 使用 ncat 工具管理数据 | 网络指南 | Red Hat Enterprise Linux | 7 | Red Hat Documentationhttps://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/7/html/networking_guide/sec-managing_data_using_the_ncat_utility


网站公告

今日签到

点亮在社区的每一天
去签到