专栏首页架构师一文带你全面了解虚拟机的四种网络模型(图文并茂)

一文带你全面了解虚拟机的四种网络模型(图文并茂)

转载自:CloudDeveloper

ID:cloud_dev

010

阅读本文大概需要 4.8 分钟。

01 从物理网络到虚拟网络

著名的「六度分隔定理」说到,世界上任何两个互不相识的人,只需要最多六个人就能够建立起联系。这个定理成立的前提就是依托于庞大的网络结构。

在虚拟化技术没出现之前,构成网络的元素都是实体的物理设备,比如交换机、路由器、网线等等,人们想要构建一个小型的局域网自己玩玩,都要买各种设备,成本高还不灵活。虚拟化技术普及之后,云计算开始大行其道,我们在自己的单机上就可以建各种虚拟机,想怎么玩就怎么玩。

随之而来的就是网络变得更复杂了,由以前看得见摸得着的物理网络一下变成玄乎的虚拟网络了,好不容易建了几台虚拟机,发现网络不通,或者网络通了,但并不知道是怎么通的,这难言的苦水哽在喉咙实在令人不适。

这篇文章就来说说虚拟机世界里的几种网络模型,我们主要以 VirtualBoxVMwareWorkstation 这两款目前最主流的桌面虚拟化软件作为例子。

总的来说,目前有四种常见的网络模型:

  • 桥接(Bridge Adapter)
  • NAT
  • 主机(Host-only Adapter)
  • 内部网络(Internal)

这也是 VirtualBox 支持的四种模型,对于 VMware,则只有前三种。

下图显示了 VirtualBox 支持的几种网络模型:

图一

02 桥接(Bridge Adapter)

虚拟机桥接网络模型就是使用虚拟交换机(Linux Bridge),将虚拟机和物理机连接起来,它们处于同一个网段,IP 地址是一样的。如下图所示:

在这种网络模型下,虚拟机和物理机都处在一个二层网络里面,所以有:

  • 虚拟机之间彼此互通
  • 虚拟机与主机彼此可以互通
  • 只要物理机可以上网,那么虚拟机也可以。我们来验证下:

桥接网络的好处是简单方便,但也有一个很明显的问题,就是一旦虚拟机太多,广播就会很严重。所以,桥接网络一般也只适用于桌面虚拟机或者小规模网络这种简单的形式。

03 NAT

另一种模型是 NAT,即网络地址转换(Network Address Translatation)。这种模型严格来讲,又可以分为 NATNAT网络两种,我们看上面的图 1 也可以看到。

根据 NAT 的原理,虚拟机所在的网络和物理机所在的网络不在同一个网段,虚拟机要访问物理所在网络必须经过一个地址转换的过程,也就是说在虚拟机网络内部需要内置一个虚拟的 NAT 设备来做这件事。

但其中 NATNAT网络 两者还有些许的不同:

  • NAT:主机上的虚拟机之间是互相隔离的,彼此不能通信(它们有独立的网络栈,独立的虚拟 NAT 设备)
  • NAT网络:虚拟机之间共享虚拟 NAT 设备,彼此互通。

如下图,展示了两者细微的差别:

PS:NAT 网络模式中一般还会内置一个虚拟的 DHCP 服务器来进行 IP 地址的管理。

下面我们通过实验来验证一下两种模式的区别,首先是 NAT 模式:

访问外网没问题:

访问其他虚拟机:

可以看到,两个虚拟机由于有隔离的网络栈,所以它们的 IP 地址并不在一个网段,所以 ping 不通。

再来看 NAT网络,访问外网同样没问题,我们来看下 VM 之间的互通:

可以看到,差别体现出来了, NAT网络 虚拟机之间共享网络栈,它们的 IP 地址处于同一个网段,所以彼此是互通的。

总结一下,以上两种 NAT 模式,如果不做其他配置,那么有:

  • 虚拟机可以访问主机,反之不行
  • 如果主机可以上外网,那么虚拟机也可以
  • 对于 NAT,同主机上的虚拟机之间不能互通
  • 对于 NAT网络,虚拟机之间可以互通

PS:如果做了 端口映射 配置,那么主机也可以访问虚拟机。

04 主机网络(Host-only Adapter)

