RHEL8/CentOS8+:NetworkManager网络管理工具nmcli
在 Linux 系统网络管理中,从 CentOS7/RHEL7 开始引入的 nmcli 工具逐渐成为主流,特别是在 CentOS8/RHEL8 及后续版本中,它已取代传统的 network 服务成为官方推荐的网络配置方式。nmcli 作为 NetworkManager 的命令行管理工具,不仅简化了网络配置流程,还提供了更灵活、更强大的功能。本文将详细介绍 nmcli 的使用方法,包括配置文件变化、常用命令、典型应用场景以及新旧版本对比等内容。
1. 什么是 nmcli?
nmcli 是NetworkManager软件的命令行管理工具,用于配置 Linux 网络而无需重启服务器。从 CentOS7/RHEL7 开始出现,在 CentOS8/RHEL8 及以后版本中,官方主推nmcli替代传统的 network 服务。
2. 配置文件位置变化
2.1 CentOS7/RHEL7 及之前版本
网络配置文件位于传统的路径:
/etc/sysconfig/network-scripts/ifcfg-*
使用 ifcfg 格式,可通过修改文件后重启 network 服务生效。

2.2 CentOS8/RHEL8 及以后版本
重大变化:默认不再使用ifcfg格式,配置文件位置改为:
/etc/NetworkManager/system-connections/
原来的目录下只有一个说明文件:

该文件(readme-ifcfg-rh.txt)大致意思如下:
NetworkManager 将新的网络配置文件以 keyfile 格式存储在
/etc/NetworkManager/system-connections/目录中。以前,NetworkManager 以 ifcfg 格式将网络配置文件存储在此目录(/etc/sysconfig/network-scripts/)中。但是,ifcfg 格式已被弃用。默认情况下,NetworkManager 不再以此格式创建新的配置文件。如果仍在使用 ifcfg 格式的网络配置文件,请考虑将其迁移到 keyfile 格式。要一次性迁移所有配置文件,请输入:nmcli connection migrate
现在,我们进入 RHEL 9 网卡配置目录:
[root@localhost ~]# cd /etc/NetworkManager/system-connections/ [root@localhost system-connections]# ls ens160.nmconnection [root@localhost system-connections]#

它使用keyfile格式(INI 文件格式)。
该文件的内容如下:
[root@localhost system-connections]# cat ens160.nmconnection [connection] id=ens160 uuid=0061fe78-a4d2-3e25-9a38-bf7537e25928 type=ethernet autoconnect-priority=-999 interface-name=ens160 [ethernet] [ipv4] address1=172.16.250.100/24,172.16.250.1 method=manual [ipv6] addr-gen-mode=eui64 method=auto [proxy] [root@localhost system-connections]#

