一、问题描述
最近,了解到miniob的项目(采用C\C++环境搭建,并基于Linux开发),官网提供的VS、Docker等方式进行Windows用户的调试、开发。因此,我便萌发了在虚拟机环境(Linux)下进行搭建Clion的开发环境,但在上传主机的项目文件至虚拟机时,出现了 虚拟机可ping通主机,主机ping不通虚拟机
的问题。
二、解决步骤
回顾Vmware的网络方式
- 桥接模式
桥接模式就是将虚拟机的虚拟网卡利用虚拟网桥与主机的物理网卡进行通信。这时虚拟机与物理主机就相当于在同一个局域网内,它们所使用的IP 地址也是同一个网段,与在办公室里多安装了一台电脑一样,分配给它的IP 与这个局域网内的其它IP 相同会引起冲突,这种方式适用于IP 地址分配较为宽裕的网络环境。
- 主机共享模式
虚拟机通过VMnet1 虚拟网卡直接与主机的网卡进行通信,这种方式将虚拟机与外网隔离,只可以通过物理主机来访问虚拟机资源,而虚拟机也不可以访问互联网的资源,这种模式适用于复杂的网络环境进行学习和测试使用
- NAT模式
在NAT 模式中,主机网卡直接与虚拟机的虚拟NAT 设备相连接,然后虚拟机的NAT 设备与虚拟机的虚拟DHCP 服务器一起连接到虚拟网卡VMnet8 上。这时虚拟机与物理主机就不在同一个局域网内,它主要是通过VMnet8 虚拟网卡与主机进行通信,这种方式适用于IP 地址分配较为紧张的网络环境。
解决步骤
- 明确自己的网络模式
本人采用的NAT模式(因此此前采用桥接模式,未连接上外网;关于桥接模式连接外网问题的解决方式) - 分析可能的原因
- 自身的防火墙未关闭,虚拟机可访问主机,而主机不可访问虚拟机,网络连通是没有问题,很可能是该原因。可经检验,并非如此
- 网段的原因,借鉴桥接模式,是否需要在同一局域网才能ping通?
- 进行检验、实践
-
分别对照主机和虚拟机的IP(注意是VMnet8的虚拟网卡)
-
将虚拟网卡的IP地址改成同一网段
通过修改VMnet的虚拟网络编辑器
通过修改网络适配器
分析原因
RFC1918规定了三块专有的地址,作为私有的内部组网使用:
A类:10.0.0.0—10.255.255.255 10.0.0.0/8
B类:172.16.0.0—172.31.255.255 172.16.0.0/12
C类:192.168.0.0—192.168.255.255 192.168.0.0/16
这三块私有地址本身是可路由的,只是公网上的路由器不会转发这三块私有地址的流量;当一个公司内部配置了这些私有地址后,内部的计算机在和外网通信时,公司的边界路由会通过NAT或者PAT技术,将内部的私有地址转换成外网IP,外部看到的源地址是公司边界路由转换过的公网IP地址,这在某种意义上也增加了内部网络的安全性。
- Vmware下的NAT详解
- 分析物理机宿主机、Vmware、NAT地址转换服务器通信过程