一、问题现象
在使用 CentOS 7 虚拟机时,你可能会遇到这样的困扰:
每次重启系统后,执行ip addr查看网卡信息,ens33网卡没有 IPv4 地址,无法联网。
必须手动执行dhclient ens33命令,才能临时获取IP地址,恢复网络连接。
这种方式不仅麻烦,而且每次重启都要重复操作,严重影响使用体验。本文将提供一套永久解决方案,让你的虚拟机开机自动获取IP,无需再手动敲命令。
二、根本原因
这个问题的核心,是 CentOS 7 网卡配置文件的两个关键参数配置错误:
ONBOOT参数未开启
该参数控制网卡是否在系统启动时自动激活。如果设置为no(或拼写错误,如yse、Yes等),系统开机时不会自动启用ens33网卡,自然也不会发起DHCP请求获取IP。BOOTPROTO配置错误
该参数指定IP获取方式。如果设置为none或static且未配置静态IP,网卡无法自动向虚拟机的DHCP服务器请求IP地址。
我们的目标就是修正这两个配置,让网卡开机自动激活并自动获取IP。
三、永久解决步骤(详细版)
步骤1:以root身份登录系统
首先确保你以root用户登录虚拟机(或使用sudo提权执行命令)。
# 切换到root用户(如果当前是普通用户)suroot步骤2:编辑网卡配置文件
CentOS 7 的网卡配置文件存放在/etc/sysconfig/network-scripts/目录下,文件名为ifcfg-ens33(你的网卡名如果不是ens33,请替换为实际名称)。
使用vi编辑器打开文件:
vi/etc/sysconfig/network-scripts/ifcfg-ens33步骤3:修改关键配置参数
进入vi编辑模式后,找到以下参数,修改为正确的值(如果参数不存在则手动添加):
| 参数名 | 正确值 | 作用说明 |
|---|---|---|
ONBOOT | yes | 系统启动时自动启用该网卡(必须设为yes,拼写必须完全正确) |
BOOTPROTO | dhcp | IP获取方式设置为DHCP自动获取 |
TYPE | Ethernet | 网卡类型为以太网(保持默认即可) |
DEVICE | ens33 | 网卡设备名,需与实际网卡名一致 |
示例配置文件(可直接参考修改)
TYPE=Ethernet BOOTPROTO=dhcp DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx # 保持原有UUID不变 DEVICE=ens33 ONBOOT=yes # 关键修改项,必须设为yes注意:
- 重点检查
ONBOOT参数,必须完全拼写为yes,yse、YES、No等错误写法都会导致配置失效。- 其他参数如
DEFROUTE、PEERDNS保持默认即可,无需修改。
步骤4:保存并退出配置文件
在vi编辑器中完成修改后:
- 按
Esc键退出编辑模式 - 输入
:wq命令,按回车,保存文件并退出vi
步骤5:重启网络服务,让配置生效
执行以下命令重启网络服务,使修改后的配置立即生效:
systemctl restart network如果你的系统中network服务被NetworkManager替代(部分CentOS 7版本默认启用),可以执行以下命令:
# 关闭并禁用冲突的NetworkManager服务(可选,仅在network服务报错时使用)systemctl stop NetworkManager systemctl disable NetworkManager# 重启network服务systemctl restart network步骤6:验证配置是否生效
执行ip addr命令,查看ens33网卡的状态:
ipaddr正常情况下,你会看到ens33网卡下出现inet x.x.x.x/24这样的IPv4地址,说明IP已成功获取。
步骤7:重启虚拟机,验证永久生效
为了确保配置永久生效,执行以下命令重启虚拟机:
reboot系统重启完成后,再次执行ip addr命令,如果ens33网卡依然有IP地址,说明配置成功,以后无需再手动执行dhclient ens33。
四、常见问题排查
问题1:修改配置后依然无法自动获取IP
- 检查配置文件是否有拼写错误,尤其是
ONBOOT=yes是否写错。 - 确认VMware虚拟机的DHCP服务已开启:
打开VMware → 编辑 → 虚拟网络编辑器 → 选择NAT模式 → 点击「DHCP设置」,确认「启用DHCP服务」已勾选。
问题2:重启网络服务报错Job for network.service failed
- 原因:CentOS 7部分版本中,
NetworkManager服务与network服务冲突。 - 解决:执行以下命令关闭
NetworkManager,再重启network服务:systemctl stop NetworkManager systemctl disable NetworkManager systemctl restart network
问题3:ip addr显示ens33网卡状态为DOWN
- 原因:网卡未被激活。
- 解决:手动启用网卡:
然后再次执行ifupens33ip addr查看IP。
五、总结
解决这个问题的核心,就是修正网卡配置文件中的ONBOOT=yes和BOOTPROTO=dhcp两个关键参数,让系统开机时自动启用网卡并发起DHCP请求。
按照本文的步骤操作后,你的CentOS 7虚拟机就能开机自动获取IP,彻底告别每次手动敲dhclient ens33的麻烦。
如果你后续需要固定IP,也可以将BOOTPROTO改为static,配置静态IP地址,同样无需再手动执行命令。