桥接虚拟局域网和真实局域网到同一网段原理分析

所属分类: 网络 / 网络其他 阅读数: 1500
收藏 0 赞 0 分享
接上一篇文章《虚拟局域网》。
虚拟局域网底层”物理链路“,其实就是建立在真实网卡TCP/UDP协议上,
通过UDP来转发虚拟网卡产生的以太网卡数据包,
而上层的应用程序看到的,就跟在一个真实的网络里通讯一样。
但是虚拟局域网也就只局限于在本网络里通讯,等于是一个封闭的网络一样。
他们要跟真实局域网建立联系,该怎么做呢,上篇文章说道可以借助NAT,
也可以借助路由让不同网段的虚拟网络和真实网络建立联系(至于这个功能暂时还没折腾出来),
还有就是桥接,让虚拟局域网和真实物理网络处于同一个网段,
熟悉VMWARE虚拟机,就应该明白什么是桥接功能了。
vmware网络设置里首先要绑定到一块真实的网卡,接着才能使用桥接功能。
这种桥接,让vmware虚拟机里的操作系统就跟局域网里的一台真正的机器一样,有独立IP地址,能被其他机器访问到。
看那起来是很神奇的功能,其实明白了原理,相信大部分熟悉程序开发的人都能自己实现
(即使不懂驱动,也能利用现成的抓包开发包比如WinPcap来实现),

这个原理简单的说,就是把这个被绑定的网卡,看作是一个具有多个IP地址的网卡,
每个IP地址分配给不同的虚拟机器。
以vmware举个容易明白的例子,
假设一台电脑,处于网段192.168.100.XX的局域网中,其物理网卡PC-CARD, 它的IP地址是192.168.100.2,
这台电脑上装有vmware,vmware装有另外一个操作系统,设置vmware为桥接模式,并且绑定到物理网卡PC-CARD上,
vmware里装的操作系统IP地址假设是 192.168.100.3,
局域网中的其他机器,比如192.168.100.4是如何访问到192.168.100.3的呢?
局域网绝大部分都是以太网标准,依靠MAC地址来识别以太网数据包的地址, 其实所有数据包都被发送到PC-CARD网卡,
vmware在NDIS协议驱动层开发一个驱动程序,截获他所感兴趣的数据包,这里是ip地址192.168.100.3的数据包,
并发送到应用层,并且修改目标MAC地址为虚拟机里操作系统的网卡地址,发送到vmware里,
虚拟机里的操作系统发送回应包给用户程序,修改源MAC地址为PC-CARD的地址,
vmware的协议驱动再发送给网卡,这样,192.168.100.4的机器就能接收到虚拟机里操作系统的数据包。
而192.168.100.4的机器一直以为是在跟PC-CARD的另一个IP地址192.168.100.3通讯。

现在要说的是,在vmware功能基础上,
扩展成来自不同地方的虚拟局域网和物理局域网合并成一个网段,互相无障碍的通讯。
主要的通讯结构还是《虚拟局域网》里所描述的:
一个公网服务器负责转发以太网数据包,其他的虚拟局域网客户端连接到这个公网服务器,
某个想把自己所在的物理局域网的机器都给共享出来,他的桥接驱动客户端也同样连接到这个公网服务器。
同时需要把所有虚拟网卡的网段设置成这个物理局域网的网段,这样才能正常通讯。

首先开发NDIS协议驱动程序,抓取网卡发送和接收的数据包,
如果不懂驱动,完全可以利用现成的WinPcap来截获数据包。
在协议驱动中设置包过滤原则为所有本地包,这样从本网卡发送出去的和接收到的包括广播组播包就会截获到,
再通过一个功能设备,发送给应用程序。协议驱动还应该具备从应用层发送以太网数据包到网卡的接口。
驱动部分基本上就做这么多事情,驱动的功能完全可以利用WinPcap替代,因为WinPcap的底层就是个NDIS协议驱动。

