一、学习目标
本指南专为网络管理零基础的新手设计,目标是让你掌握 Rocky Linux 9 中通过 nmcli
命令行工具完成网络配置的核心技能,包括查看网络状态、管理连接、配置静态 IP/DNS、无线网络连接等,同时理解相关服务原理和配置文件作用。
二、基础概念与准备工作
1. 为什么需要学网络管理?
-
• 服务器/工作站需要联网才能提供服务(如 Web、数据库)或下载更新。
-
• 正确配置 IP 地址、网关、DNS 是联网的基础。
-
• Rocky Linux 9 默认使用 NetworkManager 管理网络(替代了传统的 network 服务),而
nmcli
是它的命令行工具,比图形界面更适合服务器环境(稳定、可脚本化)。
2. 重要注意事项
-
• 禁止冲突操作 :在使用
nmcli
配置网络前,不要手动用ip addr
、ifconfig
等命令直接操作网卡接口,否则会导致配置冲突(例如 IP 被覆盖)。 -
• 服务必须运行 :所有
nmcli
命令生效的前提是 NetworkManager 服务处于运行状态(后续会教如何检查和管理该服务)。
三、NetworkManager 服务管理(基础操作)
1. 服务状态检查与控制
NetworkManager 是管理网络的"大脑",通过以下命令控制其运行:
需求 | 命令示例 | 说明 |
---|---|---|
查看服务运行状态 | systemctl status NetworkManager |
若显示 "active (running)" 表示正在运行;若未运行,需启动。 |
启动服务 | systemctl start NetworkManager |
首次安装后或服务意外停止时使用。 |
重启服务 | systemctl restart NetworkManager |
修改网络配置后,必须重启服务使配置生效。 |
停止服务 | systemctl stop NetworkManager |
谨慎使用!停止后所有网络连接会断开(仅调试时用)。 |
设置开机自动启动 | systemctl enable NetworkManager |
确保服务器重启后网络自动管理。 |
禁止开机自动启动 | systemctl disable NetworkManager |
一般不建议禁用(除非明确需要其他网络管理方式)。 |
检查是否开机自启 | systemctl is-enabled NetworkManager |
返回 "enabled" 表示开机启动。 |
💡 小技巧:执行
systemctl
命令后,若提示权限不足(如普通用户),需在命令前加sudo
(例如sudo systemctl restart NetworkManager
)。
四、nmcli 命令详解(核心工具)
1. 命令基本结构
nmcli
的命令格式遵循以下规则:
**nmcli [选项] 对象 {命令 | help}
**
-
• 对象(OBJECT):指定操作的网络相关组件,常见有:
-
•
general
(网络整体状态,可简写为g
) -
•
device
(物理网卡/无线网卡等设备,可简写为d
) -
•
connection
(网络连接配置,可简写为c
)
-
-
• 命令(COMMAND) :对对象的具体操作,如查看状态(
status
)、显示详情(show
)、启用(up
)、禁用(down
)等。 -
• 选项(OPTIONS):控制输出格式或行为(后续会详细介绍)。
📌 示例:查看 NetworkManager 整体状态(简写为
nmcli g
)
nmcli general status # 完整写法 nmcli g # 简写(等价)
2. 常用选项(控制输出格式)
通过选项可以调整命令的输出样式,常用选项如下:
选项 | 缩写 | 说明 |
---|---|---|
简洁格式(无表头) | -t 或 --terse |
仅输出关键数据,无列名和分隔线(适合脚本处理)。 |
指定显示字段 | -f 或 --fields |
指定要显示的字段(多个字段用逗号分隔,例如 -f NAME,STATE )。 |
美观格式(带表头) | -p 或 --pretty |
输出带表头和分隔线的易读格式(默认推荐,适合人工查看)。 |
详细调试信息 | -v 或 --verbose |
显示详细过程(调试用,普通用户较少用)。 |
帮助信息 | -h 或 --help |
查看命令帮助(例如 nmcli connection help 查看连接相关命令帮助)。 |
📌 示例:以美观格式显示所有连接(简写为
nmcli c s -p
)
nmcli connection show -p # 完整写法 nmcli c s -p # 简写(等价)
3. 相关系统服务指令(补充)
除了 nmcli
,还需掌握 NetworkManager 服务的底层控制命令(通过 systemctl
):
功能 | 命令示例 |
---|---|
查看 NetworkManager 状态 | systemctl status NetworkManager |
启动服务 | systemctl start NetworkManager |
重启服务 | systemctl restart NetworkManager |
停止服务 | systemctl stop NetworkManager |
设置开机自启 | systemctl enable NetworkManager |
禁止开机自启 | systemctl disable NetworkManager |
检查是否开机自启 | systemctl is-enabled NetworkManager |
五、常用操作场景实战
1. 查看网络整体状态
(1)检查 NetworkManager 是否接管网络
nmcli networking # 或简写为 nmcli n
- • 作用:确认 NetworkManager 是否正在管理网络(若未接管,可能需手动启用)。
(2)查看网络连接状态(五种状态)
nmcli n connectivity # 或 nmcli general connectivity
-
• 返回结果说明:
-
•
full
:完全连接(正常上网)。 -
•
limited
:已连接但无法访问互联网(例如局域网内但无外网路由)。 -
•
portal
:已连接但需要网页认证(例如酒店/机场 WiFi)。 -
•
none
:未连接到任何网络。 -
•
unknown
:状态未知。
-
(3)开启/关闭网络总开关
nmcli n on # 开启网络管理(允许所有连接尝试联网)
nmcli n off # 关闭网络管理(所有连接将被禁用)
2. 查看与管理网络设备(网卡)
(1)显示所有网络设备状态
nmcli device status # 或简写为 nmcli d
-
• 输出示例:
DEVICE TYPE STATE CONNECTION ens33 ethernet connected ens33 wlan0 wifi disconnected -- lo loopback unmanaged --
-
• 关键列:
-
•
DEVICE
:网卡名称(如 ens33、eth0)。 -
•
TYPE
:设备类型(ethernet 以太网、wifi 无线网卡、loopback 本地环回)。 -
•
STATE
:当前状态(connected 已连接、disconnected 未连接、unmanaged 未被 NetworkManager 管理)。 -
•
CONNECTION
:当前使用的连接配置名称(若未连接则为空)。
-
-
(2)查看某个设备的详细信息
nmcli device show ens33 # 替换 ens33 为你的网卡名
- • 输出内容:包含 MAC 地址、IP 地址、网关、DNS 等详细信息(调试用)。
(3)连接/断开设备
# 启动设备(激活连接,需 root 权限)
sudo nmcli device connect ens33 # 或简写为 sudo nmcli d c ens33
# 断开设备(停止连接,需 root 权限)
sudo nmcli device disconnect ens33 # 或简写为 sudo nmcli d d ens33
(4)无线网络管理(如果服务器有无线网卡)
# 列出附近 WiFi 信号
nmcli device wifi list
# 连接 WiFi(替换 SSID 和密码)
nmcli device wifi connect "你的WiFi名称" password "你的密码"
# 断开 WiFi
nmcli device wifi disconnect
3. 管理网络连接(核心重点!)
网络连接(Connection)是 NetworkManager 中的配置模板,定义了如何连接网络(如 IP 地址、网关、DNS 等)。一个网卡可以有多个连接配置(例如一个有线网卡配置静态 IP 和 DHCP 两个连接)。
(1)查看所有连接
nmcli connection show # 或简写为 nmcli c s
- • 输出内容:包含所有已保存的连接名称(如 ens33、Wired connection 1)、UUID(唯一标识)、类型(ethernet/wifi)、设备名等。
(2)查看活动连接(当前正在使用的)
nmcli connection show --active # 或简写为 nmcli c s -a
(3)查看某个连接的详细信息
nmcli connection show ens33 # 替换 ens33 为你的连接名或 UUID
# 简写:nmcli c s ens33
(4)启用/禁用连接
# 启动连接(如 ens33,需 root 权限)
sudo nmcli connection up ens33 # 或简写为 sudo nmcli c up ens33
# 停止连接(如 ens33,需 root 权限)
sudo nmcli connection down ens33 # 或简写为 sudo nmcli c down ens33
(5)删除连接(谨慎操作!)
sudo nmcli connection delete ens33 # 删除名为 ens33 的连接配置
4. 修改连接配置(静态 IP/DNS/网关)
通过 nmcli connection modify
可以修改已存在的连接配置(永久生效)。
(1)命令格式
nmcli connection modify 连接名 [ + | - ] 选项 选项值
# 简写:nmcli c m 连接名 [ + | - ] 选项 选项值
-
• 关键说明:
-
• 必须按顺序配置 :若要设置静态 IP 的网关/DNS,需先确保 IPv4 配置方式为手动(
ipv4.method manual
)。 -
• 选项前缀:
-
• 无符号(如
ipv4.method
):表示设置该选项的值(覆盖原有值)。 -
•
+
(如+ipv4.addresses
):表示添加一个额外的值(例如多个 IP 地址)。 -
•
-
(如-ipv4.dns
):表示删除指定的值(较少用)。
-
-
(2)常用配置示例
# 修改 IPv4 地址和子网掩码(如 192.168.80.10/24)
nmcli c m ens33 ipv4.addresses 192.168.80.10/24
# 添加第二个 IP 地址(如 192.168.80.100/24)
nmcli c m ens33 +ipv4.addresses 192.168.80.100/24
# 设置为静态 IP(默认是自动 dhcp,需先改这个!)
nmcli c m ens33 ipv4.method manual
# 修改默认网关
nmcli c m ens33 ipv4.gateway 192.168.80.2
# 修改 DNS(多个用空格隔开)
nmcli c m ens33 ipv4.dns 192.168.80.2
# 添加额外 DNS(如 223.5.5.5)
nmcli c m ens33 +ipv4.dns 223.5.5.5
# 禁用 IPv6(可选值:disabled/auto/manual)
nmcli c m ens33 ipv6.method ignored
# 设置开机自动连接(默认通常是 yes)
nmcli c m ens33 connection.autoconnect yes
(3)重置选项为默认值
如果修改错了,可以通过空引号 ""
将选项恢复默认:
nmcli c m ens33 ipv4.method "" # 恢复 IPv4 配置方式为默认(通常是 auto/dhcp)
(4)查看所有可配置选项
man 5 nm-settings-nmcli # 打开手册,重点查看 "connection setting" 和 "ipv4 setting" 部分
- • 手册中会详细说明每个选项的含义(例如
ipv4.addresses
格式、ipv4.gateway
作用等)。
5. 新增连接配置(手动创建新配置)
当需要为网卡添加一个新的连接模板(例如同时保留 DHCP 和静态 IP 两种配置)时,使用 nmcli connection add
。
(1)命令格式
nmcli connection add type 连接类型 选项 选项值
# 简写:nmcli c a type 连接类型 选项 选项值
- • 常用连接类型 :以太网→
ethernet
(或802-3-ethernet
)。
(2)创建以太网连接的完整示例
nmcli c a type ethernet \
con-name ens36 \ # 自定义连接名(如 ens36)
ifname ens36 \ # 网卡设备名(必须和实际一致!)
ipv4.addresses 192.168.1.100/24 \ # IP 和子网掩码
ipv4.gateway 192.168.1.1 \ # 网关
ipv4.dns "8.8.8.8 8.8.4.4" \ # DNS
ipv4.method manual # 静态 IP
-
• 关键选项说明:
-
•
con-name
(或connection.id
):连接的名称(用于后续通过nmcli c up ens36
启动)。 -
•
ifname
(或connection.interface-name
):网卡设备名(如 ens36,必须和实际硬件一致)。 -
•
ipv4.method
:配置方式(manual
静态 IP,auto
自动 DHCP)。 -
•
autoconnect
:是否开机自动连接(yes
/no
,默认通常是yes
)。
-
(3)分步添加(更灵活)
如果不想一次性输入所有参数,可以分步操作:
# 1. 先创建基础连接
nmcli c a type ethernet con-name ens36 ifname ens36
# 2. 配置 IP 地址
nmcli c mod ens36 ipv4.addresses 192.168.1.100/24
# 3. 配置 DNS
nmcli c mod ens36 ipv4.dns "8.8.8.8 8.8.4.4"
# 4. 设置为静态 IP
nmcli c mod ens36 ipv4.method manual
# 5. 激活连接
nmcli c up ens36
(4)避免冲突
-
• 连接名(如
ens36
)和网卡设备名(如ens36
)不能和其他连接重复! -
• 修改后可能需要重启 NetworkManager(
systemctl restart NetworkManager
)或系统使配置生效。
6. 重载配置文件
当通过文本编辑器修改了 NetworkManager 的配置文件后,需要重载配置使其生效。
(1)重载所有连接
nmcli connection reload # 或简写为 nmcli c reload
(2)重载指定连接
nmcli connection load /etc/NetworkManager/system-connections/ens33.nmconnection
# 或简写:nmcli c l ifcfg-ens33
- • 配置文件路径 :Rocky 9 中 NetworkManager 的连接配置文件默认存放在
/etc/NetworkManager/system-connections/
目录下,文件名格式为连接名.nmconnection
(例如ens33.nmconnection
)。
六、网络配置方法对比(四种方式)
方法 1:使用 nmcli 命令(推荐)
-
• 优点:命令行操作,可脚本化,适合服务器。
-
• 步骤 :通过
nmcli connection modify
修改连接参数(如 IP、DNS),然后reload
+up
生效。
方法 2:使用 nmtui 文本界面工具(适合不熟悉命令的用户)
-
• 操作流程:
-
- 运行
nmtui
命令(进入文本图形界面)。
- 运行
-
- 选择 "Edit a connection" → 选择要编辑的网络接口(如 ens33)。
-
- 设置 IP(静态/动态)、网关、DNS 等参数 → 点击 "OK" 保存。
-
- 返回主界面选择 "Activate a connection" 启用配置。
-
方法 3:直接修改配置文件(高级用户)
-
• 配置文件路径 :Rocky 9 中 NetworkManager 的连接配置文件存放在
/etc/NetworkManager/system-connections/
目录下,文件名格式为连接名.nmconnection
(例如ens33.nmconnection
)。 -
• 关键配置字段:
-
•
[ipv4]
部分:设置method=manual
(静态)、addresses=IP/子网掩码
、gateway=网关
、dns=DNS服务器
。 -
•
[connection]
部分:设置id=连接名
、interface-name=网卡名
、autoconnect=yes
(开机自启)。
-
方法 4:临时用 ip 命令(仅测试用,重启失效)
-
• 设置静态 IP:
ip addr add 192.168.1.10/24 dev ens33
-
• 设置默认网关:
ip route add default via 192.168.1.2 dev ens33
-
• 配置 DNS (临时):编辑
/etc/resolv.conf
(但重启后会被覆盖,不推荐长期使用)。nameserver 8.8.8.8 nameserver 114.114.114.114
⚠️ 注意:方法 4 的配置在系统重启后会丢失,生产环境请优先用前三种方法!
七、核心命令速查表
需求 | 命令示例(简化版) | 说明 |
---|---|---|
查看 NetworkManager 状态 | nmcli g |
等同于 nmcli general status |
查看设备状态 | nmcli d |
显示所有网卡状态 |
查看连接列表 | nmcli c s |
显示所有保存的连接 |
启动连接 | nmcli c up ens33 |
启用名为 ens33 的连接 |
停止连接 | nmcli c down ens33 |
禁用名为 ens33 的连接 |
修改 IP(静态) | nmcli c m ens33 ipv4.method manual nmcli c m ens33 ipv4.addresses 192.168.1.10/24 nmcli c m ens33 ipv4.gateway 192.168.1.1 nmcli c m ens33 ipv4.dns 8.8.8.8 |
必须按顺序设置(先 method manual) |
新增连接 | nmcli c a type ethernet con-name ens36 ifname ens36 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8 |
一次性创建静态 IP 连接 |
重载配置 | nmcli c reload |
使修改后的配置文件生效 |