vmware的vmnet-理解全景后解答两个问题
来源:互联网 发布:mac 10.12 搜狗五笔 编辑:程序博客网 时间:2024/06/07 06:45
问题一:虚拟机中增加两块网卡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-理解全景后解答两个问题
- ubuntu 15.04 & vmware 11 针对vmnet问题的patch
- vmware的vmnet-概念的解说
- vmware的vmnet-有机会还要看源码
- vmware的vmnet-组网,升级和应用
- vmware fusion设置vmnet网段的方法
- vmware fusion设置vmnet网段的方法
- VMWare VMNet 8 的配置使用
- VMWare VMNet 8 的配置使用
- vmware的vmnet-感官和视觉上的效果
- vmware网卡VMnet中的桥接协议卸载后无法安装
- 重装系统后vmware的问题
- 关于Ubuntu 14.04 x64 安装 Vmware 10 x64 编译 vmnet失败的解决方法
- 摘之网上,两个很基本的问题的解答。
- hadoop搭建时候遇到的两个问题及解答
- 两个可能目前还不能解答的问题
- 系统重装后,Vmware的安装问题
- vmware安装后ubuntu 进入Vmware Easy Install的问题
- RThread::RequestComplete 和AO 的使用
- vim常用的缩进等命令
- JSP动态生成XML、json例子
- Qt for Symbian 运行库
- LGame-0.2.9版二次修正(LGame-0.2.95,新增塔防示例,已提供下载)
- vmware的vmnet-理解全景后解答两个问题
- C++ 运算符优先级列表
- 通信系统需要什么样的OS,linux? vxworks?
- 一道挺麻烦的深度优先搜索题
- 乐PAD:联想向Apple发起总攻
- vmware的vmnet-组网,升级和应用
- Java语言编程规范
- 浅谈路由器性能提升
- JNI jstring与c++字符串类型转换函数