1、现象
很久本地没玩linux ,今天xshell 连接不通,排查了2、3天,记录一下。
连接的现象是,Could not connect to '192.168.92.128' (port 22): Connection failed。
2、还原网卡默认配置(不建议,血泪1),VMnet8 、VMnet0配置经验
上网查询后,建议这个(不要听这个建议)
我还原后,整个 VMnet8 、VMnet0消失了
这两个都没了,想复原网卡VMnet8,查了一遍资料,如下(千万别信)
让我打开这两个服务(有点扯),我搞了半天每次都是打开后自动关闭 ,就算打开了也没解决,后来证明跟这个没关系,第二点下载软件,我没试,我觉得不靠谱。
最后重装了VMware解决了问题,所以别轻易还原网卡配置。
3、NAT网络模式
网卡配置好以后,主机还是连不上虚拟机,理解一下这个NAT原理。
原理:VMWare安装后,会给宿主机安装VMNet8网卡,同时虚拟出一套VMNet 8 使用的虚拟路由(包含交换机和虚拟DHCP服务器),主机和虚拟机实际上都是通过虚拟路由通信,虚拟路由通过宿主使得其他虚拟机也可以访问外网
如图
主机连不上虚拟机,若想连上,必须互相ping通
首先确保服务是开启的
4、主机ping虚拟机不通
查看主机Vmnet8,ip 地址192.168.33.3
查看虚拟机IP
虚拟机和VMnet8不在一个网段上,一个在192.168.92.网段,一个在192.168.33网段导致不通,
解决:设置成相同网段(不需要重启)
可以ping通。
总结:主机ping虚拟机不通,是主机的Vmnet8 网卡IP网段(此示例192.168.33)与虚拟机IP网段(此示例192.168.92)不在一个网段上,所以必须保持一致,注意一定不能将主机的Vmnet8网卡IP与虚拟机IP设置成一致,否则IP冲突,主机肯定连不上虚拟机了
5、虚拟机ping主机不通(虚拟机连不上外网的原因)
cmd 执行,ipconfig
虚拟机ping主机不通,查看NAT模式中VMnet8网卡的子网地址,在网段192.168.22
解决:设置成与虚拟机IP 网段一致(不需要重启)
可以ping 通。
总结:虚拟机ping主机不通,是虚拟机的Vmnet8 (不同于主机Vmnet8)网卡IP网段(此示例192.168.22)与虚拟机IP网段(此示例192.168.92)不在一个网段上,所以必须保持一致,这样才能连上外网。注意一定不能将虚拟机的Vmnet8网卡IP与虚拟机IP设置成一致,否则IP冲突。
6、互ping通总结
联通的方式肯定是:虚拟机的Vmnet8IP网段=虚拟机的IP网段=主机的Vmnet8IP网段,且IP各不相等。
如图
1)、虚拟机能上网跟红线有关,与紫线没关系。
2)、主机连接不上(通过xshell SSH)虚拟机,跟紫线有关,跟红线无关。所以网上说的主机连不上虚拟机保证虚拟机连上外网,根本就是扯淡。
3)、建议3者网段保持一致,虚拟机的Vmnet8IP网段=虚拟机的IP网段=主机的Vmnet8IP网段,且IP各不相等。这样虚拟机既能上网,主机又能连接虚拟机。
7、主机 telnet 虚拟机 22端口不通(血泪教训2)
我都互相ping通了 理论上主机可以连接虚拟机了,然而还是
Connecting to 192.168.92.128:22...
Could not connect to '192.168.92.128' (port 22): Connection failed.
绝望了,我决定telnet一下,果然telnet不通,要主机能连上虚拟机必须能telnet通。
我就又网上找了一堆方案,说我telnet客户端没开启,我是开启着的,也有说是window自带Hyper-V虚拟服务的干扰,我没有勾选。
依然telnet 不通22 端口,还有让我关闭windows 防火墙的,事后发现没半毛钱关系。
1)、我开始找linux的防火墙问题
关于防火墙,CentOS7用了firewalld ,而不是iptables 我在网上找问题时,还有iptables的命令,我执行发现没有,特地装了iptables(没必要),后来发现那是centos6的命令,真坑啊
① 查看状态: systemctl status firewalld (Centos 7的命令)
运行正常,这里推荐常用防火墙命令链接CentOS7使用firewalld打开关闭防火墙与端口 - 莫小安 - 博客园
② 查看所有打开的端口: firewall-cmd --zone=public --list-ports
没有任何端口,网上建议我 firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效),也有人建议我关闭防火墙,但是其实跟这些没关系,也就是说主机连不上虚拟机跟你防火墙没关系
2)、我开始找linux中的SSH服务问题
① 查看SSH服务是否存在
ps -ef | grep ssh
服务是有的
② 查看端口是否正常
etstat -antulp | grep ssh 查看端口
正常的
③ 还可以去重启ssh 命令: service sshd start
都是正常的,还是telnet不通,崩溃了。
8、找到原因(其他软件导致连不上)
还是不能放弃,我在想为什么相互能ping通,就是telnet不通呢,我找了网上很多解决办法,都差不多,没能解决我的问题,我觉得我碰到特殊情况了,而且我笃定是windows的问题,因为我重新建了一个虚拟机还是一样有问题,一切都是有理可循的,我想了很久,想起了前一个星期装了一个代理软件,长这样,我尝试卸载这个,果然就好了。
telnet 192.168.92.99 22 通了
xshell 也连接成功成功
这个软件要配代理服务器,之前有个项目用到这个软件,万万没想到是这个问题啊。我不甘心,准备重装这个试一下,输入
在这个软件里找到这么一句话
telnet.exe 不能走我配的代理地址,读取链接超时。
我相信没有人会碰到我这种奇葩的问题,就是自己搞了自己,但一定要相信的是,一切都有理可循,永不放弃!