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

《 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.xdnf.cn/news/18920.html

相关文章:

  • 28 FlashAttention
  • sudo 升级
  • 牛客周赛 Round 106(小苯的方格覆盖/小苯的数字折叠/ 小苯的波浪加密器/小苯的数字变换/小苯的洞数组构造/ 小苯的数组计数)
  • “华生科技杯”2025年全国青少年龙舟锦标赛在海宁举行
  • Linux网络套接字
  • 0825 http梳理作业
  • 自由学习记录(88)
  • springboot中操作redis的步骤
  • 将盾CDN:高防CDN和游戏盾有什么区别?
  • 【数据结构】LeetCode160.相交链表 138.随即链表复制 牛客——链表回文问题
  • SQL每日一练
  • 盲盒经济新风口:盲盒抽谷机小程序系统开发全解析
  • 深度学习-----《PyTorch神经网络高效训练与测试:优化器对比、激活函数优化及实战技巧》
  • Telematics Control Unit(TCU)的系统化梳理
  • 数据结构:红黑树(Red-Black Tree)
  • git开发基础流程
  • Springboot应用如何与SkyWalking集成,并使用Docker进行发布
  • Python爬虫实战:研究amazon-scrapy,构建亚马逊电商数据采集和分析系统
  • 扣子智能体商业化卡在哪?井云系统自动化交易+私域管理,闭环成交全流程拆解
  • 小程序开发指南(四)(UI 框架整合)
  • 机器视觉的3C玻璃盖板丝印应用
  • three.js+WebGL踩坑经验合集(8.3):合理设置camera.near和camera.far缓解实际场景中的z-fighting叠面问题
  • 如何在IDEA中使用Git
  • MyBatis-Plus 快速入门 -常用注解
  • 使用阿里云实现短信注册
  • SAVITECH盛微先进SAVIAUDIO音频解码芯片方案与应用
  • ValueTask 实战指南:解锁 .NET 异步编程的性能秘密
  • window显示驱动开发—混合系统 DDI 和 dList DLL 支持
  • 【P2P】P2P主要技术及RELAY服务实现
  • mac设置鼠标滚轮方向