Chinaunix首页 | 论坛 | 博客
  • 博客访问: 242671
  • 博文数量: 49
  • 博客积分: 1035
  • 博客等级: 少尉
  • 技术积分: 477
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-14 17:23
文章分类

全部博文(49)

文章存档

2015年(15)

2014年(6)

2011年(1)

2008年(3)

2007年(11)

2006年(13)

我的朋友

分类: LINUX

2006-06-29 11:27:19

阻断P2P通信

可以使用专业厂家生产的P2P硬件控制设备,来阻断P2P通信或者控制每个用户P2P的流量,但昂贵的设备价格可能是无法接受的。下面介绍两种廉价的解决方案。

利用Cisco路由器的NBAR功能

NBAR(Network-Based Application Recognition)网络应用识别是一种动态的、能在四到七层识别应用的技术,配合PDLM(Packet Description Language Module)可以识别P2P通信,但要求IOS版本在12.x以上。

说明:Cisco在其官方网站 上提供了三个PDLM模块,分别为KAZAA2.pdlm、bittorrent.pdlm和emonkey.pdlm,可以用来封锁KAZAA、BT、电驴等。


我们以封锁BT下载为例。

(1)下载bittorrent.pdlm文件。

(2)使用TFTP上传bittorrent.pdlm到路由器的flash中。

(3)加载此pdlm包。

ip nbar pdlm bittorrent.pdlm

(4)创建一个class-map和policy-map。

class-map match-all bittorrent

match protocol bittorrent

!

policy-map bittorrent-policy

class bittorrent

drop

!

(5)应用到某个接口上。

interface FastEthernet0

no ip address

ip address 192.168.1.1 255.255.255.0

ip access-group to-internet in

ip nat inside

service-policy input bittorrent-policy

speed 100

full-duplex

!

利用netfilter/iptables扩展模块

在Linux系统中,通过对netfilter/iptables安装新的ipp2p扩展功能插件,可以实现P2P通信的阻断。如果您使用Linux作网关的话,这是一种价格低廉、易于升级的解决方案。

在公开发行的iptables各个版本中,没有ipp2p这个扩展模块,所以,我们要下载此插件,编译后将模块加载,然后在iptables中加上相应的规则即可。

小提示:也可以从下载最新的netfilter补丁包,选中ipp2p插件,重新编译netfilter和iptables。不过,这种做法相当复杂。

说明:此插件的系统环境要求kernel为2.4.18版本以上,iptables为1.2.7a版本以上。版本不够的要先升级,并下载或用rpm安装相应版本的iptables源代码到/usr/src目录中。

下面以本机为例,系统环境iptables为iptables-1.2.11。

(1)首先下载插件的最新的源代码。

# wget

(2)对源代码解包。

# tar xzvf ipp2p-0.7.1.tar.gz

(3)进入解包后的目录,用vi修改Makefile文件,将IUSER参数对应的目录改为iptables源代码的目录。

IUSER=-I/usr/src/iptables-1.2.11/include

(4)编译模块。

# make

(5)拷贝编译好的文件到iptables程序目录。

# cp libipt_ipp2p.so /lib/iptables

# cp ipt_ipp2p.o /lib/iptables

(6)加载即可使用。

# insmod /lib/iptables/ipt_ipp2p.o

(7)使用iptables设定规则,下列的命令会将目前所有的P2P通信都阻断,其它用法参考ipp2p的相关文档。

# iptables -A FORWARD -m ipp2p --bit --edk --kazaa --gnu --dc --apple --soul --ares --winmx -j DROP

(用vi修改/etc/rc.local文件,加上上述6、7步骤中的语句,以便机器重启后运行此插件及规则。

试验证明,通过以上两种方法,完全可以阻断P2P客户端得到新种子后对服务器的预连接,不会产生新的P2P通信数据。对于以前已经建立的连接,还不能有效地控制数据传送。随着文件的完全下载、种子的撤除,P2P通信数据会越来越少,直到完全消除,达到完全控制的目的。

小知识,有几种不同的P2P技术和体系,像使用中心服务器作协调引导搜索的Napster、完全分散的没有中心服务器的不同Peer间相互配合Gnutella、利用开放的Gnutella和OpenNAP标准广泛搜索P2P网络的iMesh。P2P应用软件客户端的种类也较多,目前网络上比较流行的有KaZaA、eDonkey、eMule、BitTorrentt等
阅读(1646) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~