当我们保证了宿主机与虚拟机的ip地址在同一网段,并且我们使用虚拟机ping宿主机,与宿主机ping虚拟机都可以互相ping通的情况下虚拟机却ping不通外网了,由于涉及到了跨越网络访问,所以我们应该把问题聚焦在网关的配置上!
首先,简单了解一下什么是网关:
大家都知道,从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”。 按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在这里我们所讲的“网关”均指TCP/IP协议下的网关。

由于
我们使用的是NAT模式,所以在进行宿主机与虚拟机的网络通信时还不需要走网关,因为我们在“同一个房间“内,但是当虚拟机与外部通信时则必须要走主机的网关的地址。

这是因为

使用NAT模式网络连接时,VMware会在主机上建立单独的专用网络,用以在主机和虚拟机之间相互通信。虚拟机向外部网络发送的请求数据 "包裹",都会交由 NAT 网络适配器加上 "特殊标记" 并以主机的名义转发出去,外部网络返回的响应数据 "包裹",也是先由主机接收,然后交由 NAT 网络适配器根据 "特殊标记" 进行识别并转发给对应的虚拟机,因此,虚拟机在外部网络中不必具有自己的IP地址。从外部网络来看,虚拟机和主机在共享一个IP地址,默认情况下,外部网络终端也无法访问到虚拟机。

但是

如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。

以下是我遇到的实际情况:

宿主机ping通虚拟机:
 虚拟机ping通宿主机:

但是虚拟机却ping不通百度(外网)了

 这说明两台机器的ip地址是没有问题的,问题出在了网关配置上:
我第一次去检查本机网关的配置时发现默认网关啥也没有,没有人为配置,就是空空的状态。

我相信很多人遇到ping不通百度的情况时都是跟着网上的教程去更改虚拟机中的配置文件: 
vim /etc/sysconfig/network-scripts/ifcfg-ens33,但是很多都没成功,其实这个的先决条件就是保证虚拟机的网关与主机的网关一致!

所以我们手动配置一下宿主机的默认网关地址

并且同步更改虚拟机网卡的网关配置

两个网关一致!
保存退出,并重启网卡:systemctl restart network
再次ping百度试试:

 

 

Logo

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

更多推荐