主机网络顾名思义,就是只限于主机内部访问的网络,虚拟机之间彼此互通,虚拟机与主机之间彼此互通。但是默认情况下虚拟机不能访问外网(注意:这里说的是默认情况下,如果稍作配置,也是可以的)。

主机网络看似简单,其实它的网络模型是相对比较复杂的,可以说前面几种模式实现的功能,在这种模式下,都可以通过虚拟机和网卡的配置来实现,这得益于它特殊的网络模型。

主机网络模型会在主机中模拟出一块虚拟网卡供虚拟机使用,所有虚拟机都连接到这块网卡上,这块网卡默认会使用网段 192.168.56.x(在主机的网络配置界面可以看到这块网卡),如下是基本的拓扑图示:

默认情况下,虚拟机之间可以互通,虚拟机只能和主机上的虚拟网卡互通,不能和不同网段的网卡互通,更不能访问外网,如果想做到这样,那么需要如图中 红虚线 所示,将物理网卡和虚拟网卡桥接或共享。在主机上做如下设置即可:

通过以上配置,我们来验证一下,虚拟机可以访问主机物理网卡和外网了:

05 内部网络(internal)

最后一种网络模型是内部网络,这种模型是相对最简单的一种,虚拟机与外部环境完全断开,只允许虚拟机之间互相访问,这种模型一般不怎么用,所以在 VMware 虚拟机中是没有这种网络模式的。这里我们就不多说了。

06 总结

虚拟机的四种网络模型:桥接、NAT、主机和内网模型。

下面以一张表来描述它们之间的通信行为:

本文分享自微信公众号 - 架构师修行之路(jiagoushixiuxing)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 程序员修神之路--容器技术为什么会这么流行

    在传统的软件部署方式中,程序员需要把要发布的应用程序打成包发给运维人员,然后由运维人员在生产环境进行部署。当随着应用的版本迭代越来越多,应用的依赖库版本错综复杂...

    架构师修行之路
  • 进击谷歌:多线程下程序执行顺序怎么稳定不乱?

    分别初始化三个线程去执行这三个方法,每个线程执行的方法可以任意指定,但是方法的执行顺序必须是:Methond1=》Methond2=》Methond3

    架构师修行之路
  • 长连接和短连接详细解析

    单个应用程序 + 单个数据库这套基础开发套餐我相信每个人都经历过,甚至在初期它们还有可能部署在同一台服务器上。既然应用程序和数据库分属于两个不同的进程,所以这个...

    架构师修行之路
  • 虚拟机网络模型详解,看这篇就够了(图文并茂)

    著名的「六度分隔定理」说到,世界上任何两个互不相识的人,只需要最多六个人就能够建立起联系。这个定理成立的前提就是依托于庞大的网络结构。

    CloudDeveloper
  • VPC下访问FTP的问题

            最近用VPC一直用的很爽,用来调试安装包,实在太好用了。但是,最近却遇到一个问题,FTP总是无法正常工作,经过漫长而痛苦的跟踪定位,找到原因: ...

    用户1075292
  • Java虚拟机OOM之虚拟机栈和本地方法栈溢出(4)

    (1)如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError 异常; (2)如果虚拟机栈可以动态扩展(当前大部分的 Java ...

    Java后端技术
  • Tungsten Fabric如何支撑大规模云平台丨TF Meetup演讲实录

    本文所有相关资料https://tungstenfabric.org.cn/assets/uploads/files/large-scale-cloud-yy....

    Tungsten Fabric
  • 如何使用 VM 虚拟机端口映射实现数据转发

    随着虚拟化技术的应用,很多环境配置都是在虚拟机中进行的,比如前几天我搭建的 Git 服务器,就是在一个物理机的虚拟机上搭建的,一方面可以做环境隔离,另一方面也方...

    sylan215
  • 查询工具来了!跟你同程的乘客是否有确诊患者,速查→

    磐创AI
  • 在 VMware workstation 安装 CentOS 虚拟机

    上一篇介绍了怎么安装 VMware workstation Pro,安装完肯定是要装虚拟机啊,下面就来介绍一下怎么安装 CentOS 7.

    伪君子

扫码关注云+社区

领取腾讯云代金券