nmcli 是什么
nmcli 是 NetworkManager 的命令行前端,把网卡、连接配置与状态统一成 device(设备)和 connection(连接)两类对象。它取代了手工编辑 ifcfg 文件的传统做法:改 IP、网关、DNS 都通过 con modify 完成,配置持久化在 NetworkManager 自己的存储里,重启后仍然生效。
基本信息
| 适用平台 | RHEL、CentOS、Fedora、Ubuntu Server 等默认使用 NetworkManager 的发行版 |
|---|---|
| 命令语法 | nmcli [device|connection|general] 子命令 |
| 常用子命令 | dev status 设备状态、con show 连接列表、con modify 改配置、con up/down 启停连接、dev wifi list 扫描无线 |
| 持久化位置 | /etc/NetworkManager/system-connections/ 下的连接文件 |
| 权限说明 | 查看状态普通用户即可,修改连接需要 root |
典型使用场景
- 配置静态 IP:把 DHCP 改为 manual 并写地址、网关、DNS
- 排查网卡状态:确认设备是否被托管、连接是否激活
- 临时切换:用 con up 或 con down 快速切换有线与无线
- 多网卡与多连接:同一网卡配置多个连接并按需激活
- 批量部署:脚本里用 nmcli 固化网络配置,避免手改文件出错
常用示例
常用示例
nmcli device status # 网卡与连接状态概览
nmcli connection show # 列出全部连接及其 UUID
nmcli -f NAME,UUID,DEVICE connection show # 只看关心的字段
nmcli device wifi list # 扫描可用无线网络
nmcli connection modify 'eth0' ipv4.method manual ipv4.addresses 10.0.0.5/24 ipv4.gateway 10.0.0.1 ipv4.dns '1.1.1.1'
nmcli connection up 'eth0' # 应用修改并持久化
nmcli connection show 'eth0' | grep -E 'ipv4.(method|addresses|gateway|dns)'设备与连接的分工
| 命令 | 作用 | 注意 |
|---|---|---|
| nmcli device status | 设备与托管状态 | unmanaged 说明该设备未被 NetworkManager 接管 |
| nmcli connection show | 连接清单与 UUID | 连接名可重复时用 UUID 更稳 |
| con modify | 修改配置项 | 只改配置,不立即生效 |
| con up 与 down | 激活与停用连接 | 操作活跃连接会瞬断 |
| con add | 新增连接 | 常与 con up 搭配完成首次激活 |
| dev wifi list | 扫描无线 | 扫描期间无线性能可能短暂下降 |
连接名可以改,UUID 不会:脚本与自动化里用 UUID 或数字索引来引用连接,比用显示名可靠。另外 nmcli -f 字段列表 能让输出稳定,便于脚本解析,比默认的多行表格友好。
修改或重启正在使用的连接会瞬断网络:远程 SSH 场景下执行 nmcli con up 前,务必确认带外通道(IPMI、云控制台)可用,或改用定时任务与至少两个网卡双活来规避风险。
改之前先留一份现状:nmcli connection show '连接名' 会把 ipv4.method、addresses、gateway、dns 等全部关键值列出来,把这份输出存到文件里,出问题可以照着改回去。对应的连接文件在 /etc/NetworkManager/system-connections/ 下,权限与属主由 NetworkManager 管理,不建议手工编辑。改 DNS 前还要确认解析由谁负责:NetworkManager 可能接管 resolv.conf,装有 systemd-resolved 时它甚至是软链接,手改这个文件会被覆盖。