| 随着网络的发展,P2P技术的兴起,以BT(BitTorrent),eMule等为代表的P2P传输软件逐渐盛行。一方面我们可以通过此类软件下载到我们需要的软件,下载速度快。但是另一方面对于公司的管理人员来说也深受其害,因为它的使用会使我们的网络变得繁忙,变得缓慢,几乎无法开展我们正常业务所需要的网络访问。下面我来讲讲此类软件的工作原理以及如何进行有效封堵,希望对大家有所帮助。
BT是如何工作的?
目前采用BT协议实现的下载工具,比较有代表性的有:BitTorrent(及继承版本),BitComet,FlashBT等,这些软件都很好的实现了BT协议,以及有些还实现了DHT协议。
BT的下载是通过下载用户之间的互相下载来实现,一个BT用户可以从多个BT用户那边下载同一个文件的不同片断,同时也将已下载完成的文件片断提供给其他的BT用户下载。所以,BT用户既是一个下载者,也是一个下载服务提供者。
用户首先要到网上下载*.torrent的BT文件,在这个文件里,描述了下载的文件信息,以及BT服务器的信息,包含服务器的地址,端口等。BT服务器可以是TCP模式,也可以使UDP模式,这些端口都是可以随意可变的。
BT下载软件在解析*.torrent文件后,将会连接BT服务器,以获取可以下载这个文件的其他BT用户信息,并将自己的信息告诉给BT服务器。之后与这些BT用户连接,开始下载。但这里有关键的一步,BT用户必须通过BT服务器获取其他BT用户的信息。
为了解决不需要BT服务器的问题,BT新的协议中,引入了Kademlia 协议,在BT中叫DHT。DHT采用UDP方式通信,他不需要任何的服务器协助,只要有其他一个BT用户的信息,就可以通过这个用户获取到其他与这个BT用户相邻的BT用户的信息,同时将自己的信息告诉给这个相邻的BT用户。从而获得整个网络中在下载这个文件,有这个文件的在线BT用户,并与这些用户连接,完成下载。
同时BT软件会启动一个监听端口,等待其他的BT用户来连接,这个BT监听端口是可以用户自己设定的。所以无法通过防火墙封堵端口来实现对BT的封堵。
BT封堵
目前能对BT协议完全封堵的软件还不是很多,作者手上使用的是一个叫做网防监控管理系统的软件(以下简称网防)。这个软件能对BT下载做到完全的封堵。作者使用后觉得效果不错。
首先它会对BT下载的源头进行封堵,禁止用户下载*.torrent文件。用户下载不到这个文件,自然就没法用BT下载了。
如果用户已经有了这个BT文件,网防会分析所有的网络数据包,将BT协议的数据包过滤掉。一般部分BT服务器是采用TCP通信的,BT用户之间也是采用TCP方式通信的,网防会对TCP方式直接封堵。并同时会对BT用户正在监听的BT端口进行封堵。通过这一步,就可以减少很多的BT下载流量。
那对于采用UDP方式通信的BT服务器和BT用户之间采用DHT协议下载的情况怎么办呢?不急,网防帮助里说明了,只要启用软路由功能,就可以完全的过滤掉这两个UDP方式通信的BT协议。作者启用了这个功能,还真行。我测试了几个BT软件都显示下载为0,完全封堵了BT的下载。
eMule(eDonkey)是如何工作的?
eMule/eDonkey中采用的是eD2K协议与BT协议类似,eD2K的服务器维护着所有eD2K用户共享着的文件信息。用户通过服务器获取文件信息和拥有这些文件的用户信息,并与这些用户连接完成下载。采用TCP方式通信。
同时eMule为了减少服务器的负担,不需要服务器,也引入了Kademlia 协议,在这里叫做KAD网络,采用UDP方式通信。
实现这个协议的软件与BT软件一样,下载都会引起很大的数据流量,导致局域网拥堵,无法正常工作。
eD2K协议都有固定的协议头,因此很好识别这个协议的数据包。目前也有些软件已经实现了对这个协议的过滤。我这里使用的还是网防这个软件。
eMule/eDonkey封堵
在网防这个软件中,在他的策略设置界面的P2P封堵设置中,就有对eMule/eDonkey封堵的设置。只要设置了对eMule的封堵,eMule就无法连接到eD2K网络,从而也就无法下载。
但同时eMule会连接到KAD网络,通过这个网络,用户还是可以下载文件。网防软件的帮助了也对这个做了说明,只需要启用它里面的软路由功能,eMule就无法连接到KAD网络了。也就完全的封堵了eMule/eDonkey的下载。
|