|
|
|
|
|
|
|
|
非常想看看到底怎么来实现基于IMD的包过滤防火墙了,不过,你肯定会迟疑,如果让我们自己写整个中间层驱动的话,是不是有些太艰难了啊?况且,我只是个搞网络安全的,我不是专门写驱动的,让我完成一个驱动程序,还要对上层协议伪装成一个网卡,对下层伪装成一个协议层,这不是要命么? 其实微软很不错的,在提出这项技术之后,其DDK中附带了一个中间层驱动的例程,就是passthru。passthru实现了一个中间层的基本功能,对下表现为一个协议层的驱动,对上表现为一个虚拟网卡,安装passthru驱动之后,你可以在硬件管理中的网卡中看到一个虚拟网卡。不过,passthru只是插入到网卡和上层协议中间,却未做任何工作,也就是说,passthru只是让所有的数据报原原本本地流经自己而已。我们要想实现中间层包过滤的功能,需要对passthru进行修改。 想想我们要实现的包过滤的功能,我们只需要在中间层接收到数据报的时候进行规则判断就可以了,而在passthru中,接收数据报是用protocol.c文件中的PtReceive和PtReceivePacket这两个函数来实现的。根据微软的解释,微软建议接收包用PtReceivePacket函数,因为可以得到更高的效率,然而,为了向下兼容,也保留了PtReceive函数给老的网卡使用。所以,在一块网卡上,只可能有一个函数在工作,这要取决于你的网卡型号了。巧的是,我的两台机器的网卡应用的函数正巧不一样。同样是IBM的机器,一台P4 1.5G的机器的网卡是Realtek RTL8139(A) PCI Fast Ethernet Adapter,另外一台P4 2.0G的机器的网卡是Intel(R) PRO/100 VE Network Connection,其中Realtek网卡用的是PtReceive来接包,而页码:[1] [2] [3] [4] [5] [6] [7] [8] 第3页、共8页 |
|
|
|
|
设为首页 | 加入收藏 | 广告服务 | 友情链接 | 版权申明
Copyriht 2007 - 2008 © 科普之友 All right reserved |