用nmcli切换多套网络配置的核心是为不同环境预设独立connection,通过“断开当前连接+启用目标profile”实现秒级切换,无需改文件或重启服务。

用 nmcli 切换多套网络配置,核心是把不同环境(如办公、测试、客户现场)预设为独立的 connection,再通过一条命令激活对应配置。不需要改文件、不重启服务,秒级生效。
准备多个网络配置Profile
每个 Profile 是一个保存好的 connection,包含 IP、DNS、网关、路由等完整设置。比如:
-
Office:静态 IP
192.168.1.50/24,网关192.168.1.1,DNS114.114.114.114 -
Lab:DHCP 自动获取,但固定使用 DNS
10.0.0.1 -
Customer-A:静态 IP
172.16.10.20/24,网关172.16.10.1,并添加一条到172.16.20.0/24的静态路由
创建方式示例(以 Office 为例):
sudo nmcli connection add type ethernet con-name "Office" ifname eth0<br>sudo nmcli connection modify "Office" ipv4.addresses 192.168.1.50/24 ipv4.gateway 192.168.1.1 ipv4.dns "114.114.114.114" ipv4.method manual<br>sudo nmcli connection up "Office"
一键切换当前活跃配置
切换只需两步:先断开当前连接,再启用目标 Profile。
- 查看当前活跃连接:
nmcli connection show --active - 停用当前连接(如叫 "Wired connection 1"):
sudo nmcli connection down "Wired connection 1" - 启用目标 Profile:
sudo nmcli connection up "Office"
可合并为单行脚本(适合快速执行):
sudo nmcli connection down $(nmcli -t -f NAME connection show --active) && sudo nmcli connection up "Lab"
避免设备冲突与自动接管干扰
NetworkManager 默认会“抢管”网卡,导致手动配置被覆盖。关键处理点:
- 确保所有 Profile 都绑定到同一物理接口(如
eth0),否则切换后可能无网络 - 禁用 NetworkManager 对该接口的自动识别(防止它新建默认连接):
sudo nmcli device set eth0 managed no→ 改为yes后再操作 - 若系统同时用 netplan 或 systemd-networkd,需确认 NetworkManager 是唯一网络管理器,否则配置会冲突
进阶:按场景自动加载配置
可在 shell 函数或 alias 中封装常用切换逻辑,提升效率:
alias net-office='sudo nmcli connection down $(nmcli -t -f NAME connection show --active 2>/dev/null) 2>/dev/null; sudo nmcli connection up "Office"'<br>alias net-dhcp='sudo nmcli connection down $(nmcli -t -f NAME connection show --active); sudo nmcli connection up "Lab"'
执行 net-office 即完成全部切换。也可写成 Bash 脚本,加入参数校验和错误提示。











