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

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这个进程。

分享到:
评论

相关推荐

    VMWare VMNet 8的配置使用详解

    在安装VMware Workstation后,宿主机上会出现两个虚拟网络适配器,即VMNet1和VMNet8。VMNet1通常用于Host-Only模式,这种模式下,虚拟机只能与宿主机通信,不能访问外网。而VMNet8则用于NAT模式,它创建了一个虚拟...

    vmnet-3.19.patch

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

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

    总的来说,理解并正确配置 VMware Workstation 中的 vmnet0、vmnet1 和 vmnet8 对于充分利用虚拟机环境至关重要,无论是进行开发、测试还是学习不同操作系统,都需要根据实际需求选择合适的网络模式。

    vmnet-3.19

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

    Vmware中的vmnet0~vmnet8详解

    Vmware中的vmnet0~vmnet8详解 ,good!

    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-workstation-full-8.0.2-591240汉化包

    8.0.2是该软件的一个版本,而"VMware-workstation-full-8.0.2-591240汉化包"则是针对这个版本的中文语言包,确保用户可以使用中文界面,方便理解和操作。这个汉化包同时提供了x32(32位)和x64(64位)两种系统架构...

    vmware 8.0 vmnet modules

    这时,提供的压缩包包含了解决这个问题的特定vmnet模块,通过执行解压后的`auto.sh`脚本,可以自动处理与新内核的兼容性问题,从而使VMware 8.0能够正常工作。 在Linux环境中,内核是操作系统的核心部分,它管理...

    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

    Linux3.2.0的VMWare Workstation 8.0.4补丁

    这个补丁旨在解决VMware Workstation在运行时可能遇到的性能问题、兼容性问题以及安全漏洞,以提升虚拟机在Linux环境下的稳定性和效率。 首先,我们来了解一下VMware Workstation。VMware Workstation是一款功能...

    hyper-v虚拟机转换成vmware虚拟机的方法.docx

    在这个示例中,我们将虚拟网卡 vmnet2 的 IP 地址设置为 192.168.150.6,并将虚拟机的网卡设置为 vmnet2。 将 Hyper-V 虚拟机转换成 VMware 虚拟机非常简单快捷,只需要使用 VMware Converter 并按照步骤进行操作。

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

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

    修复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及其以下的系统...

    丢失vmnet.sys

    "丢失vmnet.sys"这个问题通常是由于虚拟化软件VMware在运行过程中遇到的常见问题,它涉及到VMware的主要组件之一——VMware Network Adapter VMnet驱动程序。这个驱动文件(vmnet.sys)是VMware Workstation、VMware...

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

    总结来说,理解并熟练运用vmnet0、vmnet1和vmnet8的不同模式,对于充分利用VMware Workstation的功能至关重要,无论是进行软件测试、开发还是教学,都能提供极大的便利。通过合理的网络配置,我们可以构建出各种复杂...

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

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

    vmnetbridge.dll,vmnet.sys等文件

    本文将深入探讨“vmnetbridge.dll”和“vmnet.sys”这两个文件在VMware虚拟机中的作用,以及它们如何协同工作来实现网络虚拟化。 首先,我们来看“vmnetbridge.dll”。这是一个动态链接库文件,它属于VMware ...

Global site tag (gtag.js) - Google Analytics