news 2026/6/18 14:19:07

Linux(Ubuntu22.04/CentOS8)NetworkManager(nmcli)实战:从基础配置到网络诊断

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux(Ubuntu22.04/CentOS8)NetworkManager(nmcli)实战:从基础配置到网络诊断

1. NetworkManager基础入门

第一次接触Linux网络管理时,我也曾被各种配置文件搞得晕头转向。直到发现了NetworkManager这个神器,才发现原来网络配置可以如此简单。NetworkManager是Linux系统中最主流的网络管理服务,特别是在Ubuntu22.04和CentOS8这些现代发行版中,它已经成为了默认的网络管理工具。

要使用nmcli命令,首先得确认NetworkManager服务正在运行。我习惯用这个命令快速检查服务状态:

systemctl status NetworkManager

如果看到绿色的"active (running)"字样,说明服务已经启动。如果没运行,可以用systemctl start NetworkManager来启动它。建议设置为开机自启,避免每次重启都要手动启动:

systemctl enable --now NetworkManager

新手常犯的一个错误是记不住命令格式。其实nmcli设计得非常人性化,大多数命令都支持简写。比如查看网络连接状态,完整命令是nmcli networking connectivity,但实际使用时完全可以简写成nmcli n c。这里的"n"代表"networking","c"代表"connectivity"。这种简写规则在后续所有命令中都适用。

2. 网络连接状态深度解析

网络连接状态是排查问题的第一道关卡。NetworkManager用五种状态清晰标识当前网络状况:

  • full:完全连接,可以正常上网
  • limited:能连接到网络但无法访问互联网(比如路由器没拨号)
  • portal:需要认证登录(常见于酒店、机场WiFi)
  • none:完全没有网络连接
  • unknown:状态未知(通常出现在服务异常时)

我经常用这个命令快速诊断网络:

nmcli n c

曾经有一次服务器突然无法访问外网,用这个命令发现状态是"limited",立即判断是网关出了问题,果然发现是网关配置被误改了。这种状态检查比直接ping测试更高效,因为它能区分是本地连接问题还是外网访问问题。

更详细的系统网络状态可以通过general status查看:

nmcli g

这个命令会显示包括WiFi硬件开关状态、WWAN(移动网络)状态等全面信息。特别是在笔记本上,经常需要确认无线硬件开关是否打开,这个命令就能一目了然。

3. 连接管理实战技巧

3.1 查看和管理网络连接

列出所有网络连接的命令是我使用频率最高的:

nmcli c

加上--active参数可以只显示活跃连接,这在服务器多网卡环境下特别有用:

nmcli c s -a

每个连接都有详细的属性配置,查看某个连接的完整信息(比如ens33网卡):

nmcli c s ens33

启动和关闭连接的操作也很直观:

nmcli c up ens33 # 启动连接 nmcli c down ens33 # 关闭连接

3.2 静态IP配置详解

动态IP(DHCP)虽然方便,但服务器环境通常需要静态IP。配置静态IP需要修改几个关键参数:

nmcli c m ens33 ipv4.addresses 192.168.1.100/24 nmcli c m ens33 ipv4.gateway 192.168.1.1 nmcli c m ens33 ipv4.dns "8.8.8.8 8.8.4.4" nmcli c m ens33 ipv4.method manual

这里有个重要顺序:必须先设置IP地址,再改method为manual。我有次搞反了顺序,结果配置不生效,排查了好久才发现这个问题。

DNS配置支持添加多个服务器,用空格分隔。如果想保留原有DNS并新增一个,可以这样操作:

nmcli c m ens33 +ipv4.dns 1.1.1.1

3.3 连接配置的增删改查

创建新连接(比如给第二个网卡ens36):

nmcli c add type ethernet con-name ens36 ifname ens36

删除不再需要的连接:

nmcli c delete ens36

修改连接属性时,可以用空引号恢复默认值。比如把DHCP改回自动获取:

nmcli c m ens33 ipv4.method ""

4. 高级网络诊断与排错

4.1 连接性检查工具

NetworkManager内置了强大的诊断功能。检查网络连接性:

nmcli networking connectivity check

这个命令会主动测试网络连接状态,比被动查看状态更准确。在配置完网络后,我习惯用这个命令确认配置是否真的生效。

对于更复杂的网络问题,可以启用详细日志:

nmcli general logging level DEBUG domains ALL

查看日志需要journalctl配合:

journalctl -u NetworkManager -f

4.2 配置文件管理

虽然建议使用nmcli命令修改配置,但了解配置文件结构对排错很有帮助。配置文件通常位于:

/etc/sysconfig/network-scripts/ifcfg-ens33

手动修改配置文件后,需要重载配置:

nmcli c reload

或者针对特定连接重载:

nmcli c load /etc/sysconfig/network-scripts/ifcfg-ens33

4.3 常见问题解决方案

问题1:修改静态IP后网络不通

  • 检查IP、子网掩码、网关是否匹配
  • 确认ipv4.method已改为manual
  • nmcli c up ens33重新激活连接

