RHEL8/CentOS8+:NetworkManager网络管理工具nmcli

AI 概述
文章介绍nmcli这一NetworkManager的命令行管理工具。CentOS8/RHEL8及以后版本,网络配置有重大变化,配置文件位置改为/etc/NetworkManager/system-connections/,使用keyfile格式。接着详细阐述nmcli常用命令,包括查看网络状态、修改网卡配置、添加/删除配置、使配置生效、创建新连接等。还列举了快速修改IP和DNS、临时测试配置等常用场景。最后对比新旧版本差异,强调RHEL8/9不推荐使用ifcfg格式,并总结最常用命令与日常维护流程。
目录
文章目录隐藏
  1. 1. 什么是 nmcli?
  2. 2. 配置文件位置变化
  3. 3.nmcli 的常用命令
  4. 4 常用场景
  5. 5.新旧版本对比
  6. 6.总结

在 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 服务生效。

RHEL8/CentOS8+:NetworkManager 网络管理工具 nmcli

2.2 CentOS8/RHEL8 及以后版本

重大变化:默认不再使用ifcfg格式,配置文件位置改为:

/etc/NetworkManager/system-connections/

原来的目录下只有一个说明文件:

CentOS8/RHEL8 及以后版本
该文件(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]# 

进入 RHEL 9 网卡配置目录
它使用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]# 

使用 keyfile 格式(INI 文件格式)
关于该文件,它采用 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

nmcli 的常用命令关于 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查看一下:

重启 NetworkManager 服务方法 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的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » RHEL8/CentOS8+:NetworkManager网络管理工具nmcli

发表回复