虚拟机设了静态 IP 又跳回 DHCP?可能是 VMware 虚拟 DHCP 在捣乱

13 阅读2分钟

在 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 无法持久生效。

解决方法

  1. 关闭虚拟机,回到 VMware 主界面。
  2. 点击顶部菜单栏 编辑 → 虚拟网络编辑器。
  3. 在弹出窗口中点击右下角的 更改设置(需要管理员权限)。
  4. 选中当前使用的网络模式(如 VMnet8 NAT 模式)。
  5. 取消勾选「使用本地 DHCP 服务将 IP 地址分配给虚拟机」。
  6. 点击 应用 并 确定。
  7. 重新启动虚拟机,进入系统后手动配置静态 IP,再次重启网络服务验证。

48b92c07397e1dc83cded24083104289.jpg

systemctl restart network
ip a show ens33

此时静态 IP 应已稳定生效,不再被虚拟 DHCP 干扰。

补充说明

· 本方法适用于 VMware Workstation 和 VirtualBox 等使用虚拟 DHCP 的虚拟机软件。 · 如果你仍需 DHCP 为其他虚拟机分配地址,可以保留勾选,改为在虚拟机内部通过 nmcli 或修改配置文件时同时关闭 NetworkManager 服务的接管。

本人真实踩坑记录,内容由AI帮助润色。