查看: 1411|回复: 0

在ISA防火墙后高速使用BT

[复制链接]
发表于 2009-6-2 21:16:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
文章的具体操作是在ISA2000下进行的,其他防火墙根据原理变动一下即可。
  相信大家对BT下载都不陌生吧,但经常听到有人抱怨自己BT下载太慢,甚至无法使用BT下载,这种抱怨通常都是内网用户发出的,其实他们不知道,这不是他们的BT客户端技不如人,而是内网边界的防火墙及内网地址的私有性造成的,对大多数防火墙来说,即使它没有明确阻止BT下载,内网客户端也是不能使用BT或即使能下载速度也会很慢,这是为什么呢?又该怎样使防火墙后的内网享受高速BT下载呢?请看下文分解。
BT下载的基本过程
下面来看看一个BT客户端进行BT下载的基本过程(如图1):
1, BT客户端首先从一个WEB服务器上取得torrent文件,这个torrent文件类似RM电影的ram元文件,它里面有Tracker服务器的URL。这一过程对防火墙后的内网用户通常没有影响,因为请求torrent文件就相当于访问普通网页,只要允许上网,内网用户就能完成这一步(图1中的1与2)。
2, 由于第一步得到了Tracker服务器的URL,这一步就用这个URL去连接它,主要目的是从Tracker服务器上取得包含其他BT客户端(我们称这些BT客户端为PEER)的列表。Tracker服务器使用的端口通常是TCP的81、82、6969、8000、8001、8080,如果防火墙没有允许对这些外部端口的访问,那么内网客户端连接Tracker服务器将会失败。
3, 连接到Tracker服务器以后,服务器会反向连接BT客户端,以检验BT客户端能不能被其他BT客户端连接,检验成功的BT客户端将被加入到PEER列表中。如果BT客户端是公网用户,反向连接不会有问题,这样Tracker服务器将把它加入到PEER列表。但如果客户端是内网用户,反向连接就会出现问题,因为通常来说,Tracker服务器连接的目标是防火墙或代理服务器的公网IP及内网BT客户端提供的监听端口,很显然这对IP和端口组合实际在防火墙/代理服务器上并不存在,连接不可能成功,于是这个内网BT客户端也不会被加入到PEER列表中(当然即使被加入别人也无法连接成功)。可能有的人要说了,不加入就不加入吧,这有什么影响啊?影响当然大了,因为你没有出现在PEER列表中,那么表明你无法被其他BT客户端主动连接,由于在一个BT连接上数据传输是双向的,你不被别人连接,也就同时失去了从别人那里下载数据的机会,这样就会严重影响下载速度。这里是真正体现了“我为人人,人人为我”的思想,想不到这么一句美好的口号,居然在BT上体现得这么完美,呵呵,这是题外话了。要解决这个问题,通常的做法是:在防火墙或代理服务器上进行端口映射,比如防火墙公网IP是A,而内网BT客户端IP是B,它的 BT监听端口是6881,那么就可以在防火墙上做一个端口映射A:6881映射B:6881,这样当Tracker服务器反向连接A:6881时就会成功,于是A:6881将被加入到PEER列表中。当其他BT客户端从外部连接A:6881时数据将被防火墙传递到B:6881,于是连接也会成功,从而实现了从外部连接内网BT客户端。当然这并不是唯一的方法,各种防火墙可能还有其特定处理方法,文章后面将说到的ISA2000就有其自身的特殊处理方法,只不过基本原理都差不多。
4, BT客户端取得PEER列表后,就连接列表中的其他BT客户端,互相下载数据(图1中的5),假如是内网的BT客户端要连接PEER列表中的某个BT客户端,比如对方的监听端口是6881,很明显,要能够成功连接到对方的6881端口,需要在防火墙上开放外访6881,不然防火墙后的客户端就无法成功连接对方PEER。
从上面可以看出,要让防火墙后的内网BT客户端实现高速的BT下载,从防火墙的角度来说,需要处理好以下三方面:
1, 防火墙后的BT客户端要能主动连接到Tracker服务器。
2, 防火墙后的BT客户端要能主动连接到外部的BT用户,你可以把外部的BT用户想像成一个个BT服务器,但这些服务器监听的端口不确定,这可能是由于部分ISP封堵BT造成的无奈之举。
3, 外部的BT用户要能主动连接到内网的BT客户端,此时内网的BT客户端就相当于BT服务器了,要让内网用户高速BT的关键就在这里,这也是本文要重点处理的。
在ISA Server 2000及内网BT客户端上的配置过程
知道了BT的原理及防火墙后客户端所面临的问题,我们就可以对症下药了,下面是在ISA 2000防火墙及内网BT客户端上进行的配置,其他防火墙的配置同理,步骤如下:
第一步:在需要使用BT的内网客户端上安装防火墙客户端软件,如果你是域环境,可以使用组策略来发布ISA2000的防火墙客户端。
第二步:在ISA管理窗口中创建一个客户端地址集(Policy Elements/Client Address Sets),这个地址集应包括所有内网BT客户端的IP。
第三步:为这个地址集开放所有外出通信,这需要创建一条协议规则(Aceess Policy/Protocol Rules),这条协议规则的主要参数如下:
Name:随便取一个有意义的名字,比如AllowBT
Rule action:Allow
Protocols:All ip traffic
Schedule:自定
Client type:specific computer(然后选择上面创建的客户端地址集)
这里之所以为BT客户端开放所有外出端口,是因为Tracker服务器可能的端口很多,更由于其他BT客户端的监听端口 “变化无穷”,而要为每一个相应端口创建一条规则实在是太累,所以不如直接开放所有外出通信。
这样配置后内网的BT客户端就可以无阻碍地主动连接Tracker服务器和外部BT用户了,但我们还要让外部用户也能主动连入内网的BT客户端,请看下面。
第四步:配置BT客户端的服务端口(监听端口),我这里使用的是bitcomet,选择菜单“选项”,然后在弹出窗口下的“网络连接”中配置监听端口,比如这里是16887(如图2),其他客户端依次增一为16888、16889等。
第五步:进入ISA管理界面,双击client configuration下的Firewall client项,在弹出窗口中选择“Application Settings”标签,点击New按钮,在application中填入bitcomet(如果是其他BT客户端,同理填上运行程序名,不要后面的扩展名.exe),在key中选择serverbindtcpports项,在value中填上BT客户端总的端口范围,如16887-16889,如图3。
经过上面的配置,当外网用户主动连接内网客户端时,它将先连接到ISA外部接口上的相应端口(比如16887),然后ISA会把此连接的数据传送到相应内网客户端的相应端口上(这里是16887),这样就相当于外部用户直接连接到了内网BT客户端的16887端口上。在第一次使用BT客户端时,你可以点击防火墙客户端的Update now按钮更新一下配置。另外第五步也可以使用服务器发布的方法在ISA与客户端相应端口上创建端口映射,但为什么这里不用服务器发布方法呢?主要是因为:
1, ISA2000的服务器发布每次在ISA2000外部公网IP改变后都需要重新发布,这对于那些使用ADSL动态上网的朋友可以说是极其不便的。
2, 使用服务器发布方法将为每一个客户端创建一条发布规则,不如上面的设置简单。(完)  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|维修人员 ( 鲁ICP备17033090号 )

GMT+8, 2024-5-22 00:06 , Processed in 0.190382 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表