在 VMware 虚拟机里给 CentOS 手动配置静态 IP,明明 /etc/sysconfig/network-scripts/ifcfg-ens33 里 BOOTPROTO=static 和 IPADDR 都写对了,重启网络后 IP 却又变回了 DHCP 自动获取的地址,始终固定不下来。
排查后发现,问题不在虚拟机内部,而是 VMware 自带的虚拟 DHCP 服务 与静态 IP 设置发生了冲突。
根本原因
VMware 在 NAT 或仅主机模式下会启动一个虚拟 DHCP 服务器,用于给虚拟机自动分配 IP。即使你在虚拟机系统里配置了静态 IP,VMware 的 DHCP 服务仍可能在网络重置或重启时强制将网卡拉回自动获取模式,导致静态 IP 被覆盖。
另外,Windows 物理机上的 DHCP Client 服务 如果被篡改或组策略设置为“强制 DHCP”,也会影响虚拟机网卡的行为,让静态 IP 无法持久生效。
解决方法
- 关闭虚拟机,回到 VMware 主界面。
- 点击顶部菜单栏 编辑 → 虚拟网络编辑器。
- 在弹出窗口中点击右下角的 更改设置(需要管理员权限)。
- 选中当前使用的网络模式(如 VMnet8 NAT 模式)。
- 取消勾选「使用本地 DHCP 服务将 IP 地址分配给虚拟机」。
- 点击 应用 并 确定。
- 重新启动虚拟机,进入系统后手动配置静态 IP,再次重启网络服务验证。
systemctl restart network
ip a show ens33
此时静态 IP 应已稳定生效,不再被虚拟 DHCP 干扰。
补充说明
· 本方法适用于 VMware Workstation 和 VirtualBox 等使用虚拟 DHCP 的虚拟机软件。 · 如果你仍需 DHCP 为其他虚拟机分配地址,可以保留勾选,改为在虚拟机内部通过 nmcli 或修改配置文件时同时关闭 NetworkManager 服务的接管。
本人真实踩坑记录,内容由AI帮助润色。