大家都知道VMWare的三种组网模式,分别为Bridge,NAT,Host-Only。VMWare认为使用这三种组网模式则可以搭建出任意的网络拓扑了,事实上也正是如此。如果你对网络很精通,那么应该很容易就可以理解VMWare的网络配置模式,然而即使如此,VMWare由于只是一个虚拟机,没有形象的拓扑展示出来。本文简单的给出三种组网模式的形象化的图示,另外,VMWare的帮助文档中也有相当详细的介绍VMNet的章节。

一.Bridge模式
顾名思义,Bridge模式就是桥接模式,虚拟机里面的网卡直接桥接在宿主机的某一个物理网卡所在的网段。示意图如下:

这种方式很多时候是为像我这样的懒人提供的,然而在非DHCP的情况下,很容易造成IP地址冲突,因此如果不是非要将虚拟机配置在一个网段,就不要用Bridge模式。Bridge模式的组网拓扑如下:

二.NAT模式
所谓NAT模式就是将虚拟机网卡隐藏在了一个NAT设备之后,在外界看来,只能看到宿主机物理网卡,甚至连NAT设备都看不到,NAT设备默默地转换着虚拟机内部出来的连接的源地址,如下图所示:

然而,有一个细节,那就是上图中的菱形到底是如何实现的,VMWare到底如何在不同的宿主操作系统下模拟出一个一致的NAT设备的。为了实现的一致和简单,VMWare使用了用户态连接代理的方式来实现NAT设备,因此NAT设备其实就是一个用户态进程,它来执行地址转换,如下图所示:

所谓的地址转换其实不是真正的IP网络意义上的地址转换,而是一个代理。虚拟机里面发起的连接在宿主机的NAT进程中完全被截获,然后NAT进程偷梁换柱代替虚拟机里面的连接单独向目的地发起一个连接,随后和目的地通信,然后将数据转发给虚拟机。我们可以通过一个简单试验来说明这一点:

1.只允许本地的TCP syn包发出去,禁止任何回包
iptables -A OUTPUT -p tcp --tcp-flags SYN SYN -j ACCEPT
iptables -A OUTPUT -j DROP
iptables -A INPUT -j DROP
2.在虚拟机中建立到百度的tcp连接
telnet 74.125.128.94 80
3.查看宿主机上的用户态nat进程的文件描述符
lsof -p 271 -n
...
vmnet-nat 271 root    7u    IPv4 0xffffff8017b62160       0t0    TCP 192.168.1.101:49256->74.125.128.94:http (ESTABLISHED)
...
4.结论
虚拟机里面只能发出syn包,然而宿主机里面到74.125.128.94的连接已经建立,说明nat进程是一个用户态的连接代理。同样的结论还可以通过tcp抓包来观测到,怎么观测呢?很简单,查看序列号即可,虚拟机里面抓取的数据包的序列号和确认号和宿主机上抓取的“同样连接”(实际上不是一个连接,而是被代理的)的序列号以及确认号不是一致的,而我们知道,常规的NAT只修改五元素,不会修改序列号。
        可见,由于NAT是一个代理,NAT模式可能会造成目的主机TCP连接统计的不准确,比如上述实验中,虚拟机明明没有连接成功目的地,然而宿主机的NAT进程却已经建立了一个TCP连接。使用NAT模式,就需要知道它所带来的一切副作用。最后NAT模式的组网拓扑如下:

三.Host-Only模式
这种模式其实是最纯粹的了,虚拟机和宿主机的一块网卡(虚拟网卡)直连,仅此而已,如下图所示:

可是Host-Only模式的虚拟机如何连接外网呢?虚拟机可以将宿主机作为一台路由器来看待,如此一来,剩下的问题就是如何来配置这个路由器了。以下步骤是必须的:

1.在虚拟机中将默认网关指向宿主机的虚拟网卡vmnet1,如果你不嫌麻烦也可以配置主机路由

2.打开宿主机的路由功能
Linux:sysctl -w net.ipv4.ip_forward=1
Mac OS:sysctl -w net.inet.ip.forwarding=1
Windows:打开Tcpip的IPEnableRouter注册表项

3.以下方法选其一
3.1.配置SNAT。Linux使用iptables配置出口网卡的SNAT;Mac OS使用natd以及ipfw配置;Windows使用网卡的“共享”上网来配置
3.2.配置纯路由,主要是解决回程路由的问题,然而很多外网服务器的路由我们没法配置,因此这个只适用于实验环境
Host-Only模式的组网拓扑如下所示:

四.vnnetX的含义
VMWare在宿主机中虚拟了几块网卡,这些网卡实际上都是一些带有多个port的二层或者三层网络设备。本文到此为止没有谈到DHCP,实际上每种组网模式都可以有一台DHCP服务器插入这些虚拟设备的port,为虚拟机里面的网卡分配IP地址。

默认情况下,VMWare提供了vmnet0/1/8三块虚拟网卡,vmnet0外界看不到,它实际上是一个纯链路层Bridge,该Bridge设备没有任何三层功能,该Bridge的其中一个port就是宿主机的某一块物理网卡。vmnet1专门给Host-Only来使用,vmnet8专门用于NAT,这两个虚拟网卡都有三层的功能,都可以配置IP地址,实实在在是一块宿主机上可见的网卡啊,除此之外,这两块网卡同时也是Bridge设备,只是该Brdige并没有桥接任何宿主机上的任何物理网卡。

