nmcli是networkmanager的命令行接口,用于管理网络连接,通过“连接”抽象统一配置、切换和启用网络参数,不直接修改底层ifcfg文件;支持设备状态查看、连接增删改查、静态/dhcp配置及dns网关动态调整。

nmcli 是 NetworkManager 的命令行接口,专为管理网络连接设计,适合服务器、无图形环境或自动化场景。它不直接修改底层配置文件(如 /etc/sysconfig/network-scripts/ifcfg-*),而是通过 NetworkManager 服务统一管理“连接”(connection)这一抽象对象——每个连接是一套可保存、可切换、可复用的网络参数集合。
查看当前连接与设备状态
先确认系统有哪些网络设备和已定义的连接:
-
列出所有网络设备及其状态:运行
nmcli device status,能看到eth0、wlan0等是否“已连接”“已断开”或“未托管”; -
列出所有已保存的连接配置:运行
nmcli connection show,显示名称、UUID、类型(ethernet/Wi-Fi)、绑定设备等; -
查看某连接的完整配置:例如
nmcli connection show "有线连接 1",会输出 IPv4 方法、地址、网关、DNS、自动连接开关等关键字段; -
快速检查连通性:执行
nmcli networking connectivity,返回full、limited或none,比 ping 更反映实际路由与 DNS 可达性。
创建并启用一个静态 IP 连接
以太网接口 ens33 配置静态地址 192.168.1.100/24,网关 192.168.1.1,DNS 8.8.8.8,114.114.114.114:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 添加新连接:
sudo nmcli connection add type ethernet con-name static-ens33 ifname ens33; - 设置 IPv4 地址与网关:
sudo nmcli connection modify static-ens33 ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1; - 设置 DNS 并禁用 DHCP 自动获取:
sudo nmcli connection modify static-ens33 ipv4.dns "8.8.8.8,114.114.114.114" ipv4.method manual; - 允许开机自启并立即激活:
sudo nmcli connection modify static-ens33 autoconnect yes,然后sudo nmcli connection up static-ens33。
注意:ipv4.method manual 是静态配置的关键标志,不是 static;若之前已有连接绑定到同一设备,需先 down 或 delete 再启用新连接,避免冲突。
修改现有连接的 DNS 或网关
无需重建连接,直接编辑生效:
- 追加一个 DNS 服务器:
sudo nmcli connection modify "有线连接 1" +ipv4.dns 1.1.1.1(+表示追加,不覆盖原有); - 替换全部 DNS:
sudo nmcli connection modify "有线连接 1" ipv4.dns "8.8.8.8,8.8.4.4"; - 更新默认网关:
sudo nmcli connection modify "有线连接 1" ipv4.gateway 192.168.1.254; - 使修改立即应用:
sudo nmcli connection down "有线连接 1" && sudo nmcli connection up "有线连接 1"(reload 不触发重连,必须 down/up)。
切换连接与故障排查要点
一台机器可存多个连接(如“公司内网”“家用宽带”“手机热点”),按需切换:
- 停用当前连接:
sudo nmcli connection down "有线连接 1"; - 启用另一连接:
sudo nmcli connection up "Wi-Fi-Home"; - 查看实时活动连接:
nmcli connection show --active; - 常见问题定位:
— 若up失败,先查nmcli device status确认设备是否 “unavailable” 或 “disconnected”;
— 若 IP 没分配,检查ipv4.method是否设为auto(DHCP)或manual(静态);
— 修改后未生效?确认是否执行了down/up,仅modify不触发应用。










