下面为你整理 最常用、最实用的 nmcli 操作,按场景分类,附带示例和说明。
🔍 一、查看网络状态
1. 查看所有网络连接(已保存的配置)
nmcli connection show
# 或简写
nmcli con show
输出包含:NAME(连接名)、UUID、TYPE(ethernet/wifi/bridge等)、DEVICE(绑定的网卡)
2. 查看当前活跃的连接
nmcli con show --active
3. 查看网络设备状态
nmcli device status
显示每块网卡的状态:connected / disconnected / unmanaged
4. 查看某个连接的详细配置
nmcli con show "System eth0" # 替换为你的连接名
🌐 二、配置有线网络(以太网)
假设你的网卡设备名为
eth0,连接名为eth0(通常默认同名)
1. 设置静态 IP 地址
# 修改连接配置
nmcli con mod eth0 ipv4.addresses 192.168.10.50/24
nmcli con mod eth0 ipv4.gateway 192.168.10.1
nmcli con mod eth0 ipv4.dns "8.8.8.8,114.114.114.114"
nmcli con mod eth0 ipv4.method manual # 相当于 static
# 重启连接生效
nmcli con up eth0
2. 改回 DHCP 自动获取 IP
nmcli con mod eth0 ipv4.method auto
nmcli con up eth0
3. 添加多个 DNS
nmcli con mod eth0 ipv4.dns "8.8.8.8 114.114.114.114"
# 或追加(不覆盖)
nmcli con mod eth0 +ipv4.dns 192.168.10.10
4. 设置主机名(可选)
nmcli con mod eth0 ipv4.dhcp-hostname "myserver"
📶 三、配置 Wi-Fi(无线网络)
1. 扫描可用 Wi-Fi
nmcli device wifi list
2. 连接 Wi-Fi(自动保存连接)
nmcli device wifi connect "MyWiFi" password "mypassword"
3. 断开 Wi-Fi
nmcli device disconnect wlan0
4. 删除已保存的 Wi-Fi 配置
nmcli con delete "MyWiFi"
🛠️ 四、高级操作
1. 创建新连接(例如给 eth1 配静态 IP)
nmcli con add type ethernet con-name eth1-static ifname eth1 \
ipv4.addresses 10.0.0.10/24 \
ipv4.gateway 10.0.0.1 \
ipv4.dns "8.8.8.8" \
ipv4.method manual
2. 启用/禁用连接
nmcli con up eth0 # 启用
nmcli con down eth0 # 禁用(断开但保留配置)
3. 删除连接配置
nmcli con delete eth0
⚠️ 删除后,该配置文件(如
/etc/sysconfig/network-scripts/ifcfg-eth0)也会被移除。
4. 重载 NetworkManager 配置(一般不需要)
nmcli general reload
🧪 五、调试与故障排查
1. 查看 DNS 实际生效情况
systemd-resolve --status # Ubuntu/Debian(较新)
# 或
cat /etc/resolv.conf # 注意:可能是符号链接
在使用 NetworkManager 时,
/etc/resolv.conf通常由它动态管理。
2. 查看路由表
ip route show
# 或
nmcli device show eth0 | grep IP4.ROUTE
3. 临时测试网络(不影响配置)
# 临时设置 IP(重启失效,且不通过 NetworkManager)
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip route add default via 192.168.1.1
不推荐长期使用,仅用于紧急调试。
✅ 最佳实践建议
| 场景 | 建议 |
|---|---|
| 生产服务器 | 使用 nmcli 配置静态 IP,避免图形界面依赖 |
| 自动化脚本 | 用 nmcli con mod + nmcli con up,避免直接改配置文件 |
| 云服务器 | 注意:部分云平台(如 AWS、阿里云)使用 DHCP,不要随意改静态 IP |
| 容器/虚拟机 | 若网络由外部管理(如 libvirt、Docker),可能需设为 unmanaged |
📝 补充:连接名 vs 设备名
- 设备名(Device) :物理/虚拟网卡名称,如
eth0,ens192,wlan0 - 连接名(Connection) :NetworkManager 中的配置名称,可自定义(如
office-wifi,prod-static) - 一个设备可以绑定多个连接,但同一时间只能激活一个