1. 现象描述

  1. 原来使用一个 CentOS 虚拟机,这里叫 CentOS_1。网络配置如下:VMWare软件设置 NAT 模式,虚拟机配置 DHCP 自动获取 IP ,开机启动网络。可以正常联网
  2. centos 虚拟机 无法连外网_centos 虚拟机 无法连外网


  3. centos 虚拟机 无法连外网_NAT_02

  4. 现在要重新配置一个虚拟机,环境同 CentOS_1。因此我直接从硬盘复制了一份 CentOS_1 的文件,并用 VMWare 打开虚拟机,将复制的虚拟机更名为 CentOS_2
  5. 由于是最小安装,因此使用ifup / ifdown / ip addr指令操作网卡,通过直接修改网卡配置文件配置网络
  1. 网络配置文件地址/etc/sysconfig/network-scripts 网络文件名称ifcfg-网络名称 如:网络名称为ens33,则对应的配置文件名为ifcfg-ens33
  2. centos 虚拟机 无法连外网_网络_03

  3. 相关指令
# 设对应的网络名为 ens33

# 1. 启动网络
ifup ens33

# 2. 关闭网络
ifdown ens33

# 3. 重启网络 = 先 ifdown 再 ifup

# 查看网络的 ip 地址
ip addr
  1. CentOS_2 的网络配置与 CentOS_1 的完全相同:VMWare软件设置 NAT 模式,虚拟机配置 DHCP 自动获取 IP ,开机启动网络
  2. 但在使用指令ifup启动网卡时出现了问题:等待了很久之后,提示连接超时
  3. centos 虚拟机 无法连外网_centos_04

2. 问题解决

1. 重新配置 VMWare 软件的 NAT 配置 – 无效

检查 VMWare 虚拟机的 NAT 和 网络配置:

  1. NAT 配置
  1. CentOS 对应的 VMnet 勾选 NAT 模式(如果新建虚拟机时选择 NAT 模式,那默认值就是 NAT 模式不用修改)
  2. 勾选“将主机虚拟适配器连接到此网络”
  3. 勾选“使用本地 DHCP 将 IP 地址分配给虚拟机”,启用 VMWare 的 DHCP 功能,保证虚拟机能自动获取到 IP 地址
  4. NAT设置 --> 网关 = 子网 IP 中最后一位 = 2 的地址

2. 重启 VMWare 软件的 NAT 和 DHCP 服务 – 无效

打开任务管理器,找到“服务(Services)”选项卡,选中以下两个服务,右键点击“重启(Restart)”,即服务的重启

centos 虚拟机 无法连外网_linux_05

  • VMnetFHCP = VMWare 的 DHCP 服务
  • VMWare NAT Service = VMWare 的 NAT 服务

3. 重启虚拟机 CentOS_2 – 发现问题

点击“关机”后,再点击“开机”。

centos 虚拟机 无法连外网_centos_06


开机时提示“ens33 的 MAC 地址已经被使用”,类似以下提示

centos 虚拟机 无法连外网_网络_07


发现问题:直接复制虚拟机文件生成的虚拟机 CentOS_2 与原虚拟机 CentOS_1 之间的 mac 地址相同,导致两台虚拟机不能同时获取到 ip 地址 (DHCP 协议通过 MAC 地址区分不同设备)

4. 为 CentOS_2 虚拟机配置不同于 CetOS_1 的 MAC 地址 – 解决问题

  1. 关闭虚拟机电源
  2. 虚拟机 --> 设置 -->
  3. centos 虚拟机 无法连外网_NAT_08

  4. 硬件 --> 网络适配器 --> 高级 --> MAC 地址,点击“生成” --> 确定并保存
    注意:只有关机状态下才能修改 MAC 地址
  5. 在这里插在这里插入图片描述
入图片描述

  6. 重启虚拟机
  7. 使用ifdown/ifup指令重启网卡,使用ip addr指令查看是否获取到了 ip 地址

5. 总结

本次网络连接不上的问题是因为:直接复制虚拟机文件,会导致两个虚拟机中的网卡 MAC 地址相同,导致两个虚拟机无法同时获取到 IP 地址(DHCP 根据 MAC 地址识别不同的设备)