之前一直很好奇虚拟机是如何与互联网进行通信的,正好下周计网有分享活动,乘机研究一下。
首先,通过学习得知,在VM等虚拟机中常见的有三种连接模式,分别是:Brigde—桥接、NAT—网络地址转换、Host-Only—私有网络共享主机。一一介绍。为了便于理解,画了一些图。
一、Brigde——桥接
桥接模式下,会生成一个虚拟网卡,当数据包进行交换时,会从虚拟网卡转发到物理网卡。此时物理网卡类似于交换机,真实系统和虚拟系统需要在同一网段下,它们可以相互访问。
如图,主机与虚拟机之间能相互访问,(注意虚拟机的访问延迟)
二、NAT——网络地址转换
NAT全称Network address translate,在NAT模式下,当虚拟机想与外网进行通信时,虚拟机先把数据发送到虚拟网关,此时虚拟机服务的NAT程序会将数据包内的ip相关内容修改真实物理网卡对应的值,然后传递再到物理网卡,此时数据是以真实系统下的ip地址进行发送的。虚拟机和真实系统不需在同一网段下。
同样的,主机与虚拟机之间能够相互访问,不过请注意虚拟机向主机发送数据的延迟,可以看到:在NAT模式下的延迟相比桥接模式下高了几ms。我们再尝试向外网发送数据包:
发现在桥接模式下,ping到www.baidu.com的延迟差不多刚好和之前的延迟差距一样,可以猜测,这种延迟是由于NAT模式在虚拟网关中修改数据包花费了时间。
三、Host-Only——私有网络共享主机
这个模式下,默认虚拟机将会与外网隔离,并且主机向虚拟机单向通信(可以修改)。在注重设备安全性时会考虑使用这种模式。
可以看到,在默认情况下,虚拟机与主机是单向通信的。
总结:三种模式的连接下,安全性:Host-only>NAT>Brigde,连通效率:Brigde>NAT>Host-only。可以根据情况适当选择需要的模式。