`
izuoyan
  • 浏览: 8949215 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

vmware的vmnet-概念的解说

阅读更多

vmware本身实现了一个很不错的虚拟网络-vmnet,这个虚拟网络完全可以脱离vmware而存在,我个人十分看好这个虚拟网络架构,它实质上是在内核实现的一个虚拟的链路层网络,至于它还有没有其它的组网方式,值得研究。
1.几个概念:
1.1.Virtual Switch:这是一个虚拟交换机,存在于安装vmware的真实主机的操作系统内核当中,这个switch提供了多个“插口”,这个交换机是一个链路层交换机,也就是说,插到它上面的是“网卡”,可以是虚拟网卡,也可以是真实的网卡,也可以是用户态的假网卡,只要这些“网卡”可以收发链路层的帧就可以。
1.2.真实网卡:一个真实存在的物理网卡,拥有电气属性,一般是一块板卡或者是一个芯片;
1.3.虚拟网卡:仅仅实现了真实网卡的接口,上层看来它就是一块真实网卡,没有电气属性,然而在操作系统级别却可以看到,比如ifconfig就可以看到,比如vmnet1/8,tap0等;
1.4.假网卡:连网卡的操作接口都没有实现,仅仅可以构造链路层的数据并以自己的方式实现收发功能,在接触vmware的网络实现之前,tun驱动的字符设备实现是一个好例子。
1.5.虚拟网络:由虚拟交换机连接在一起的各个“网卡”组成了一个虚拟网络,这是一个三层网络(比如ip网络),因此每存在这样一个网络就会有一个虚拟交换机将网络上的节点(“网卡”)连接在一起。
1.6.“网卡”:带有以太帧写入和读出的接口的纯粹虚拟“卡口”,其对应的物理卡口是以太网卡和rj45线缆的连接口,只是后者流入流出的不是二层数据,而是物理层数据。它是真实网卡的卡口,虚拟网卡的卡口,假网卡的卡口的统称。
2.概念举例与引申:
2.1.虚拟交换机与虚拟网络:我们知道在vmware中,虚拟机的网卡有三种组网方式:bridge,nat,host-only。如果你的物理机器上有两块网卡,并且虚拟机里面的一块网卡选择了bridge,那么你自己必须指定bridge到哪一块物理机器的真实网卡,比如你指定的是物理机器的eth0,那么这个真实的eth0将连接到一个虚拟交换机上,另外就是一个用户态的假网卡(涉及到虚拟机的工作方式)连接到此虚拟交换机上。如果你还启用了nat的方式,那么将有许多“网卡”连接在一台虚拟交换机上:1.用户态实现的nat设备(之所以在用户态实现是为了不依赖操作系统的nat功能);2.一台虚拟的dhcp设备(为该网段分配ip地址,也在用户态实现);3.物理机器上的一个该网段的虚拟网卡(为了物理机和虚拟机的互通);4.虚拟机里面的一块虚拟出来的网卡(由于vmware使用monitor驱动将系统调用都重新转向了用户空间,因此此也在用户态实现)。如果是host-only的方式,则除了nat方式的nat设备不需要之外,其余的都和nat一样。因此和tun一样,在用户态存在一个字符设备接口,用于用户态的“网卡”接入,在内核中有一个虚拟网卡实现,用于虚拟网卡的接入,对于bridge模式,真实网卡直接接入,和tun驱动不同的是,tun驱动的虚拟网卡直接和字符设备交互,虚拟网卡发送的数据直接发送到字符设备,而vmnet则不同,它们通过Virtual Switch交互,也就是中间加了一个虚拟交换机来路由以太帧,故vmnet完全可以实现tun的组网方式
2.2.vmnet实现tun组网:由于vmnet有虚拟交换机的概念,那么完全可以实现tun的组网方式,也就是通过路由和iptables来控制数据包的转发而不是用户态的守护进程,比如vmnet-natd等。杀死vmnet-natd之后,nat方式的虚拟机里数据包应该不能和外部网络通信了,然而在物理机器上将ipforward打开,并且手工在真实网卡设置一个snat,然后在虚拟机内部将网关指向真实机器的对应虚拟网段的虚拟网卡,数据还是可以从虚拟机内部出来的。
3.总结:vmnet实际上在内核实现了一个交换网络(特指ip地址在同一网段的链路层网络)的机制,你可以在内核创建很多这样的网络,每一个这样的网络有一台虚拟交换机将所有节点连接在一起,这些节点就是“网卡”的卡口,可以来自用户态,可以来自内核的虚拟网卡,也可以来自内核的真实网卡,这样实现的一个网络非常灵活,不需要关注协议栈,只要在卡口发送或者接收以太帧就可以了,如果需要解析这些以太帧,要么通过操作系统本身的协议栈,要么在用户态自己解析,毕竟来自用户态的“网卡”卡口可以将数据收到用户态进程,然后你可以在用户态实现一个协议栈,甚至可以和scapy结合起来玩。至于说如何配置这个虚拟网络,vmware已经配好了三种,而且你可以自己配置自己的网络拓扑,前提是你得知道vmnet驱动提供的接口,这就需要看它的源代码了。

分享到:
评论

相关推荐

    VMWare VMNet 8的配置使用详解

    主要介绍了VMWare VMNet 8的配置使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    vmnet-3.19.patch

    用于解决linux下vm ware11 问题: Failed to build vmnet. Failed to execute the build command.

    vmnet-3.19

    在安装vmware11.1.0时,由于它不支持kernel3.19,所以需要我们进行人为的patch!

    vmware-workstation中vmnet0-vmnet1-vmnet8的详解.pdf

    ...

    vmware-vmnet.rar

    Centos6.x、Centos7.x、RHEL6.10、RHEL7.x安装vmware11、vmware12,vmnet报错。 Failed to build vmnet. Failed to execute the build command. 使用附件中文件修复即可。确认可用,方法简单有效。

    Vmware中的vmnet0~vmnet8详解

    Vmware中的vmnet0~vmnet8详解 ,good!

    Centos7.4 VMware 12.5.5 install patch

    VMware Workstation for Linux v...cp /usr/lib/vmware/modules/source/vmnet.tar ./vmnet-12.5.7.tar sudo cp vmnet.tar /usr/lib/vmware/modules/source/vmnet.tar sudo vmware-modconfig --console --install-all

    网络安全第一阶段(基础篇).pdf

    Intenet——moden——route——主机网卡pc---VMware1------VMware1--dhcp服务器 | | pc 虚拟机 ------------------------------------------------------------------------------------------...

    Linux3.2.0的VMWare Workstation 8.0.4补丁

    Linux3.2.0的VMWare Workstation 8.0.4补丁

    VMWare 7.0.1 build-227600

    与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序...

    vmware 8.0 vmnet modules

    解决vmware8.0在3.0以上版本内核不能安装的问题,安装完wmware出错时,把该文件解压,执行auto.sh,重新安装vmware即可

    修复fedora20 vmwareplayer vmnet 编译错误

    升级linux kernel后,vmware player 不能使用

    vmware workstation中vmnet0,vmnet1,vmnet8的详解.docx

    vmware workstation中vmnet0,vmnet1,vmnet8的详解.docxvmware workstation中vmnet0,vmnet1,vmnet8的详解.docx

    Vmware设置静态ip连网 使用自定义Vmnet8 net

    学习笔记 ... 2.选择VMnet8,点击NAT模式,再点击NAT设置 3.设置网关 ...7.点击网络适配器,选择自定义模式,三个模式中选择VMnet8(因为配置的是这个)。 8.开机,打开终端,输入命令sudo gedit /etc/network

    ubuntu17-10 vmware workstation 14

    2. 把压缩包里面的vmmon.tar vmnet.tar解压缩到/usr/lib/vmware/modules/source/目录 3. 重新编译 sudo /usr/lib/vmware/modules/source/vmmon.tar /usr/lib/vmware/modules/source/vmmon_old.tar sudo cp .//...

    vmnetbridge.dll,vmnet.sys等文件

    vmnetbridge.dll,vmnet.sys等文件 VMware虚拟机

    详解VMware 当中出现:无法将 Ethernet0 连接到虚拟网络”VMnet8″的问题

    出现本问题的情况,是在存在主机(物理机)WIN7系统,在主机的基础上,搭建虚拟机VMware(ubuntu server系统 )~ 目前,本人知道的解决方案: 1.选中VMvare中的编辑选项,进入虚拟网络编辑器,查看VMnet8是否启用! ...

    VMware网络连接设置技巧

    VMware系统中通常有VMnet0、VMnet1、VMnet8等多种虚拟网卡存在,如何正确配置和使用这些虚拟网卡,可能是很多入门网友关注的重点。  1. Bridge模式(桥接):  默认使用vmnet0,这种方式最简单,直接将虚拟...

    Zabbix监控部署

    VMware创建虚拟机后,使用NAT模式配置静态IP 1.查看本地NAT模式的网关路径: VMware软件-->查看-->虚拟网络编辑器-->VMnet8-->VMnet信息-->NAT设置-->网关IP(G):192.168.162.2 2.虚机静态IP配置...

Global site tag (gtag.js) - Google Analytics