`
xitong
  • 浏览: 6188267 次
文章分类
社区版块
存档分类
最新评论

vmware的vmnet-理解全景后解答两个问题

 
阅读更多

问题一:虚拟机中增加两块网卡eth0和eth1,均为bridge模式,两块网卡的ip地址配置到和真实机器真实网卡的同一网段,两块虚拟机网卡的arp_ignore均设置为1,然后真实机器上ping 虚拟机的eth0,在虚拟机的两块网卡上同时抓包,可以看出,eth0回复的arp回应也能被eth1收到,这是因为当在eth0和eth1上同时抓包时,两个网卡都将成为PROMISC(混杂)模式,而这两块网卡是由真实机器的两个userif的卡口代理的,可以在/proc/vmnet中看出,hub0.0由bridge,即物理真实网卡连接,而hub0.1由userif9(或者别的数字)连接,它即是虚拟机eth0的真实机器代理,hub0.2由userif10(或者别的数字)连接,它即是虚拟机eth1的代理,它们都在一个虚拟交换机上,因此当arp回应通过userif9进入虚拟交换机的时候,虚拟交换机将在各个卡口调用其receive例程,而eth1的userif10此时已经是混杂模式,因此虽然这个arp是单播给真实机器的真实网卡的,userif10也能收到,进而虚拟机的eth1也就收到了,具体在userif的receive例程中的比较目的mac地址的判断中:
Bool VNetPacketMatch(uint8 *destAddr, // IN: destination MAC
uint8 *ifAddr, // IN: MAC of interface
uint8 *ladrf, // IN: multicast filter
uint32 flags) // IN: filter flags
{
static const uint8 broadcast[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
return ((flags & IFF_PROMISC) || MAC_EQ(destAddr, ifAddr) || //混杂模式的网卡完全接收
((flags & IFF_BROADCAST) && MAC_EQ(destAddr, broadcast)) ||
((destAddr[0] & 0x1) && (flags & IFF_ALLMULTI ||
(flags & IFF_MULTICAST &&
VNetMulticastFilter(destAddr, ladrf)))));
}
因此虽然这个虚拟交换机名字是交换机(Virtual Switch),然而它真实的身份却是一个hub,在源代码中,它真的没有命名为switch.c而是hub.c。
问题二:对于host-only模式的虚拟机网卡,如何访问外网?
办法就是将虚拟机的默认网关设到真实机器的vmnet1的ip地址,然后在真实机器上将ip_forward打开,并且配置一条snat规则在真实的网卡上,对于从host-only网络来的数据包,全部进行nat。此种办法对于杀掉vmnet-natd但是使用nat模式的虚拟机网卡同样有效,要知道nat模式和host-only模式的区别就在于host-only模式少一个vmnet-natd这个进程。

分享到:
评论

相关推荐

    vmnet-3.19.patch

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

    VMWare VMNet 8的配置使用详解

    当我们安装VMware Workstation后,在宿主机(物理电脑)上会多出两个网卡,VMNet1、VMNet8,在虚拟机设置里会多出一个配置 VMNet0。 如下图: 接下来我们分别说明下: VMNet1 使用的是host-only的链接模式,即...

    vmnet-3.19

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

    Vmware中的vmnet0~vmnet8详解

    Vmware中的vmnet0~vmnet8详解 ,good!

    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. 使用附件中文件修复即可。确认可用,方法简单有效。

    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

    vmware 8.0 vmnet modules

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

    网络安全第一阶段(基础篇).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补丁

    修复fedora20 vmwareplayer vmnet 编译错误

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

    VMWare 7.0.1 build-227600

    在Processors选项区域中选择虚拟机中CPU的数量,如果选择Two,主机需要有两个CPU或者是超线程的CPU。  8.在Memory for the Virtual Machine页中,设置虚拟机使用的内存,通常情况下,对于Windows 98及其以下的系统...

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

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

    ubuntu17-10 vmware workstation 14

    这个补丁可以解决上述问题。 1. 备份/usr/lib/vmware/modules/source/目录下面的vmmon.tar 2. 把压缩包里面的vmmon.tar vmnet.tar解压缩到/usr/lib/vmware/modules/source/目录 3. 重新编译 sudo /usr/lib/vmware/...

    Vmware虚拟机下三种网络模式配置.docx

    VMware workstation安装好之后会多出两个网络连接,分别是VMware Network Adapter VMnet1和VMware Network Adapter VMnet8,这两个是可以在主机的网络连接中可以查看到的,还有一个是VMnet0,可以在virtual network ...

    VMware虚拟机创建安装之后不出现VMnet1和VMnet8虚拟网卡

    1、安装好VMware后,没有VMnet1和VMnet8虚拟网卡 VMware虚拟机无法将网络改为桥接状态 2、解决方法:首先把你之前安装的VMware虚拟机卸载,清理得一干二净; 3、原因是虚拟机安装的时候,无法写入注册表,我们可以...

    VMware网络连接设置技巧

     默认使用vmnet0,这种方式最简单,直接将虚拟网卡桥接到一个物理网卡上面,和linux下一个网卡绑定两个不同地址类似,实际上是将网卡设置为混杂模式,从而达到侦听多个IP的能力。  将虚拟机的ip设置与主机同网段未...

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

    学习笔记 ... ... 3.设置网关 ... 5.填上虚拟机的ip地址、子网掩码、网关,一定要填对...7.点击网络适配器,选择自定义模式,三个模式中选择VMnet8(因为配置的是这个)。 8.开机,打开终端,输入命令sudo gedit /etc/network

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

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

Global site tag (gtag.js) - Google Analytics