自己在VMware虚拟机中开启一台主机的时候,发现比以往的开机速度慢了好多,起初不以为然,直到用Xshell通过ssh远程连接eth1的ip地址才发现连接失败(这个ip是之前eth1正常的时候获取的ip地址),后来用ifconfig命令发现eth1这个网卡并没有获取IP地址,eth1这个网卡设置的仅主机模式,并通过宿主机的VMware dhcp服务获取ip地址。
发现了eth1网卡异常之后,重启network服务,发现eth1还是获取不到ip,效果图如下。
随后重温了一下dhcp的工作原理,大致流程如下: 第一步: 客户端发送 DHCPdiscovery 包,请求DHCP服务器,就是查找网络上的DHCP服务器; 第二步: 服务器向回应客户端的 DHCPoffer 包,目的告诉客户端,我能为你提供IP地址; 第三步: DHCPrequest 包,客户端向服务器请求IP地址; 第四步: DHCPack 包,确认包,服务器向客户端分配IP地址。 其中在dhcp的整个工作流程中,服务端开启67号端口处于监听状态,客户端开启68号端口处于监听状态。 出错应该想到的是查看日志,所以我利用tail命令分析/var/log/messages日志文件,如下图所示:
分析发现dhcp的第一步发送DHCPdiscovery广播包持续发送,最后报了No DHCPOFFERS received,说明客户端寻找DHCP服务器未果,没有收到服务端发来的DHCPOffer回应包。并且检查后确定eth1网卡的配置文件ifcfg-eth1没有错误,由此我初步判定是DHCP服务端出现了错误。但是在我的环境下并没有专门地配置一台机器来提供DHCP服务,而是直接使用的是VMware的本地的DHCP服务。
后来我上网查询资料,了解到VMware之所以能够为虚拟机提供动态获取ip的服务,都是因为在安装了VMware后,会在windows上配置一个名为VMware DHCP server的服务。 在windows中按win R打开运行,输入services.msc,可以查看windows的服务状态结果,找到VMware DHCP server服务,发现正处于关闭状态。
尝试着开启windows的VMware DHCP server服务,并将该服务设置为开机自动启动。
最后在虚拟机中重启network服务,发现这一次eth1能够顺利的获取到IP地址。并且Xshell也能顺利通过eth1连接成功。