相信很多VMware虚拟机初学者会遇到这样一个问题:
新建/克隆/从其他地方复制了一份虚拟机到本地使用时会发现即使虚拟机网卡设置了NAT或桥接模式,当开机后也无法连接网络,但是使用ifconfig或ip add命令查看IP地址时,有时候会出现如下图所示的情况:
网卡ens32可以正常获取IP地址,但是网卡ens35无法正确获取IP地址。
说明:
这个场景是我特意设计的。在使用VMware虚拟机的时候,往往遇到的是配置了一张网卡,但是开机时无法获取IP,这时候我们一般会在配置一张网卡,网卡模式与第一张网卡不同。上图中ens32是NAT模式,ens35是桥接模式。
原因可能有以下几种:
大多数人使用的VMware虚拟机往往是非正版(破解版或是批量key的版本)。因此往往会出现一些奇奇怪怪的bug问题。有时候我们重启虚拟机就能正确获取IP地址,但是有时候重启了,结果还是无法获取,这种时候就要看下面的解决方法。
下图中,虚拟机的虚拟网卡模式为NAT,选择的自定义网络是VMnet2,但是在虚拟网络编辑器的VMnet中并没有VMnet2。可能是选择定义网络时不小心选错了导致,网卡不能正常从DHCP地址池中获取IP地址。虚拟网卡自定义的虚拟网络名称,必须是虚拟网络编辑器中存在的VMnet名。
这种情况一般很少出现,当然也不排除不会出现。
这时候我们需要将下图所示的默认租用时间和最长租用时间改为最大值即可。
在虚拟网络编辑器中,VMnet的DHCP地址池未启用,也会导致虚拟机IP地址无法获取。
这时候,需要选择如下图所示红色的方框即可。
当我们启用一张虚拟网卡,在虚拟网卡正常工作后,还获取不到IP地址的话,可能是虚拟机系统缺少网卡配置文件。
虚拟硬件正常工作,但是怎么让虚拟操作系统使用虚拟网卡呢?网卡配置文件就是两者之间的桥梁。网卡配置文件相当于硬件和软件之前的API接口。
博文刚开始的例子,就是虚拟操作系统缺少网络配置文件从而导致不能正常获取IP地址。
我们先查看操作系统的网络信息,如下图所示,网卡ens32可以正常获取IP地址,但是网卡ens35无法正确获取IP地址。
查看网络卡配置文件
ls /etc/sysconfig/network-scripts/ #这是cnetos操作系统的网卡文件目录
可以发现只有ens32的网卡配置文件,并没有ens35的网卡配置文件。所以问题点找到了,缺少网卡配置文件。
为了简单快速操作以及确保网卡文件的正确性,我们先复制ens32的网卡,并重命名为ens35,并编辑。如下所示
nmcli con show #查看网卡的UID
cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-ens35
vim /etc/sysconfig/network-scripts/ifcfg-ens35
#ens35网卡配置文件内容
TYPE=Ethernet
BOOTPROTO="dhcp"
NAME=ens35
DEVICE=ens35
ONBOOT=yes
UUID="xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
保存文件,然后启动该网卡
ifup ens35
此时再次查看IP地址,发现网卡又可以重新获取IP地址了。
给虚拟机配置一张网卡即可。
在碰到虚拟机网卡不能正常获取IP地址时,可以通下述思路逐层排错。
首先进入虚拟操作系统后,使用命令ip add(不能使用ifconfig,该命令不会显示未正常获取IP的网卡)查看虚拟网卡是否正常运行。
(1)如果输出没有显示网卡名称,说明虚拟机的虚拟网卡未能正常工作,需要删除该虚拟硬件,重新创建新的虚拟硬件网卡。
(2)如果虚拟网卡正常运行,输出会显示网卡名称。说明虚拟机的虚拟网卡正常工作,不是虚拟硬件问题。这时候需要跟着下面的思路走。
检查顺序和解决方法2.2小节中的顺序一致。
如果VMware虚拟网络编辑器的设定正常,那么问题点应该就是操作系统缺少网卡配置文件了。
如果没有网卡配置文件,补上即可。
遇到网卡问题,也可以先重启虚拟机,说不定问题就解决了。
1:How to Configure a Private Network on CentOS.
想以桥接模式连接网络,但是怎么设置都无法使用dhcp自动获取IP和DNS等信息,即使手动设置后,也无法正常访问网络。
当物理机中存在多个网卡(包含虚拟网卡)时,需要在VMWare中指定桥接模式的连接网卡,否则VMWare虚拟机在寻找桥接网卡时,可能会无法自动识别
在VMWare中打开【编辑】——>【虚拟网络编辑器】——>【更改设置】
选择VMnet0(桥接模式),在下方VMnet信息框中,指定连接网卡即可
将自动变为指定网卡