问题2:DNS不解析

  • 检查/etc/resolv.conf是否被其他服务覆盖
  • 在NetworkManager配置中添加ipv4.ignore-auto-dns yes
  • 确认DNS服务器地址正确且可达

问题3:无线连接不稳定

  • 检查WiFi硬件开关状态nmcli g
  • 尝试禁用电源管理nmcli c m wifi-name 802-11-wireless.powersave 2
  • 更新无线网卡驱动

5. 网络性能调优

5.1 MTU优化

不合适的MTU值会导致网络性能下降。查看当前MTU:

nmcli c show ens33 | grep mtu

修改MTU值(通常建议1500,但在某些VPN环境下可能需要调小):

nmcli c m ens33 ethernet.mtu 1400

5.2 IPv6禁用

如果网络环境不需要IPv6,禁用它可以减少不必要的网络开销:

nmcli c m ens33 ipv6.method disabled

5.3 连接优先级调整

当有多个网络连接时,可以设置优先级确保使用首选网络:

nmcli c m ens33 connection.autoconnect-priority 100 nmcli c m wifi-name connection.autoconnect-priority 50

数值越大优先级越高,当有线网络插入时自动优先使用有线连接。

6. 实战案例:企业级网络配置

假设需要为一台服务器配置以下网络环境:

  • 主网卡ens33:192.168.1.100/24,网关192.168.1.1,DNS 8.8.8.8
  • 备用网卡ens37:10.0.0.100/24(无网关)
  • 禁用IPv6
  • 开机自动连接

完整配置命令如下:

# 配置主网卡 nmcli c m ens33 ipv4.addresses 192.168.1.100/24 nmcli c m ens33 ipv4.gateway 192.168.1.1 nmcli c m ens33 ipv4.dns 8.8.8.8 nmcli c m ens33 ipv4.method manual nmcli c m ens33 ipv6.method disabled nmcli c m ens33 connection.autoconnect yes # 配置备用网卡 nmcli c add type ethernet con-name ens37 ifname ens37 nmcli c m ens37 ipv4.addresses 10.0.0.100/24 nmcli c m ens37 ipv4.method manual nmcli c m ens37 ipv6.method disabled nmcli c m ens37 connection.autoconnect yes # 应用配置 nmcli c up ens33 nmcli c up ens37

配置完成后,用以下命令验证:

nmcli c s ens33 nmcli c s ens37 ip route show ping -c 4 8.8.8.8

在实际生产环境中,建议将这些命令写成脚本,方便批量部署和快速恢复配置。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/18 14:17:59

I2C总线10位寻址机制详解:原理、实战与混合总线管理

1. 项目概述:为什么我们需要10位寻址? 在嵌入式开发和硬件设计领域,I2C总线(Inter-Integrated Circuit)几乎是工程师的“老朋友”了。它凭借其简洁的两线制(SDA数据线和SCL时钟线)、支持多主多从…

作者头像 李华
网站建设 2026/6/18 14:14:48

嵌入式GUI字体技术:XBF与TTF原理、选型与实战优化

1. 嵌入式GUI字体技术:从原理到实战的深度解析在嵌入式图形界面开发中,字体显示是决定用户体验好坏的关键一环,却也是最容易被忽视的“内存杀手”和“性能瓶颈”。你是否遇到过这样的困境:产品需要显示多国语言,但内置…

作者头像 李华
网站建设 2026/6/18 14:12:39

Microchip 24AA32A/24LC32A EEPROM选型、电路设计与软件驱动全指南

1. 项目概述:为什么需要一份详尽的EEPROM选型指南?在嵌入式开发或者硬件设计里,存储配置参数、校准数据、运行日志这类小体量但至关重要的信息,EEPROM(电可擦可编程只读存储器)几乎是绕不开的元件。而Micro…

作者头像 李华
网站建设 2026/6/18 14:09:23

魔兽争霸III终极优化指南:WarcraftHelper让你的经典游戏焕然一新

魔兽争霸III终极优化指南:WarcraftHelper让你的经典游戏焕然一新 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III在现代…

作者头像 李华
网站建设 2026/6/18 14:05:32

AI Agent Loop 与新术语地图

概述 AI 应用开发的关注点正在从单次的 ​**Prompt Engineering(提示词工程)​,逐步转向 Agent Loop(智能体循环) 与 ​Agentic Workflow(智能体工作流)**​。 过去更常见的问题是:如…

作者头像 李华
网站建设 2026/6/18 14:03:41

Node.js 24.16.0 (LTS)下载与安装(最新的长期支持板)

我用夸克网盘给你分享了「Node.js 24.16.0 (LTS)」,点击链接或复制整段内容,打开「夸克APP」即可获取。 链接:https://pan.quark.cn/s/e65b8e5102d5 安装教程: 【node.js】windows下如何更换node.js版本_windows node替换-CSDN博…

作者头像 李华