当前位置: 首页 > news >正文

《 nmcli网络管理学习》

一、学习目标

本指南专为网络管理零基础的新手设计,目标是让你掌握 Rocky Linux 9 中通过 nmcli命令行工具完成网络配置的核心技能,包括查看网络状态、管理连接、配置静态 IP/DNS、无线网络连接等,同时理解相关服务原理和配置文件作用。


二、基础概念与准备工作

1. 为什么需要学网络管理?

  • 服务器/工作站需要联网才能提供服务(如 Web、数据库)或下载更新。

  • 正确配置 IP 地址、网关、DNS 是联网的基础。

  • Rocky Linux 9 默认使用 ​NetworkManager​ 管理网络(替代了传统的 network 服务),而 nmcli是它的命令行工具,比图形界面更适合服务器环境(稳定、可脚本化)。

2. 重要注意事项

  • 禁止冲突操作​:在使用 nmcli配置网络前,不要手动用 ip addrifconfig等命令直接操作网卡接口,否则会导致配置冲突(例如 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" \       # DNSipv4.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),然后 reloadup生效。

方法 2:使用 nmtui 文本界面工具(适合不熟悉命令的用户)

  • 操作流程​:

    1. 1.

      运行 nmtui命令(进入文本图形界面)。

    2. 2.

      选择 "Edit a connection" → 选择要编辑的网络接口(如 ens33)。

    3. 3.

      设置 IP(静态/动态)、网关、DNS 等参数 → 点击 "OK" 保存。

    4. 4.

      返回主界面选择 "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

使修改后的配置文件生效

http://www.dtcms.com/a/349582.html

相关文章:

  • [新启航]医疗器械深孔加工:新启航激光频率梳攻克 130mm 深度,实现 2μm 精度测量
  • Windows Server 2019 DateCenter搭建 FTP 服务器
  • MOLEX莫仕/莫莱克斯借助PCIe发展,引领数据中心的未来
  • 从Java全栈到前端框架的深度探索
  • gte2_common的作用
  • 数据集成平台-Kafka实时同步Doris能力演示
  • Appium学习笔记
  • 如何判断投手甲的认知比投手乙高?
  • “华生科技杯”2025年全国青少年龙舟锦标赛在海宁举行
  • 暴雨蓝色预警发布:我国多地将迎强降雨,局地伴有强对流天气 疾风气象大模型
  • 《李沐读论文》系列笔记:论文读写与研究方法【更新中】
  • 【机器学习】(11) --回归树算法
  • 【机器学习基础】朴素贝叶斯算法详解:从原理到实战
  • 机器学习-朴素贝叶斯
  • 机器学习采样方法深度详解:过采样、下采样与混合采样(附完整代码、可视化与多场景实战)
  • 机器学习:贝叶斯派
  • 【Linux | 网络】多路转接IO之poll
  • 编写Linux下usb设备驱动方法:usb设备驱动实现流程
  • AI-调查研究-60-机器人 机械臂技术发展趋势详解:工业、服务与DIY三大阵营全解析
  • rabbitmq集群
  • 基于RFM模型的客户群体大数据分析及用户聚类系统的设计与实现
  • AI+数据库:国内DBA职业发展与国产化转型实践
  • Torch入门小知识点--总结性语言
  • CSS基础学习第一天
  • The Google File System 详解
  • 【Docker基础】Docker-compose进阶配置:健康检查与服务就绪
  • 一、添加Viewport3DX,并设置相机、灯光
  • Java-包装类
  • 深度学习-----《PyTorch神经网络高效训练与测试:优化器对比、激活函数优化及实战技巧》
  • 【数据结构】栈和队列——队列