oracle virtualbox里的宿主机和虚拟机如何相互通信?(使用NAT)

    在这里需要了解三种网络连接方式(NAT、bridge adapter、host-only),在这就不阐述了,可以参考这篇博文:

https://blog.csdn.net/ixidof/article/details/12685549

    因为笔者使用的是NAT方式的网络连接方式,先介绍一下它的特点,Guest(NAT连接方式的虚拟机)访问网络的所有数据都是由主机提供的,Guest并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Guest的存在。

    虚拟机与主机的关系:只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。所以带来一个很大的问题,桥接方式很浪费ip,而NAT方式主机却不能访问到虚拟机,SSH远程访问和在主机上使用虚拟机的服务就是个大问题了。

    查阅了一些资料,最后使用了一种端口映射的方式,即在virtualbox中对虚拟机的nat方式设置了端口转发(例如如果一个外部主机试图通过HTTP访问外网的IP加相应端口,就可访问到相应的内网建立的服务器。),不同于端口映射(是将一台主机的内网(LAN)IP地址映射成一个公网(WAN)IP地址,当用户访问提供映射端口主机的某个端口时,服务器将请求转移到本地局域网内部提供这种特定服务的主机;)。

oracle virtualbox里的宿主机和虚拟机如何相互通信?(使用NAT)_第1张图片

    在这里,访问127.0.0.1:222就转发到虚拟机的10.0.2.15:22,这样可以完成SSH远程登录,当然,我们的虚拟机需要安装ssh服务,眼尖的大佬可能看到了下面的8008转发到了80端口,其实我是在虚拟机中搭建了一个nginx服务。

oracle virtualbox里的宿主机和虚拟机如何相互通信?(使用NAT)_第2张图片


    参考博文:(1)http://www.elecfans.com/dianzichangshi/20171204593654.html

                     (2)https://blog.csdn.net/ixidof/article/details/12685549

                     (3)https://blog.csdn.net/zero_295813128/article/details/51159805

你可能感兴趣的:(java后端开发,虚拟机,NAT,端口转发)