1. nmcli与NetworkManager基础入门第一次接触nmcli是在五年前的一个深夜当时服务器网络突然中断传统的ifconfig命令怎么都配置不成功。在同事的提醒下尝试了nmcli没想到三行命令就解决了问题。这个经历让我彻底迷上了这个强大的网络管理工具。nmcli是NetworkManager的命令行客户端就像是一个万能遥控器可以控制Linux系统中的所有网络设备。与传统的网络配置方式相比它最大的优势在于实时生效修改配置无需重启网络服务状态感知可以实时监控网络连接状态配置灵活支持多种网络类型以太网、Wi-Fi、VPN等先来看几个最基础的命令# 查看NetworkManager服务状态 systemctl status NetworkManager # 启动服务 systemctl start NetworkManager # 设置开机自启 systemctl enable NetworkManager新手常犯的错误是记不住命令格式这里有个小技巧nmcli的命令结构就像是在说一个完整的句子。比如nmcli device show ens33就是在说网络管理器请显示ens33设备的详细信息。2. 网络信息查询实战技巧2.1 设备与连接状态查询上周帮一个朋友排查网络问题时发现他花了半小时在配置文件中找网卡信息。其实用nmcli只需要几秒钟# 查看所有网络设备 nmcli device status # 查看指定网卡详情以ens33为例 nmcli device show ens33这个命令会返回一堆信息重点看这几个字段GENERAL.STATE连接状态100表示已连接IP4.ADDRESSIPv4地址IP4.GATEWAY默认网关IP4.DNSDNS服务器2.2 连接配置查询有时候我们需要查看具体的连接配置这时候要用到connection子命令# 列出所有连接配置 nmcli connection show # 只显示活跃连接 nmcli connection show --active这里有个实用技巧输出的UUID字段虽然很长但在脚本中比连接名更可靠。因为连接名可以修改但UUID是唯一的。3. 网络配置全流程详解3.1 创建新连接配置去年给公司部署新服务器时我总结了一套标准的网络配置流程。假设我们要为ens38网卡配置静态IP# 第一步创建连接配置 nmcli connection add con-name office_network ifname ens38 type ethernet \ ip4 192.168.1.100/24 gw4 192.168.1.1 # 第二步设置DNS nmcli connection modify office_network ipv4.dns 8.8.8.8 8.8.4.4 # 第三步激活连接 nmcli connection up office_network这里有几个容易踩的坑子网掩码要写成CIDR格式如/24多个DNS服务器要用空格分隔且整体用引号包裹修改配置后记得up连接才能生效3.2 动态IP配置如果是需要DHCP获取IP的场景命令更简单nmcli connection add con-name dhcp_profile ifname ens38 type ethernet \ ipv4.method auto4. 高级网络管理技巧4.1 多IP地址绑定在搭建测试环境时经常需要给网卡配置多个IP。nmcli可以很优雅地实现# 添加辅助IP nmcli connection modify office_network ipv4.addresses 192.168.1.101/24 # 删除特定IP nmcli connection modify office_network -ipv4.addresses 192.168.1.101/244.2 连接优先级调整当系统有多个网络连接时可以通过调整路由metric来控制优先级nmcli connection modify office_network ipv4.route-metric 100数值越小优先级越高。这个技巧在同时连接有线网络和WiFi时特别有用。4.3 网络诊断与监控nmcli还内置了一些实用的诊断功能# 实时监控网络状态变化 nmcli monitor # 测试网络连通性 nmcli networking connectivity check最近一次服务器迁移中我就是用nmcli monitor发现了网卡频繁断开的问题最终定位是网线接触不良。5. 生产环境实战案例5.1 批量部署脚本示例这是我在实际工作中使用的网络初始化脚本片段#!/bin/bash # 配置以太网连接 configure_network() { local iface$1 local ip$2 local gateway$3 nmcli connection add con-name ${iface}_static ifname $iface type ethernet \ ip4 ${ip}/24 gw4 $gateway nmcli connection modify ${iface}_static ipv4.dns 192.168.1.53 8.8.8.8 nmcli connection up ${iface}_static } # 调用示例 configure_network ens38 192.168.1.150 192.168.1.15.2 网络配置备份与恢复重要服务器迁移前我总会先备份网络配置# 备份所有连接配置 nmcli connection show network_backup.txt # 恢复特定连接 nmcli connection reload nmcli connection up connection-name6. 常见问题排查指南遇到网络问题时可以按照这个检查清单来排查检查物理连接状态nmcli device show | grep -i carrier如果CARRIER是off说明网线没插好验证IP配置是否生效nmcli connection show --active ip addr show检查路由表ip route show测试DNS解析nmcli dev show | grep DNS dig example.com记得去年处理过一个特别棘手的问题客户反映网络时断时续。最后发现是NetworkManager的自动连接功能与手动配置冲突用以下命令解决了问题nmcli connection modify connection-name connection.autoconnect no