500字范文,内容丰富有趣,生活中的好帮手!
500字范文 > [计算机网络][VirtualBox]虚拟机的网络模式详解

[计算机网络][VirtualBox]虚拟机的网络模式详解

时间:2021-05-09 02:04:55

相关推荐

[计算机网络][VirtualBox]虚拟机的网络模式详解

本文将介绍虚拟机的6网络模式——NAT模式,NAT Service模式,Bridged(网桥)模式,Internal(内部)模式,host-only(仅主机)模式。

1.NAT模式

如果你新建了一台虚拟机,希望它能连上互联网,那最简单的配置就是NAT模式。它不需要给主机和虚拟机做特殊的配置,因此也是VirtualBox默认的网络模式。

在NAT模式下,每台虚拟机和主机之间都通过一个“虚拟的路由器“连接,虚拟机访问外网的包会被这个“虚拟路由器“接收,然后“虚拟路由器“会抽取里面的TCP信息,将它用物理主机的网卡发出去,发出去的包的源IP地址是物理主机的IP地址,通过这种方式访问互联网,而这个“虚拟路由器“其实是VirtualBox的NAT 引擎。

主机上的loopback(环回)接口是可以被虚拟机访问的,因此虚拟机可以通过这种方式访问物理主机的应用。

VirtualBox的NAT引擎会将虚拟机和物理主机隔离开来,因此主机无法访问虚拟机,也就是说主机ping10.0.2.15是无法ping通的。当然虚拟机之间也无法相互访问。

如果想要外网能访问虚拟机,需要配置端口转发规则,让从外界进来的包转到虚拟机。VirtualBox会监听某个端口,如果收到外网来的包就会根据转发规则,在虚拟机的专用网络将包转发给对应的虚拟机。在外界看来,虚拟机不过是我们主机上的一个应用而已。

由于主机上的loopback(环回)接口是可以被虚拟机访问的,因此可以使用127.0.0.1代表主机的地址,使主机能访问虚拟机。

比如我们可以配置转发规则让主机可以访问虚拟机,如虚拟机1设置TCP协议下,127.0.0.1上的2222端口的内容会转发到自己的22号端口,那么主机发到loopback接口的2222端口的TCP包就会被转发到虚拟机1的22端口,可以用此方式使Host用SSH连接虚拟机1。

关于如何配置,可以查看官方文档,这个官方文档是关于如何使用端口转发的,但其实是一个事情,我们在用NAT模式的时候才使用端口转发。

2.NAT Server模式

这个模式跟NAT模式中很像,只不过是在NAT模式的基础上,让虚拟机之间可以互相通信,网络连接图为:

因为虚拟机之间是在同一个子网内的可以通信,但是端口转发的规则就有些变化了。在NAT模式下,一个子网里面只有一个虚拟机,所以端口转发规则是对于一个虚拟机的,但是现在该子网包含多台虚拟机,所以这个端口转发规则应该是对于所有虚拟机的,因此是一个全局的配置,是在VirtualBox面板配置的。

3.Bridged模式

在网桥模式,其实就是把虚拟机当作是一个物理机器,它通过虚拟网桥直接连接到我们的物理网卡,虚拟机和我们的物理主机在同一个子网下,IP地址也是由子网下的DHCP服务器分配的,连接方式图:

我本来以为会有一个虚拟网桥之类的东西,但是查看了VirtualBox的官方文档,发现可能这只是一个比喻,没有虚拟网桥这样一个东西,只是有这样的一个机制让它看起来像是一个虚拟网桥。

实际上是通过一个网络过滤驱动实现的,这个驱动可以区分哪些数据是给虚拟机的,哪些数据是给主机的,相当于创建了一个软件的网络接口。这个软件的接口就让主机误以为虚拟机是自己子网里的小伙伴,以为它也是通过物理接口连接上的,因此主机能用这个接口和虚拟机传输数据。当然也让DHCP服务器误以为自己子网里有新成员,意味着你可以用网桥模式与网络上的其他设备通信。

以上这段是从官方文档翻译过来的,我并没有深入了解其中的机制(因为我发现主机连WIFI的话没有办法配置Bridged模式,要连有线网才能试试看,因此我有点恼火)如果感兴趣可以查看一下。

4.Internal模式

在Bridged模式下,由于所有的流量都会经过物理网卡,不管是虚拟机的流量还是主机的流量都可以通过监测物理网卡发现,因此这会带来一些不安全的隐患。

如果你希望你的虚拟机之间可以说悄悄话,但是不被主机察觉,那可以使用Internal模式,在该模式下,虚拟机之间可以相互访问,也可以访问主机和互联网,但是主机和互联网访问不了虚拟机,就会更保密一点。

关于网络连接图,这里不放,因为我暂时不知道是怎么连的

网上很多教程喜欢将Internal模式和NAT模式结合起来建立成一个类似NAT Server模式的样子,我也不知道为啥不直接用NAT Server模式,可能这样的自定义会安全一点吧。

5.Host-only 模式

Host代表我们的物理主机,Host-only就是虚拟机只与我们的物理主机建立连接。而虚拟机之间也是可以相互通信的,网络连接示意图是这样的:

该模式下,物理主机Host通过虚拟网络适配器(可以理解成一张虚拟的网卡)和虚拟机建立联系,物理网卡是不会直接连上虚拟机的,但只要有了虚拟的网络适配器,各个虚拟机和主机就像用一个虚拟的交换机连接起来,组成了一个局域网,虚拟机和主机之间可以相互联系。这个虚拟交换机不需要我们创建,虚拟技术应该会解决的。

在实际配置的时候,我们首先需要新建一个虚拟网络适配器,让虚拟机的网卡连上这个虚拟网络适配器。

虚拟网络适配器可以用VMware或者VirtualBox的网络管理器创建,注意这个虚拟网络适配器是属于虚拟系统的一部分,不是属于某一台虚拟机的一部分,当我们在物理主机使用ifconfig的时候,是可以看到这个虚拟网络适配器的,但是在虚拟机里面ping是看不到的。

而且由于没有连接物理网卡,也没有别的设备可以连接到互联网,因此该模式下的虚拟机是无法访问互联网的。如果想让虚拟机连接互联网,可以设置物理网卡和虚拟网络适配器之间进行信息共享。如果想动手试试,可以参考文章虚拟机的网络模式实战之Host-only模式

其实模式很多,但是配置起来都不难的。如果着急使用的话,直接看哪个模式可以联网,哪个模式可以跟主机说话,哪个模式下虚拟机之间可以互相讲话,直接去配就好了,不需要看繁琐的网络配置图,不着急的话就慢慢理解各机器之间的连接,当然这篇文章目前还没有完全解释清楚其中的机制,等我有所成长了再回来更新。

PS:官方文档并没有图示,因此文章中的图也是按自己的理解画的。如果有不清楚的地方,欢迎留言讨论。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。