主要的工作在应用层部分,
程序首先绑定到某块网卡,同时获得这块网卡的MAC地址和它的所有IP地址。
在应用层接收到驱动发来的数据包,需要进一步过滤。过滤原则如下:
1),如果是广播包或者组播包,接收,同时不需要修改数据包的目标MAC地址。
2),如果数据包的目标MAC地址不是本网卡的MAC地址,丢弃。
3),如果数据包目标MAC地址等于本网卡的MAC地址,分析数据包类型,保留ARP,RARP和IP类型的数据包,
其他类型的数据包丢弃,
4),在3)的基础上,进一步分析数据包,取出发送的目标IP地址,如果是发给本网卡的,丢弃,否则接收。
5),在4)的基础上,修改数据包的目标MAC地址为真正发送目的地MAC地址
(至于如何修改,可先事先商量好目标IP地址和目标MAC地址的对应关系。
我是采用动态办法:从公网服务器接收的以太网数据包,缓存它的源MAC地址和IP地址对应关系。)
过滤成功的数据包,发送到公网服务器上去转发。

从公网服务器接收数据包,接收到的数据包首先缓存他的源MAC地址和IP地址的对应关系,作为上边第5点的过滤条件。
接着修改数据包的源MAC地址为本网卡的MAC地址,为何要如此做,是因为在这个物理局域网网络中,是靠MAC地址
寻址的,如果不修改,物理局域网的其他机器就不知道该发给谁。

如上所说,整个桥接客户端的核心功能就已经实现。
更多精彩内容其他人还在看

怎么开通联通免费WLAN?联通WLAN免费开通的详细教程

怎么开通联通免费WLAN?相比移动电信的收费WLAN,联通提供免费的WLAN,测试带宽4M左右,下面小编就给大家演示一下怎么开通和使用,需要的朋友可以参考下
收藏 0 赞 0 分享

公共网络无法连接 显示黄色叹号的解决方法

很多时候我们在上着网的时候会突然断线,然后再也无法连接上,并且电脑右下角的本地连接图标上会出现一个叹号,提示网络连接受限制或无连接,下面小编就为大家介绍公共网络无法连接,显示黄色叹号的解决方法介绍,希望能对大家有所帮助
收藏 0 赞 0 分享

宽带网络怎么设置?宽带网络设置方法

宽带路由怎么设置一直困扰着很多初次配置路由的朋友们,那么宽带网络怎么设置?下面小编就为大家介绍宽带网络设置方法,希望能对大家有所帮助
收藏 0 赞 0 分享

DNSPod DNS(119.29.29.29)无劫持怎么样?解析速度对比评测

很多朋友终于都忍受不了国内疯狂的电信运营商DNS劫持现象,旗下的DNSPod推出DNSPod公共DNS服务,主打安全无劫持,那速度怎么样呢?解析准确率又如何呢?下面小编来为大家简单测试一下
收藏 0 赞 0 分享

电脑网络连接失败 网卡只有发送没有接收该怎么办?

电脑网络连接失败 网卡只有发送没有接收该怎么办?电脑没法上网,网线和网络都没有问题,就是测试发现有发送包但接收包为0,该怎么办呢?下面分享解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

怎么查看自己的Wifi是否被盗用 怎么查看wifi有几个人用

在使用wifi上网的时候,如果使用的人多会影响网速,所以一般都会设置密码,但是现在有很多能破解密码的软件,那么如何查看自己的wifi有没有被盗用?到底有多少个人用呢?下面脚本之家小编教大家怎么查看自己的Wifi是否被盗用,需要的朋友可以参考下
收藏 0 赞 0 分享

Wifi密码怎么看?常用Wifi密码排名大全

如今Wifi无线网络已经非常流行,有时候如果需要临时上网,打算连接这些搜索到的Wifi,但没有密码怎么办?下面小编位大家介绍Wifi密码怎么看以及常用的WiFi密码吧
收藏 0 赞 0 分享

路由器与无线网卡连接故障详细分析

在使用路由器时,会顺便使用同一品牌的无线网卡,这样对兼容性是最好的,可以有效的提升无线网的传输速度,但在使用过程中,也会出现各种不同的故障。
收藏 0 赞 0 分享

电信流量不清零是真的吗 10月1日起中国电信流量不清零

运营商流量不清零终于要开始无门槛实施了,至少中国电信是这样。从网友@看啊就是這只貓曝光的图片来看,中国电信已经引发了“关于套餐内流量单月不清零实施方案的通知”,通知中明确表示,从10月1日开始,中国电信所有手机上网按流量计费的月套餐用户
收藏 0 赞 0 分享

无线网传输变慢的解决办法

无线局域网是越来越多用户采用的组网方式,也被称为WLAN(WirelessLAN),安装十分方便,不需要重新布线、不会破坏家庭原有装修,相比有线网络,无线网络要灵活得多。
收藏 0 赞 0 分享
查看更多