nmcli命令是redhat7或者centos7之后的命令,该命令可以完成网卡上所有的配置工作,并且可以写入配置文件,永久生效。
在讨论、学习与训练nmcli命令前,必须明确几点:
使用nmcli命令前,先检查NetworkManager状态及相关信息。保证是开启状态,才能正常使用nmcli命令。
NetworkManager是一个为系统自动连接到网络提供检测和配置的程序,对无线和有线网络都可以管理。特别是对于无线网络。其最初由Red Hat开发,现在由GNOME项目托管。
作为一个服务,是网络管理的守护进程,运行在后台。相关操作可以使用systemctl命令:
????????systemctl status NetworkManager? 查看运行状态(应用比较多)
????????systemctl start NetworkManager? 启动
????????systemctl restart NetworkManager? 重启(应用最多)
????????systemctl stop NetworkManager 关闭
????????systemctl enable NetworkManager开机启动
注意:NetworkManager 中开头的N和中间的M必须大写。
NetworkManager有多种不同版本,可升级为最新版本。不同版本,nmcli命令有差异。
可以在当前系统中升级NetworkManager
如 dnf upgrade NetworkManager
查看nmcli正在使用的NetworkManager版本:
在使用nmcli命令中,经常要查看网络配置文件,必须提前了解配置文件所在的路径及配置文件名称。
Centos7 配置文件路径和名称:
????????/etc/sysconfig/network-scripts/ifcfg-**
Centos8 配置文件路径和名称:
????????/etc/sysconfig/network-scripts/ifcfg-**
Centos stream9配置文件路径和名称:
????????/etc/NetworkManager/system-connections/**.nmconnection
提前添加2-3块网卡。
详细操作过程可参考《Linux CentOS7 添加网卡》。
a.网络连接重要的IP参数
????????address? IP地址? 192.168.*.*/24(此类写法不需要再写子网掩码255.255.255.0)
????????gateway网关 192.168.*.2(最后一位常常是2或254)
????????dns 域名解析器? 8.8.8.8? 114.114.114.114
????????route 路由 ?一般初学者可以不设置,由系统自动配置默认路由
b.网卡与网络连接
一张网卡可以设置多个连接,不同连接可以分别命名(如在网卡ens37上配置两个连接,可以命令为ens37:0 ens37:1)
一个连接只能对应一张网卡。
设置/修改网络连接参数时,该连接自动停用,只有启动后才能连通网络。
一张网卡重新启用一个连接,另外的连接自动停止(一张网卡只有一个活动的连接)。
????????nmcli [OPTIONS...] {help | general | networking | radio |connection | device | agent | monitor} [COMMAND] [ARGUMENTS...]
简化格式? nmcli ?选项 ?对象 ?命令
可用选项:
选项 | 说明 |
-e | 转义值中的列分隔符 |
-f | 指定要输出的字段 |
-p | 美化输出,以易于人类阅读的形式显示 |
-h | 查看帮助 |
-v | 查看版本信息 |
常用对象:
对象 | 简写 | 说明 |
connection | c/con | NetworkManager的连接 |
device | d/dev | NetworkManager管理的设备 |
重要命令:
命令 | 简写 | 说明 |
status | s | 显示设备状态 |
show | s | 显示设备/连接详情 |
add | a | 添加网络连接参数 |
modify | m | 修改网络连接参数 |
edit | e | 编辑网络连接参数 |
reload | r | 重新加载NetworkManager配置 |
on/off | 启用/关闭网络连接 | |
up/down | 启用/禁用网卡设备 | |
delete | d | 删除已配置的连接 |
hostname | h | 查看/修改主机名 |
nmcli命令支持简写。不需要把命令全部录入,仅录入首字符就可以执行。常用的命令只记住首字母即可。
在nmcli c命令中,c是connection的简写。默认命令show没有录入。与下面的完整命令功能相同:
????????nmcli connection show
在nmcli -p d命令中,-p是选项,表明以方便阅读的方式输出信息。d是device的简写。默认命令status没有录入。
利用简写命令查看帮助
????????h help的简写
利用简写命令查看主机名/修改主机名
????????g general的简写;h hostname的简写
PS:应用nmcli命令时一般不加选项。而命令区分大小写。默认命令可以不录入。
参考帮助信息,注意区别选项的短选项与长选项;注意对象的简写与命令的简写。如h,作为对象是help的简写,而作为命令是hostname简写。类似的还有r和m。
a.录入对象、命令的首字母(允许情况下,可以回车执行)按Tab进行补全
b.录入命令后,按空格,如不知道有什么选项,可以连按两次Tab,显示可以选择的选项(有时选项太多时会提示你是否显示全部,可根据情况决定)。
在执行nmcli命令时,选项、命令、属性、属性值相互之间都用空格分隔。不需要换行,不需要添加分号等其他分隔符。
如nmcli c m ens37 gateway 192.168.100.254
执行命令后,NM会在配置文件中编写
????????gateway=192.168.100.254
对于中间有空格但前后是一个整体的情况,或在空格前加\(转义字符)或把整体用单引号括起来。
同一项设置添加两个值(如一个连接设置两个IP地址)
a.一个连接设置两项IP值,只需在两个值之间加一逗号分隔
????????ipv4.address 192.168.100.50/24,192.168.100.60/24
b.正常设置一个,然后在第二次设置时前面加+
????????ipv4.address 192.168.100.60/24
????????+ipv4.address 192.168.100.70/24
c.取消多个IP地址中的一个,应用修改命令
????????-ipv4..…
a.查看网络连接状态:
网络连接状态共有五种:full、limited(连网,但无法上网)、portal(连网,但需要认证登录后才能上网)、none(没连网)和 unknown。
以下两个命令都可以查看。
????????nmcli n c 其中n是networking简写;c是connectivity简写
????????nmcli g? 其中g是general简写
b.接口信息:
????????nmcli d
命令的选项和参数都可以简写
c.连接信息
????????nmcli c
d.ip地址等信息
????????nmcli
PS:查看设置的IP地址仍然可以借助ip a或ifconfig命令
在用nmcli添加一个网络连接时(创建新连接)必须包含三项:type、ifname和con-name。
其中type指定连接类型;con-name指定网络连接名称;ifname? 指定使用的设备名称(初学者主要是指网卡名)。
在此基础上,再添加其他设置,满足不同需求。
a.动态ip地址的连接
添加一块新网卡,默认采用自动获取IP地址的方式。本人设置时,只需设定基础的三项即可。
b.静态ip地址的连接
必须指定IP地址、网关和DNS,ipv4.method:手动设置manual
c.双静态ip地址
d.一卡多个连接
正常添加一个连接后,在同一网卡接口设备上再添加一个连接,各项设置同前述一致,只是在命名连接名时推荐使用接口设备名:1(国外一般从0开始,1代表第二项)
下图显示ens38设备上创建了四个连接,只有一个“有线连接 1”是活动的:
主要应用modify(m)命令修改连接设置参数
a.完善设置
一个网络连接有多项设置,并不需要一次全部设置完全(有时忘记设置哪些属性了),可以这样处理:
把原命令调出,把a改为m再添加其他一项或多项'属性 值'
????????modify 接口名称 '属性1 值1? 属性2 值2'
b.接口连接名
????????con-name 新接口连接名
下图是把新网卡默认的连接名“有线连接 1”修改为ens38
下图是通过指定UUID修改connection.id(这是连接的接口名标志,可以简写为con.id或c.id)
c.双IP变为单IP
????????…m -ipv4.address 192.168.100.50/24
d.动态IP转静态IP
从添加连接时的设置,可以知道ens37:2是动态IP地址,(修改命令)再添加静态IP地址就可以。
????????nmcli c m ens37:2 ipv4.address 192.168.100.200/24 ipv4.gateway 192.168.100.254 ipv4.method manual
一个连接不再需要,可以删除。这个删除是删除连接的配置文件,此连接将不存在(不能重启)。
????????nmcli c delete ens38:2
删除配置文件,也是删除连接。
a.NM管理
设定 NetworkManager 接管网络设置:
????????nmcli n on
取消 NetworkManager 接管网络设置:
????????nmcli n off
b.启动/停用一个连接
切换连接时,不用把原来的连接停用,仅需把新的连接启动即可。
我们直接启动连接ens38,原来同一设备上的连接将会停止。
????????nmcli c up ens38
如果停用ens38,需要执行命令
????????nmcli c down ens38
如果一个设备上有两个连接,停用一个就会启用另一个。
c.启动/停用设备上的连接
执行命令nmcli d disconnect 设备名
可以停用设备上的所有连接
对于一个设备上只创建了一个连接,可以执行子命令down停用连接。而对于有多个连接的情况,就要后子命令disconnect。
nmcli命令众多,不可能一一演示。可以多训练,才能熟练掌握。
对于网络连接不熟悉的,可以使用图形化命令nmtui和nm- connection-editor。