深入浅出VMware的组网模式相关推荐

  1. VMware网络连接模式—桥接、NAT以及仅主机模式的详细介绍和区别.ziw

    2017年1月10日, 星期二 VMware网络连接模式-桥接.NAT以及仅主机模式的详细介绍和区别 在使用VMware Workstation(以下简称:VMware)创建虚拟机的过程中,配置虚拟机 ...

  2. VMware虚拟机网络模式详解 NAT模式

    本篇博文为<VMware虚拟机网络模式>系列的其中一篇:NAT模式. VMware虚拟机在我们学习过程中必不可少,不管是安装Linux操作系统来进行学习.搭建各种网络服务,拟或者是用来做集 ...

  3. VMware开启NAT模式/仅主机模式后主机ping不通虚拟机的问题

    VMware开启NAT模式/仅主机模式后主机ping不通虚拟机的问题 问题:VMware设置网络模式为NAT模式后,我们使用主机ping虚拟机无法联通,用虚拟机ping主机可以联通. 原因:这是由于虚 ...

  4. 采用无线网桥做监控有什么优势?无线网桥的组网模式有哪些?

    无线网桥顾名思义就是无线网络的桥接,它利用无线传输方式实现在两个或多个网络之间相互连接,无线网桥从通信机制上分为电路型网桥和数据型网桥.无线网桥通常用来应用在无线监控,用于将监控数据由一个地方传输到另 ...

  5. VMware的宿主模式

    VMware的宿主模式: 一.系统为CenterOS 安装好系统后 安装VMware tools 点击VMware最上面摘要视图,即可,如图: 此时,主机会如操作本机程序一样,速度快不快我不知道感觉上 ...

  6. vmware中NAT模式下,虚拟机与主机能ping通 为什么虚拟机不能上网

    vmware中NAT模式下,虚拟机与主机能ping通 为什么虚拟机不能上网? 方案一: 1.把虚拟机的网络连接设置为桥接或NAT都可以的 2.把虚拟机和主机设置为同一网段 主机 网络邻居属性 3.双击 ...

  7. vmware虚拟机网络模式

    vmware虚拟机网络模式 vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-Only(仅主机模式). 打开vmware虚拟机,我 ...

  8. VMware网络连接模式—桥接、NAT以及仅主机模式的详细介绍和区别

    在使用VMware Workstation(以下简称:VMware)创建虚拟机的过程中,配置虚拟机的网络连接是非常重要的一环,当我们为虚拟机配置网络连接时,我们可以看到如下图所示的几种网络连接模式:桥 ...

  9. VMware网络NAT模式无法连接解决方法

    VMware网络NAT模式无法连接解决方法 问题的描述 尝试的办法 解决办法 问题的描述 nat vmnet8 & vmnet1 均显示已连接,但是虚拟网卡(网络共享那块)不出现 尝试的办法 ...

  10. 如何更改vmware的网络模式

    一.先提一下vmware的网络模式: vmware有三种网络工作模式,它们分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-Only(仅主机模式) 1.Bridged(桥接模式 ...

最新文章

  1. 微信跳一跳高分系列四:一个 JAVA 版开源的微信跳一跳辅助工具
  2. AtCoder Regular Contest 120 C - Swaps 2 线段树模拟
  3. python核心编程笔记chapter 3
  4. 36日期计算包含计算某月某日是星期几的公式
  5. 【codevs1246】丑数,STL与取模大质数的好处
  6. 局域网聊天工具FreeChat 1.0 开发日志
  7. java int stack_java中int算法的有趣现象
  8. 5 Tips for creating good code every day; or how to become a good software developer
  9. 设置 路由模式 桥接模式
  10. python基于scipy模块实现统计学中三大相关系数的计算
  11. 电脑计算机c盘缓存清理,电脑资深玩家教你如何有效进行C盘清理
  12. win7便签损坏怎么彻底修复好
  13. Tomcat6配置参数详解
  14. 海康NVR设备上传人脸图片到人脸库
  15. matlab实现螺旋谱分解,MATLAB实现EMD分解及希尔伯特谱分析
  16. Magicodes.IE在.NET Core中通过请求头导出多种格式文件
  17. 学it需要学历吗_学IT需要什么学历
  18. modalpopup控件使用时的pannel设置问题
  19. zoj 2975 Kinds of Fuwas(数学题)
  20. oracle erp 架构,Oracle ERP (EBS)基础篇-体系架构

热门文章

  1. android APN的打开与关闭
  2. 用网页做触摸屏展示的设计要点
  3. stm32如何执行软复位_stm32f7软件复位 stm32f0 软件复位
  4. was控制台的用户和密码怎样加密使用_交换机密码忘记了,怎么办,密码恢复一分钟了解下...
  5. panel items 添加指定位置_通过gitlab-ci自动添加prometheus业务监控
  6. python将图片转化成字符图片_python如何将图片转换为字符图片
  7. js jquery select 操作 获取值,选中选项,增加,修改,删除
  8. Asp.net Boilerplate之AbpSession扩展
  9. window环境下杀死tomcat
  10. Java 异常类层次结构