1. 项目背景与需求解析在开发测试环境中我们经常需要在Windows主机上通过VMware运行Linux虚拟机。默认情况下虚拟机采用DHCP方式获取IP地址每次重启后IP都可能发生变化。这对于需要固定IP的场景如远程连接、服务部署、集群搭建等会造成诸多不便。以我多年运维经验来看CentOS虚拟机固定IP配置是每个Linux使用者必须掌握的基础技能。特别是在以下场景中尤为重要需要从外部SSH连接的开发环境运行Web/Database等需要固定访问地址的服务搭建Hadoop/K8s等分布式系统时节点间需要固定通信CI/CD流水线中需要稳定访问的构建节点2. 环境准备与网络模式选择2.1 VMware网络连接模式对比VMware提供三种主要网络模式配置固定IP前需要先理解它们的区别网络模式特点适用场景桥接(Bridged)虚拟机直接连接物理网络与主机同网段占用独立IP需要对外提供服务的生产环境NAT虚拟机通过主机IP共享上网主机可访问虚拟机外部不能直接访问个人开发测试环境仅主机(Host)虚拟机与主机组成独立私有网络无法访问外网完全隔离的内部测试对于大多数开发场景我推荐使用NAT模式不占用额外公网IP主机可直连虚拟机配置简单稳定虚拟机可访问外网2.2 确认当前网络配置在CentOS终端执行ip addr查看当前网卡名称(通常为ens33或eth0)和IP信息。同时检查VMware虚拟网络编辑器打开VMware → 编辑 → 虚拟网络编辑器选择NAT模式对应的VMnet8记录子网IP和子网掩码(如192.168.137.0/255.255.255.0)点击NAT设置查看网关IP(如192.168.137.2)提示建议先拍照记录这些参数后续配置会用到3. CentOS网络配置文件详解3.1 定位网络配置文件CentOS 7使用NetworkManager管理网络主要配置文件位于/etc/sysconfig/network-scripts/ifcfg-ens33(ens33为你的网卡名)使用vim编辑该文件sudo vim /etc/sysconfig/network-scripts/ifcfg-ens333.2 关键参数配置说明原始DHCP配置通常如下TYPEEthernet BOOTPROTOdhcp DEVICEens33 ONBOOTyes修改为静态IP需要调整以下参数TYPEEthernet BOOTPROTOstatic # 改为static DEVICEens33 ONBOOTyes NAMEens33 # 静态IP配置 IPADDR192.168.137.100 # 自定义IP需在子网范围内 NETMASK255.255.255.0 # 子网掩码 GATEWAY192.168.137.2 # VMware NAT网关 DNS18.8.8.8 # 首选DNS DNS2114.114.114.114 # 备用DNS注意IPADDR不要与网关IP重复通常设置100-200之间的值3.3 配置验证与生效保存文件后重启网络服务sudo systemctl restart network验证配置ip addr show ens33 ping www.baidu.com4. 高级配置与故障排查4.1 多网卡绑定配置对于需要多网络环境的场景可以添加多个网卡VMware中添加新网卡复制ifcfg-ens33为ifcfg-ens34修改DEVICE和IPADDR等参数重启网络服务4.2 常见问题解决方案问题现象可能原因解决方案无法ping通外网DNS配置错误检查/etc/resolv.conf中的DNS服务器主机无法访问虚拟机防火墙未放行sudo systemctl stop firewalld临时关闭IP冲突导致网络断开IP被其他设备占用更换IPADDR值服务重启后配置丢失NetworkManager覆盖配置禁用NMsudo systemctl disable NetworkManager4.3 持久化DNS配置有时重启后DNS设置会重置解决方法编辑/etc/NetworkManager/NetworkManager.conf添加[main] dnsnone然后sudo systemctl restart NetworkManager5. 生产环境最佳实践根据我在企业级环境中的经验推荐以下配置方案IP规划原则管理网段192.168.100.0/24业务网段172.16.10.0/24存储网段10.10.10.0/24安全加固建议# 禁用IPv6 echo net.ipv6.conf.all.disable_ipv6 1 /etc/sysctl.conf # 限制SSH访问 sudo vim /etc/ssh/sshd_config # 修改PermitRootLogin no备份恢复方案# 备份网络配置 sudo tar czvf /backup/network_conf.tar.gz /etc/sysconfig/network-scripts/ # 快速恢复 sudo tar xzvf network_conf.tar.gz -C / sudo systemctl restart network6. 自动化配置方案对于需要批量部署的场景可以使用自动化工具6.1 使用nmcli命令行工具sudo nmcli con mod ens33 ipv4.addresses 192.168.137.100/24 sudo nmcli con mod ens33 ipv4.gateway 192.168.137.2 sudo nmcli con mod ens33 ipv4.dns 8.8.8.8 114.114.114.114 sudo nmcli con mod ens33 ipv4.method manual sudo nmcli con up ens336.2 Ansible自动化配置示例- hosts: all tasks: - name: Configure static IP template: src: ifcfg-ens33.j2 dest: /etc/sysconfig/network-scripts/ifcfg-ens33 notify: restart network handlers: - name: restart network service: name: network state: restarted经过这些配置后你的CentOS虚拟机将获得永久固定的IP地址无论重启多少次都能保持稳定。我在实际生产环境中验证过这种配置方式的可靠性特别适合需要长期稳定运行的开发测试环境。