一、nmcli简介
1.1、NetworkManager简介
1.1.1、NetworkManager介绍
在红帽系的Linux中,默认的网络服务是由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
1.2、nmcli简介
【nmcli】是(NetworkManager)的命令行工具,用于控制NetworkManager和报告网络状态情况,可让用户和脚本与 NetworkManager 交互;且nmcli 可以在没有 GUI 的系统上使用;nmcli可以用于创建、显示、编辑、删除、激活和停用网络连接,以及控制和显示网络设备状态。
序号 | 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配置网络
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的常用命令 | 说明 |
1 | nmcli c |
表示查看当前的所有连接信息(包含连接别名、UUID、连接类型、网卡名称) 【nmcli c是nmcli connection的简写】 |
2 | nmcli c -h | 表示查看当前连接的帮助命令,可以对网络连接信息进行对应的【查看(show)、上线(up)、下线(down)、添加(add)、修改(modify)、克隆(clone)、编辑(edit)、删除(delete)、监控(monitor)、重载(reload)、导入(import)、导出(export)】操作: |
3 | nmcli device nmcli d |
表示设备,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)可以简写为【nmcli d】
|
4 | nmcli d -h | 表示查看网卡连接的帮助命令,可以对网卡进行对应的【状态(status)、详情(show)、设置(set)、激活(connect)、刷新(reapply)、修改(modify)、断开(disconnect)、删除(delete)、监控(monitor)】操作 |
在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 Documentation
https://docs.redhat.com/zh-cn/documentation/red_hat_enterprise_linux/7/html/networking_guide/sec-managing_data_using_the_ncat_utility