1、1别让 ISA Server 再妨碍 BT 下载(作者:Shining Chen)BT 下载如雨后春笋般不断涌现,大有替代 FTP 的主流地位的趋势。BT(Bit Torrent)下载被人戏称为变态,原因是其独特的 P2P(点对点)思路,一举突破了传统 FTP 服务器单点下载的带宽局限,以及标准的 P2P 方案缺乏集中管理的不足,从而极大地简化了发布过程,降低了中心成本,提高了下载速度。从某网络接入服务商封闭 BT 端口事件可以看出,接入商对疯狂 BT 的巨大流量感到头痛不已。不过很多人仍然不相信 BT 的神奇速度,大呼 BT 不快,甚至 BT 不能用。其实,网关或防火墙设置是 BT 释放速度
2、的关键。由于中国大陆网民内网用户比例极大,而由于各种原因,或故意、或被迫、或不懂,而设置不正确网关的情况比比皆是,因此 BT 下载常常受到制约。笔者学校机房采用 Win2000 Server+ISA Server 管理网络连接,ISA Server 安装为防火墙模式,默认阻断一切未许可连接,因此 BT 下载不能在网内使用。笔者本人是个下载狂(汗) ,大量的 BT 资源让我垂涎欲滴,寝食不安。某日,终于决心为自己以及同事的管理机开通 BT 功能。上网搜索参考资料 1 个多小时以后,失望地发现没有 ISA Server 针对 BT 设置方法的相关资料。看来偷懒是不行了,自力更生吧。首先要搞清楚 B
3、T 程序究竟需要哪些网络资源,就从分析 BT 行为入手吧。经过摸索,大体掌握到 BT 软件联机过程如下:第一步,下载并打开.torrent 文件,获取相关信息。.torrent 文件包含了 announce 服务器的url 地址,让 BT 软件知道需要连接哪个服务器。此外还包含是一些文件信息,如:文件名、目录名、长度、片段长度,以及片段的校验码。第二步,BT 软件连接 announce 服务器,并通过 url 传送参数。不同的 announce 服务器选用不同的端口,较常见是 81、6969、8000-8001、8080 等。如果连接失败, BT 自然无法继续。第三步,announce 服务器
4、连接成功,服务器内的 track 程序对比你传送的参数,查找服务列表中是否存在被请求的下载信息,如果没有就停止连接。一旦找到相关信息则反联客户端,以判断客户机是否可以被连接,如果可以连接则将你的连接信息加入列表。这种连接需要能够访问客户机 IP 的特殊端口,也就是通常意义上的 BT 端口。不同的 BT 客户端使用不同的端口,常见的有 1881-1890、6000-6009、6881-6890 、8000-8009 、8881-8890、16881 等等,端口种类繁多。如果你是外网用户,那么无需端口映射,只要你自己没有错误设置软件网络防火墙,连接就能成功,如果你是内网用户,并且在网关上开通了相应
5、端口的映射,那么效果和外网用户相同;如果你的电脑使用内网 IP,并且没有开通端口映射,那么从外网必定无法连接到你的电脑。 (注:下文中若无注明, “外网用户”将包含真正外网用户和开通端口映射的内网用户, “内网用户”将特指未开通端口映射的内网用户。 )不过即使不能被连通,你还是可以继续下面的步骤,只不过你的连接信息不会被记录在列表中,更不会发送给别人,内网用户损失了发布自己端口的机会,从而降低了连接可能性。接下来,announce 服务器反馈给客户端已经记录在列表中的可被连接机器地址,并告知间隔多久再来更新连接信息。第四步,最后 BT 软件开始连接别人的 BT 软件,连接后互传数据。这个过程中
6、,外网用户既可以连接其他外网用户,也可以被所有其他用户(包括内网和外网)连接。而没有端口映射的内网用户,只能去连接外网用户,而不能被连接。因此,内网用户只能依靠外网用户才能建立连接,即使是处于同一局域网段的两台内网机,也无法直接连接。如果某一个 BT 项目的外网用户很少,那么外网用户就成了香饽饽,大量的内网用户竞争与外网用户连接,结果可向而知,外网用户获得大量连接速度飞彪,而很多内网用户无法获得连接只能等待。一旦两个 BT软件连接成功后,数据传输是双向的,无论谁连接谁,都可以发送和接收数据,因此内网用户也可以发布种子。2第五步,间隔一定时间,BT 客户端再次访问 announce 服务器,请求
7、更新连接列表,以获得新加入外网客户端的连接信息。这个时间间隔在服务器上设定,并在第三步时传送给 BT 客户端。通过以上分析,可以得出以下结论:1、 要让 BT 能够下载,必须要能够访问 announce 服务器,并且至少连接上一个外网客户端,当然也可以选择被他人连接的方法建立连接。2、 要让 BT 下载速度足够快,必须要能让其它 BT 用户能够访问到你的 BT 客户端的相应端口,并且最好你也能尽可能多地访问他人的 BT 客户端端口。根据这两个结论,我来设置 ISA Server。我单位的这个机房网络属于一个局域子网,包含40 多台学生机、数台内部服务器和 2 台管理机,结构如下图一,这就需要在
8、 ISA Server 上开通连接 announce 服务器和外网 BT 端口所用的端口,并分别为 2 台管理机开通端口映射。ISA Server管理机 1其他服务器 其他服务器管理机 2 。学生机22192.168.n.xInternet 连接图一:局域网结构首先,来实现 BT 软件访问 announce 服务器的连接。大多数 announce 服务器选择 6969 端口,还有一些选择 81、8000-8001、8080 等端口,除了这些端口以外的端口很少被用作announce 服务。ISA Server 采用“无许可则禁止”的规则,这不允许我们穷举所有可能端口,因此只能选择开通最常用的几个
9、端口。打开网关服务器的 ISA Management,从左侧列表中选择Policy ElementsProtocol Definitions,如下图。3接下来点右下方 Create a Protocol Definition,跳出如下对话框:填入自定义协议名称,可以随便起名,不过建议起一个容易识别的名称,并在最前面加一个单引号,使得其排列在列表最前面。按下一步:4填入端口号 6969,协议类型 TCP,方向为 Outbound。下一步:选择 No,再点击下一步,最后点击完成。这就完成了一个 announce 服务器端口的设置,同样方法分别设置 81、8000、8001 和 8080 端口,只要
10、将上述步骤中的 6969 替换一下就可以了。接下来,来开通管理机的端口映射。问题是不同的 BT 软件使用的不同的端口,究竟开通哪个端口映射比较好呢?。经过反复比对,我选择了 BitSpirit(比特精灵)作为客户端,选择的理由是?BitSpirit 只需开通 1 个端口就可以管理所有 BT 下载任务,而标准 BT 软件是每个 BT任务开通一个端口,这样不方便管理。而且,BitSpirit 可以方便的设置端口,不必修改注册表。5具体,BitSpirit 的使用信息可以去其官方网站 http:/ 2 台管理机,因此需要分别进行一次端口映射。最后我选择,1 号管理机采用 6881 BT 端口,2 号
11、管理机采用 6882 BT 端口,当然你也可以选择其他。再一次打开网关的 ISA Managements。ISA Server 的端口映射功能称为 Server Publishing Rules(服务器发布规则) ,在发布服务器前,先要在自定义协议中建立新的服务协议。这一过程和上述开通 announce 服务器连接很类似,具体步骤如下从左侧列表中选择 Policy ElementsProtocol Definitions;点右下方 Create a Protocol Definition;在 “自定义新协议向导”对话框中填入自定义协议名称,例如 “BS-6881”;点击下一步,填入端口号 68
12、81,协议类型 TCP,注意,这里方向要选为 Inbound;下一步,选择 No,再点击下一步,最后点击完成。同样方法设置 6882 端口。接下来选择左侧列表 PublishingServer Publishing Rules ,如图:点击右下方 Publish a Server:6在“新服务器发布规则向导”对话框中填入规则名称,点击下一步:上方的 IP 是内部服务器 IP,也就是管理机 1 的 IP 地址,完整的输入进去;下方的 IP 是网关服务器的外网 IP,也需要完整输入。然后点击下一步:7选择应用的服务器协议,下拉列表中有刚才定义好的服务。管理机 1 选择 BS-6881 的那个,选好
13、后点下一步:选择所有连接请求 Any request。下一步,完成。同样方法设置管理机 2,不过需要把内部服务器 IP 和选择的服务协议做相应变动。如此这般,已经将 2 台管理机的端口映射好了,接下来只需在管理机上设置 BitSpirit 就行了。可以直接使用 BS 的设置向导,相关设置如图:8选择连接类型为 LAN,选中开通端口映射选框,并根据自己网络的具体情设置联机数量和限速,TCP 绑定到 6881。对于管理机 2 来说,TCP 绑定到 6882,其他相同。到此为止,管理机上的 BS 只能等待别人来主动连接自己,而它们主动去连接其他外网用户的通路还没打开。因此最后一个步骤就是开通连接外网
14、 BT 用户的通道,创造高速连接能力。由于不同的 BT 客户端使用不同的端口,而且允许用户自己设置所用的端口,因此除了常见的 1881-1890、6881-6890、8000-8010 、8881-8890 、16881 等端口,还有很多其他的说不清的端口。看来全部开设这些端口不太可能,只有选择其中一部分了。通过观察发现,上述常见 BT端口中,每个端口段中的小端口号出现概率明显大于大的端口号,仔细思考就明白了,因为大多数 BT 软件都是新开一个 BT 任务就新开一个端口,而大多数情况下,很少有开设超过 3 个以上的 BT 项目,可以说开设更多 BT 项目的可能性随着已开设 BT 项目的数量上升
15、而成倍下降。由此可见,最可能遇上的是每个端口段里最小的几个端口,因此我选择以下端口加以开放:1881-1884,6000-6003、6881-6884 ,8000-8002 ,8881-8883 , 16881。至于那些非常规的端口,干脆不去管它了,就等着它们来连接你吧。在网关服务器 ISA Managements 的左侧列表中选择 Policy ElementsProtocol Definitions;点右下方 Create a Protocol Definition;在“自定义新协议向导”对话框中填入自定义协议名称,例如“BT-16881” ;点击下一步,填入端口号 16881,协议类型
16、TCP,方向为 Outbound;下一步,选择 No,再点击下一步,最后点击完成。同样方法设置其它几个端口,需要注意的是8000 和 8001 端口刚才已经设定过,通用的,不必再次设定,而 6881 和 6882 端口刚才设置只是服务端口,因此需要重新设置外连端口(Inbound 和 Outbound 设置相反!所以协议分为 BS-6881、BS-6882 和 BT-6881、BT-6882 两类。 )最后一个步骤就是在 ISA Server 中建立访问规则,以允许管理机使用刚才设置的各个端口。由 ISA Managements 的左侧列表中选择 Access PolicyProtocol R
17、ules,如图:9点击右下方 Create a Protocol Rule:输入规则名,可以随便起,点击下一步:10选允许 Allow,下一步:选 All IP traffic,以允许管理机可以使用所有定义了的网络协议。下一步:11选择日程表方案,Always 表示无时间限制,始终可以连接。下一步:然后根据你的网络管理方案选择被允许使用该规则的机器,当然只能让 2 台管理机使用刚才开通的端口咯。可以根据 IP 判断用户,也可以根据 Win2000 域用户认证来判断。选择相应选项后点击下一步进行该项目的详细设置,设置完成后点 OK,然后再点完成即完成了相应设置。终于,所有的设置都完成了,快看看效
18、果如何。经过测试,在我的 100Mbps 的局域网环境下,下载速度峰值可达到 800KBps,平均速度为 400-500KBps。如图:12最后为了方便大家设置,我用表格说明相关端口的设置:端口号 用途 相关设置 In/Out 需要端口映射81-82 announce 网关 Out 否1881-1890 主动外联 网关 Out 否6000-6009 主动外联 网关 Out 否6881-6890 主动外联 网关 Out 否6881-688x 内网机 BT 端口 网关、客户机 BT In 是6969 announce 网关 Out 否8000-8009 主动外联 网关 Out 否8000-8001 announce 网关 Out 否8080 announce 网关 Out 否8881-8890 主动外联 网关 Out 否16881 主动外联 网关 Out 否陈双寅 男, 86-21-64769733,13818096767上海市罗秀路 930 弄 116 号 601 室(200237)2004 年 3 月 30 日