一、问题现象

在使用 CentOS 7 虚拟机时,你可能会遇到这样的困扰:
每次重启系统后,执行 ip addr 查看网卡信息,ens33 网卡没有 IPv4 地址,无法联网。
必须手动执行 dhclient ens33 命令,才能临时获取IP地址,恢复网络连接。

这种方式不仅麻烦,而且每次重启都要重复操作,严重影响使用体验。本文将提供一套永久解决方案,让你的虚拟机开机自动获取IP,无需再手动敲命令。


二、根本原因

这个问题的核心,是 CentOS 7 网卡配置文件的两个关键参数配置错误:

  1. ONBOOT 参数未开启
    该参数控制网卡是否在系统启动时自动激活。如果设置为 no(或拼写错误,如 yseYes 等),系统开机时不会自动启用 ens33 网卡,自然也不会发起DHCP请求获取IP。

  2. BOOTPROTO 配置错误
    该参数指定IP获取方式。如果设置为 nonestatic 且未配置静态IP,网卡无法自动向虚拟机的DHCP服务器请求IP地址。

我们的目标就是修正这两个配置,让网卡开机自动激活并自动获取IP。


三、永久解决步骤(详细版)

步骤1:以root身份登录系统

首先确保你以 root 用户登录虚拟机(或使用 sudo 提权执行命令)。

# 切换到root用户(如果当前是普通用户)
su root

步骤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

注意:

  1. 重点检查 ONBOOT 参数,必须完全拼写为 yesyseYESNo 等错误写法都会导致配置失效。
  2. 其他参数如 DEFROUTEPEERDNS 保持默认即可,无需修改。

步骤4:保存并退出配置文件

vi 编辑器中完成修改后:

  1. Esc 键退出编辑模式
  2. 输入 :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 网卡的状态:

ip addr

正常情况下,你会看到 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

  • 原因:网卡未被激活。
  • 解决:手动启用网卡:
    ifup ens33
    
    然后再次执行 ip addr 查看IP。

五、总结

解决这个问题的核心,就是修正网卡配置文件中的 ONBOOT=yesBOOTPROTO=dhcp 两个关键参数,让系统开机时自动启用网卡并发起DHCP请求。
按照本文的步骤操作后,你的CentOS 7虚拟机就能开机自动获取IP,彻底告别每次手动敲 dhclient ens33 的麻烦。

如果你后续需要固定IP,也可以将 BOOTPROTO 改为 static,配置静态IP地址,同样无需再手动执行命令。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