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



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271127

相关文章
|
虚拟化 网络架构 芯片
|
1月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
745 3
|
1月前
|
存储 SQL 数据库
虚拟化数据恢复—Vmware虚拟机误还原快照的数据恢复案例
虚拟化数据恢复环境: 一台虚拟机从物理机迁移到ESXI虚拟化平台,迁移完成后做了一个快照。虚拟机上运行了一个SQL Server数据库,记录了数年的数据。 ESXI虚拟化平台上有数十台虚拟机,EXSI虚拟化平台连接了一台EVA存储,所有的虚拟机都存放在EVA存储上。 虚拟化故障: 工组人员误操作将数年前迁移完成后做的快照还原了,也就意味着虚拟机状态还原到数年前,近几年数据都被删除了。 还原快照相当于删除数据,意味着部分存储空间会被释放。为了不让这部分释放的空间被重用,需要将连接到这台存储的所有虚拟机都关掉,需要将不能长时间宕机的虚拟机迁移到别的EXSI虚拟化平台上。
110 50
|
2月前
|
安全 虚拟化 数据中心
Xshell 连接 VMware虚拟机操作 截图和使用
Xshell 连接 VMware虚拟机操作 截图和使用
81 4
|
6月前
|
Unix Linux 虚拟化
虚拟机VMware知识积累
虚拟机VMware知识积累
|
2月前
|
Linux 虚拟化
vmware虚拟机安装2024(超详细)
vmware虚拟机安装2024(超详细)
390 6
|
2月前
|
虚拟化 网络虚拟化 网络架构
虚拟机 VMware Workstation 16 PRO 的网络配置
虚拟机 VMware Workstation 16 PRO 的网络配置
93 2
|
3月前
|
存储 SQL 数据挖掘
虚拟化数据恢复—VMware虚拟机vmdk文件被误删除的数据恢复案例
虚拟化数据恢复环境: 某品牌服务器(部署VMware EXSI虚拟机)+同品牌存储(存放虚拟机文件)。 虚拟化故障: 意外断电导致服务器上某台虚拟机无法正常启动。查看虚拟机配置文件发现这台故障虚拟机除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。管理员联系VMware工程师寻求帮助。VMware工程师尝试新建一个虚拟机来解决故障,但发现ESXi存储空间不足。于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除,然后重建一个虚拟机并且分配固定大小的虚拟磁盘。