关于该文件,它采用 INI 风格,比旧的ifcfg格式更清晰、更易解析。
五个部分的含义如下:
(1)[connection] 段 – 连接基本信息
id=ens160 # 连接的显示名称 uuid=0061fe78... # 全局唯一标识符,NetworkManager 内部用来识别此连接 type=ethernet # 连接类型为有线以太网 autoconnect-priority=-999 # 自动连接优先级(值越低,优先级越低。这里-999 表示几乎不会自动连接) interface-name=ens160 # 绑定到哪个物理/虚拟网络接口
(2) [ethernet] 段 – 以太网特定设置
此段为空,表示使用默认的以太网设置。
如果有特殊需求,这里可以配置 MAC 地址、双工模式、速度等。
(3)[ipv4] 段 – IPv4 网络配置(关键部分)
address1=172.16.250.100/24,172.16.250.1 # 这是关键行!它的格式是:`IP 地址/子网前缀,网关` # `address1` 中的 `1` 是索引,可以继续配置 `address2`, `address3` 来添加多个 IP。 method=manual # IP 地址分配方式: # - `manual` : 静态 IP(手动配置),对应旧配置中的 `BOOTPROTO=static/none` # - `auto` : 自动获取(DHCP),对应旧配置中的 `BOOTPROTO=dhcp`
(4) [ipv6] 段 – IPv6 网络配置
addr-gen-mode=eui64 # IPv6 地址生成模式(默认基于 MAC 地址生成) method=auto # IPv6 地址分配方式为“自动”(通常指 SLAAC 或 DHCPv6)
(5)[proxy] 段 – 代理设置
此段为空,表示未配置 HTTP/HTTPS 等代理。
如果需要配置代理服务器,会在这里添加相关项。
3.nmcli 的常用命令
查看 NetworkManager 服务的详细运行状态,可以输入systemctl status NetworkManager:
关于 NetworkManager 的命令,这里补充列出:
| 命令 | 作用 | 输出特点 |
|---|---|---|
systemctl status NetworkManager |
查看服务的详细状态和日志 | 最详细,包含日志片段 |
systemctl is-active NetworkManager |
仅检查是否运行 | 返回 “active” 或 “inactive” |
systemctl is-enabled NetworkManager |
检查是否开机自启 | 返回 “enabled” 或 “disabled” |
systemctl show NetworkManager |
显示所有属性 | 原始键值对格式 |
| ps aux | grep NetworkManager` | 查看进程信息 |
3.1 查看网络状态
# 查看所有设备状态(最常用)
[root@localhost ~]# nmcli device status DEVICE TYPE STATE CONNECTION ens160 ethernet connected ens160 lo loopback connected (externally) lo [root@localhost ~]#
# 查看网卡详细信息
[root@localhost ~]# nmcli device show ens160 GENERAL.DEVICE: ens160 GENERAL.TYPE: ethernet GENERAL.HWADDR: 00:0C:29:ED:44:0A GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: ens160 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/49 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: 172.16.250.100/24 IP4.GATEWAY: 172.16.250.1 IP4.ROUTE[1]: dst = 172.16.250.0/24, nh = 0.0.0.0, mt = 100 IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 172.16.250.1, mt = 100 IP6.ADDRESS[1]: fe80::20c:29ff:feed:440a/64 IP6.GATEWAY: -- IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1024 [root@localhost ~]#
# 查看所有连接配置
3.2 修改网卡配置(最常用)
基本格式:
nmcli connection modify <网卡名> <设置.参数> <值>
常用配置组:
connection– 连接基本设置ipv4– IPv4 网络设置ipv6– IPv6 网络设置802-3-ethernet– 以太网设置
补充:在
nmcli命令中,nmcli connection show命令可简写为nmcli c show,即connection=c,另外device=d。
下面举几个例子:
# 修改网关
[root@localhost ~]# nmcli connection modify ens160 ipv4.gateway '172.16.250.254' [root@localhost ~]#
# 修改 DNS(多个用逗号分隔)
[root@localhost ~]# nmcli connection modify ens160 ipv4.dns '223.5.5.5,223.5.5.6' [root@localhost ~]#
# 设置静态 IP 和掩码
[root@localhost ~]# nmcli connection modify ens160 ipv4.addresses '172.16.250.200/24' [root@localhost ~]# nmcli connection modify ens160 ipv4.addresses '172.16.250.100/24' #这里先改回来 [root@localhost ~]#
3.3 添加/删除配置
# 添加一个 IP 地址
[root@localhost ~]# nmcli connection modify ens160 +ipv4.addresses '172.16.250.120/24' [root@localhost ~]#
删除一个 IP 地址则用-在 ipv4.address 前面。
# 添加 DNS
[root@localhost ~]# nmcli connection modify ens160 +ipv4.dns '114.114.114.114' [root@localhost ~]#
删除用减号即可。
3.4 使配置生效
前面输入的命令都没有生效,要使配置生效,有下面两种方法:
方法一:重启 NetworkManager 服务(重启所有网络连接)
[root@localhost ~]# systemctl restart NetworkManager [root@localhost ~]#
执行后,我们用ip a或者nmcli device show ens160查看一下:
方法 2:重载配置文件并重启指定连接
nmcli connection reload nmcli connection down ens160 nmcli connection up ens160
3.5 创建新连接
# 创建 DHCP 连接
[root@localhost ~]# nmcli connection add type ethernet con-name "ens17-dhcp" ifname ens17 ipv4.method auto Connection 'ens17-dhcp' (e4d60075-cafc-4322-b774-305812bfab45) successfully added. [root@localhost ~]#
# 创建静态 IP 连接
[root@localhost ~]# nmcli connection add type ethernet con-name "eth17-static" ifname eth17 \ ipv4.addresses '172.16.251.100/24' \ ipv4.gateway '172.16.251.254' \ ipv4.dns '8.8.8.8' \ ipv4.method manual Connection 'eth17-static' (bdd28b9a-a2f2-40c1-a25a-461e263d0bae) successfully added. [root@localhost ~]#
完成后,查看:
[root@localhost system-connections]# ls ens160.nmconnection ens17-dhcp.nmconnection eth17-static.nmconnection [root@localhost system-connections]#
4 常用场景
场景 1:快速修改 IP 和 DNS
# 一次性完成配置修改 nmcli connection modify eth0 \ ipv4.addresses '192.168.1.100/24' \ ipv4.gateway '192.168.1.254' \ ipv4.dns '8.8.8.8' \ ipv4.method manual # 立即生效 nmcli connection up eth0
场景 2:临时测试配置
# 添加临时 IP(不永久保存) nmcli connection modify eth0 +ipv4.addresses '10.0.0.100/24' nmcli connection up eth0 # 测试完成后删除 nmcli connection modify eth0 -ipv4.addresses '10.0.0.100/24' nmcli connection up eth0
场景 3:查看当前配置详情
# 查看当前生效的配置 nmcli -p connection show eth0 # 查看设备详细信息 nmcli -p device show eth0
场景 4:网络故障排查
# 检查网络连接状态 nmcli networking connectivity check # 重新扫描网络设备 nmcli device rescan # 查看 NetworkManager 日志 journalctl -u NetworkManager -f
5.新旧版本对比
| 项目 | CentOS7/RHEL7 | CentOS8/RHEL8+ |
|---|---|---|
| 配置文件位置 | /etc/sysconfig/network-scripts/ |
/etc/NetworkManager/system-connections/ |
| 配置文件格式 | ifcfg 格式 | keyfile 格式(INI 格式) |
| 管理工具 | systemctl restart network |
nmcli + systemctl restart NetworkManager |
| 推荐方法 | 修改配置文件 | 使用 nmcli 命令 |
注意:RHEL8/9 仍支持 ifcfg 格式,但不推荐使用。
6.总结
记住这三个最常用命令:
nmcli device status # 查看状态 nmcli connection modify eth0 ... # 修改配置 nmcli connection up eth0 # 立即生效
日常维护流程:
nmcli device status # 查看当前状态 nmcli connection modify # 修改配置 nmcli connection up # 应用配置 nmcli connection show # 验证配置
以上关于RHEL8/CentOS8+:NetworkManager网络管理工具nmcli的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » RHEL8/CentOS8+:NetworkManager网络管理工具nmcli

微信
支付宝