nmcli是CentOS 7最推荐的改IP方式,但需确保connection名称正确(如"System ens33"带引号)、ipv4.method设为manual、addresses含CIDR掩码、配置后执行down再up以清除状态残留。

nmcli 是 CentOS 7 中最可靠、最推荐的命令行改 IP 方式,只要 NetworkManager 正常运行,它就能绕过手动编辑文件的语法风险,且修改立即可被识别。但直接敲几条 nmcli connection modify 命令后 IP 不生效,是高频问题——不是命令写错了,而是状态没清、参数没配全、名字没对上。
nmcli connection modify 后不生效的典型原因
执行完 nmcli connection modify 系列命令,再 nmcli connection up 却没反应,常见情况有:
-
nmcli connection show看到的 NAME 列才是真实 connection 名(比如System ens33),不是网卡名ens33;如果含空格,up时必须加引号:nmcli connection up "System ens33" - 漏设
ipv4.method manual:不设或设成auto,NetworkManager 仍会走 DHCP,覆盖你填的地址 -
ipv4.addresses必须带 CIDR 前缀,例如192.168.1.100/24;写成192.168.1.100 255.255.255.0会静默失败 - 没执行
nmcli connection down "xxx"就直接up:旧连接状态残留,新配置不加载 - DNS 配置写在了
/etc/resolv.conf而不是 connection 级别:nmcli connection modify "System ens33" ipv4.dns "8.8.8.8 114.114.114.114"才有效
用 nmcli 一次性配全静态 IP 的操作顺序
别分多步试错,按这个顺序执行,成功率最高:
先确认目标 connection 名:nmcli connection show
然后逐条运行(把 "System ens33" 替换成你自己的 NAME):
nmcli connection modify "System ens33" ipv4.method manual nmcli connection modify "System ens33" ipv4.addresses "192.168.1.100/24" nmcli connection modify "System ens33" ipv4.gateway "192.168.1.1" nmcli connection modify "System ens33" ipv4.dns "8.8.8.8 114.114.114.114" nmcli connection down "System ens33" nmcli connection up "System ens33"
最后验证:ip addr show 看接口是否绑定了新地址,ip route 看默认路由是否指向你设的 gateway。
为什么不要硬重启 network.service
CentOS 7 默认启用 NetworkManager,而传统 network.service 很可能被禁用或根本没安装。执行 systemctl restart network 报错 Unit network.service not found 就是这个原因。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
此时强行装 network-scripts 或启用 network.service 反而会导致两个服务冲突,IP 混乱甚至断网。
正确做法是让 NetworkManager 重载配置:
-
nmcli connection reload—— 让它读取磁盘上的 ifcfg 文件(如果你也改了文件) -
nmcli connection down && up—— 强制重建连接状态
不需要碰 systemctl restart NetworkManager,那会中断所有网络连接,得不偿失。
ifcfg- 文件改完却无效?检查这三点
即使你选择编辑 /etc/sysconfig/network-scripts/ifcfg-ens33,NetworkManager 也不会自动感知改动。必须配合以下动作才生效:
-
ONBOOT=yes缺失 → 重启后网卡压根不启 -
BOOTPROTO=static(或none)没改 → 仍走 DHCP,IP 被覆盖 - 改完文件后忘了
nmcli connection reload→ NetworkManager 还在用内存里的旧配置
尤其注意:DNS 写在 ifcfg 文件里(如 DNS1=8.8.8.8)只在 NetworkManager 管理该连接时才生效;如果 connection 是手动创建的或名称不匹配,DNS 仍可能为空。
NetworkManager 的 connection 名、method、CIDR 格式、down-up 顺序,这四点任何一个出错,都会让 IP 看似“改了但没完全改”。实际运维中,宁可多敲一条 down,也不要赌状态干净。

















