由于BT软件的出现,使得网络带宽一下子变得不够用了。据国际互联网流量监控公司最新统计发现BT,KAZAA和EMULE等P2P软件所使用端口的数据流量首次超过了传统的HTTP80端口,该统计表明目前互联网带宽已经被P2P软件侵吞,真正有意义的HTTP浏览已经让出了第一把交易。
小高所在公司的网络组最近也在商量解决这个问题,因为带宽就是成本,就是金钱。这项艰巨的工作就落在了网络组组长小高的肩上。
方法1:封锁BT端口法
大家都知道以往要限制某项服务的话都是在路由器上设置ACL(访问控制列表)将该服务所用的端口封掉,从而实现阻止该服务的正常运行。对BT软件我们可以尝试封他的端口,一般情况下BT软件都使用的是6880到6890端口,所以小高在公司核心路由器上使用如下命令将6880到6890端口封锁。
access-list 101 deny tcp any any range 6880 6890
access-list 101 deny tcp any range 6880 6890 any
access-list 101 permit ip any any
最后再进入相应的端口输入“ip access-group 101 out”(不含引号)使访问控制列表生效。
配置之后网络带宽马上释放出来,大家上网也感觉快了不少。但没过几天网络速度又回到了从前。小高很是奇怪,BT软件的端口明明都被封锁了,什么软件还在占用大量带宽呢?经过SNIFFER抓包检测到几个不常用的端口的数据流量非常大,小高巡视后发现由于公司不能使用官方的BT软件了,很多员工下载了第三方的BT软件,诸如比特精灵和BITCOMET,这些软件可以自定义传输数据的端口,员工将其修改为没有被封锁的端口后又可以顺顺利利的下载电影了。
通过这次封锁与反封锁的斗争小高领教了BT软件的厉害,由于BT的端口变化性比较大,所以用ACL封端口收效甚微而且配置条数多执行起来比较费劲,另外大量的ACL也占用了路由器的CPU资源,影响了其他服务的请求。这时小高又想起了另一个方法封锁BT服务器法。
方法2:封锁BT服务器法
既然我们无法从本地端口进行封锁,那么只好从远程目标的地址入手了。由于BT使用时首先本机要连接到远端的BT服务器,从服务器上下载种子列表再连接相应的种子,所以小高开始到各大BT交流论坛,下载论坛提供的种子,启动BITCOMET后在下方选择“服务器列表”,在tracker服务器处就可以看到BT服务器的地址了,如图1显示的是bt.ydy.com:84/announce。接着通过NUSLOOKUP或PING命令得到bt.ydy.com的IP地址为202.103.9.83。
获得了BT服务器的IP地址后就可以到核心路由器上对该地址进行封锁了。具体命令如下:
access-list 102 deny tcp any 202.103.9.83 0.0.0.0
小提示:202.103.9.83后跟的是反向掩码,反向掩码0.0.0.0表示的是202.103.9.83那一台主机。
最后小高进入网络出口那个端口运行“ip access-group 102 out”(不含引号)使该访问控制列表生效。这样公司的用户就不能访问bt.ydy.com这个BT服务器了,同时该服务器提供的所有BT种子都无法使用了。在接下来的1周里小高收集了很多BT服务器的IP地址,并将他们一一添加到控制列表102里。看着公司员工启动第三方BT软件后连接种子数为0,下载速度为0的情形小高终于长舒了一口气。
两个月后公司的网络再次出现了缓慢的症状,小高通过监控系统发现又有员工在使用BITCOMET下载电影,虽然下载速度不如封锁前,但仍然占用了相当大的带宽。这是怎么回事?BT服务器的IP地址明明被封锁了啊。
小高马上登录路由器查看访问控制列表的设置,发现没有经过改动,继续生效。那么究竟是什么原因造成BT服务器又能连接上了呢?原来在访问控制列表中使用的是IP地址进行过滤,而这两个月期间一些BT服务器的IP地址发生的改变,由于ACL封锁的是服务器的IP地址而不是域名,所以当IP地址变化后封锁就变得无效了。
经过这次问题后小高总结了封锁BT服务器法的缺点,一是BT服务器很多,每个服务器都要找到他的IP地址然后进行封锁,数量多了封锁起来很麻烦,而且也容易漏掉服务器。二是访问控制列表只能封锁IP不能封锁域名,对于IP地址经常改变的BT服务器来说,封锁是非常困难的。
就在小高为封锁BT软件一筹莫展的时候,他忽然想起了在电信工作的同学小张来,小张天天接触ISP的网络设置,一定有办法解决BT问题。小高马上通过电话把封锁BT的事情告诉了小张。小张笑到:“这个问题是不好解决,BT实在是太疯狂了。不过电信采用的是pdlm软件加NBAR来解决封锁BT的问题的,效果很不错,你可以试试。”
方法3:通过NBAR加载PDLM模块法
准备工作:CISCO在其官方网站提供了三个PDLM模块,分别为kazaa2.pdlm,bittorrent.pdlm,edonkey.pdlm依次用来封锁KAZAA,BT和电驴的。我们到该站点下载bittorrent.pdlm。
实施工作:
第一步:建立一个TFTP站点(由于篇幅有限这里就不详细介绍建立方法了)。将bittorrent.pdlm复制到该站点。
第二步:在核心路由器中使用“ip nbar pdlm tftp://你的TFTP站点IP/bittorrent.pdlm”(不含引号)加载bittorrent.pdlm模块。
第三步:设置路由策略,具体命令如下。
class-map match-any bit
创建一个CLASS-MAP名为BIT
match protocol bittorrent
要求符合模块bittorrent的标准
policy-map limit-bit
创建一个POLICY-MAP名为limit-bit
class bit
要求符合刚才定义的名为BIT的class-map
drop
如果符合则丢弃数据包
interface GigabitEthernet0/2
进入网络出口那个接口
service-policy input limit-bit
当有数据包进入时启用limit-bit路由策略
service-policy output limit-bit
当有数据包出的时候启用limit-bit路由策略
小提示:如果不想每次启动路由器都要手工加载TFTP上的bittorrent.pdlm的话还可以把这个PDLM文件上传到路由器的FLASH中,具体命令是copy tftp flash或copy tftp disk0,然后选择TFTP服务器的IP地址即可。
另外在实际使用过程中发现如果想要指定BT软件使用的带宽的话,会给路由器带来很大的负载,CISCO6509上限制带宽后负载达到90%以上,所以不建议大家设置BT使用的带宽,最好直接封锁。当然对于封锁KAZAA及EDONKEY的配置方法和封锁BT类似,感兴趣的读者可以自己做下配置练习。
经过使用NBAR加载PDLM模块法封锁BT软件后小高已经完全断绝了公司内部的BT使用,所有员工在上班时间都安心工作,网络速度也恢复到以前的稳定值。