一、问题场景简述
在win10系统下安装VMware、对应的Linux系统,win10系统与Linux系统之间能够ping通,但在连接学校/公司的软件连接公司内网时,本地win10系统下始终无法连接虚拟机linux系统(即此时无法ping通虚拟机IP地址)。
- 系统:本地win10系统,虚拟机安装镜像Linux系统(Ubuntu/Redhat等)
- VMware网络配置模式:Host-only(仅主机模式)。
- 前提(本文方法适用范围):虚拟机网络配置完成后,在未连接内网的情况下,本地win10系统和虚拟机中的Linux系统能够ping通。如果本就无法ping通,本文所述方法可能不适用。
PS:以下方法都为针对VMware配置网络模式为Host-only模式,其它网络模式暂未验证本文方法的有效性。且此文的处理方法启发于以下博主的文章:本地电脑无法访问虚拟机NAT网络
链接中虚拟机网络模式为NAT(网络地址转换模式)。Vmware主要有三种网络模式:Host-only(仅主机模式)、NAT(网络地址转换模式)以及Bridged(桥接模式)。至于三者之间的区别和相关概念可以通过以下了解VMware 虚拟机三种网络模式详解。
二、处理方法
1.虚拟机网络配置情况
首先介绍下本文场景下,虚拟机的网卡配置情况,方便之后对比:
- IP地址:192.168.224.128
- mask掩码:255.255.255.0
- 网关:192.168.224.1
之后由于安装了虚拟机,win10的网络连接中多了两张虚拟网络,而本文win10系统中虚拟网卡VMnet1的设置的固定IPV4地址为:
- IP地址:192.168.224.1
- 掩码:255.255.255.0
以上是本文对应的相关网络配置情况,而本文场景所对应的原因在于连接内网后,路由表发生了变化,路由表把虚拟机所对应的IP地址网络映射出现一定的差错。因此首先查看未连接内网时的路由表。
2.方法
查看未连接内网时路由表
查看方式,打开win10的cmd窗口,键入指令查看路由表:
route print 192.168.224.*
注意此处需要根据自己配置的虚拟机IP地址进行相应的变化,即需要修改上一条命令的IP地址(192.168.224.*),同样之后的所有的命令都需要根据自己配置的IP地址进行相应的修改。通过执行以上命令查看到的路由表信息如下:
IPv4 路由表
活动路由:
网络目标 网络掩码 网关 接口 跃点数
192.168.224.0 255.255.255.0 在链路上 192.168.224.1 36
192.168.224.255 255.255.255.255 在链路上 192.168.224.1 291
路由表中第一项192.168.224.0便是虚拟机IP地址所对应的地址网络。
连接内网后的路由表
而在连接内网后,通过指令:
ping 192.168.224.128
尝试ping虚拟机的IP地址是无法ping通的,因此此时查看对应的路由表,同样键入以上命令后,得到的结果为:
从两个路由表中可以看出192.168.224.*的路由表多了很多路由表项,此时处理方法可以先将所有的192.168.224的路由表项删除,之后在增加对应的192.168.224.0和 192.168.224.255的路由表:
route delete 192.168.224.0
route delete 192.168.224.1
route delete 192.168.224.2
route delete 192.168.224.3
...
在将所有的192.168.224.*的数据删除之后,需要使用route add命令增加未连接内网时对应的路由表项,在增加路由之前需要使用route print命令查看接口列表信息,查找VMnet1虚拟网卡对应接口序号信息,例如本文查到的信息如下,VMnet1对应的序号为21,此序号用于route add命令中:
接口列表
21...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
得到VMnet1对应的接口序号之后,便可以通过以下route add命令来增加对应的路由:
route add 192.168.224.0 mask 255.255.255.0 192.168.224.1 if 21
注意需要根据自己路由表项更改对应的接口序号(即 if 指令后的序号)。执行上述命令后便能够看到此时的路由表和未连接内网时是一样的此时再ping虚拟机IP地址时能够ping通。
3.后话:
至此,通过以上方法能够处理连接内网后无法ping通虚拟机地址的情况,当然本文方法并不一定适用于所用连接内网后无法ping通虚拟机的场景,也许通过此方法可能会造成其它潜在的问题。额,但这也是自己面对一些问题时,通过查看其它博主的处理方法和思路,记录下自己处理问题的方法,毕竟自身所学知识有限,只能从网络资源中搜寻对应的处理方法,想搞懂其中原理,完美地解决问题还是得花大量精力,但不管如何,还得有处理问题的决心。