一、问题描述

本机使用Xshell无法连接VMware中的虚拟机,并且从本机也无法ping通虚拟机,虚拟机也无法ping通本机物理机。

二、环境&场景

物理机:windows10系统, Xshell 6,VMware Workstation 16 Pro
虚拟机:CentOS 7系统

虚拟机采用NAT网络模式,使用物理机的网络适配器是VMnet8,规划网段为192.168.141.0/24。CentOS 7 Linux系统使用静态IP配置。

具体网络配置如下:

  • 物理机IP地址:192.168.66.103/24
  • VMnet8适配器IP:192.168.141.1/24
  • NAT中的DHCP服务使用IP: 192.168.141.60/24 ~ 192.168.141.254/24
  • NAT服务IP地址(网关): 192.168.141.2/24
  • 虚拟机CentOS 7系统IP地址: 192.168.141.8/24

在当前环境下,欲使用Xshell来连接虚拟机,发现无法ssh到虚拟机,并且双方也无法ping通。而虚拟机CentOS 7系统可以ping通外网如www.baidu.com

三、原因分析

1. xshell无法连接到虚拟机可能的原因分析:

1.1. 网络地址分配问题

上述网络分配没有任何冲突,从物理机连接到虚拟机是通过VMnet适配器属于内网一个网段的访问(采用广播方式),所以也与NAT设置无关,与网关配置也无关。

1.2. 虚拟机系统中sshd服务未启动

(1) 通过服务方式查看状态

#centos7中查看sshd服务状态
systemctl status sshd

服务状态为active(running) 运行中

(2) 通过进程方式查看状态

ps -ef | grep sshd

进程也存在,并且监听端口也为默认的22,所以不是此原因导致。

1.3. Npcap Packet Driverpcap Packet Driver导致xshell无法连接vmware虚拟机

(1)在偶然间发现电脑通过重启方式启动电脑和关机后再按开机按钮启动会有不同的效果。通过重启方式xshell可以正常连接虚拟机,另一种则不可以。

于是了解了win10重启和关机的区别:如果启动了快速启动模式,那么关机和重启是有区别的,没设置则表现一致。

快速启动模式设置:“控制面板 > 所有控制面板项 > 电源选项 > 选择电源按钮的功能”

win10快速启动原理(与休眠类似):http://www.360doc.com/content/19/0808/18/35662250_853726305.shtml
大概就是在关机时会把内存中的内核及系统相关模块及一些驱动写入磁盘中,在下次开机时从磁盘中又读取出来恢复。所以我猜想可能是这里导致了什么问题(目前不知道,望告知)。

在关闭win10快速启动后,每次开机xshell都能正常的连接虚拟机了。

(2)在其它的博文中也提到是由于Npcap Packet Driverpcap Packet Driver(NPCAP)内部的问题,我的电脑是由于装了wireshark所以有这个驱动用于抓包的,在网络适配器中找到对应的适配器然后取消使用这个项目。然后在禁用、启用适配器即可连接。
在这里插入图片描述
综上所述,就是NPCAP的问题!!!

2. 双方无法ping通原因分析

经过上述分析后,xshell可以连接虚拟机了,说明整个网络是连通的。

但是虚拟机还是无法ping通物理主机的ip地址。这是因为windows防火墙原因,其实是ping通了只是不予回显请求结果信息,简单粗暴的方法是关闭防火墙。
若不想关闭也可以在防火墙高级设置中找到名称为 “文件和打印机共享(回显请求 - ICMPv4-In)” 的入站规则,将其启动并将操作设置为允许连接。

若物理机也ping不通虚拟机,也可以关闭CentOS 7的防火墙。CentOS 7关闭防火墙:

#停止防火墙服务
systemctl stop firewalld.service
#禁用防火墙服务(开机不会自启)
systemctl disable firewalld.service
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