Red Hat Enterprise Linux 5.0服务器构建与故障排除
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

10.4 升级iptables控制BT

自从出现诸如电驴、Kazaa及BT等P2P软件之后,海量的数据文件(如大容量文件交换及视频文件下载等)逐渐占据了大部分的网络带宽。P2P这一新应用为用户带来了前所未有的方便和丰富的资源,但同时也引发了网络带宽和安全问题。本节将介绍在Linux中如何利用Netfilter/iptables限制P2P应用流量。

10.4.1 P2P应用现状

P2P即端到端对等网络技术,指网络主机在充当客户端获取资源的同时充当服务器为其他对等体(Peer)提供服务。随着计算机网络的广泛应用和多媒体资源的不断丰富,P2P技术被主要应用于文件(主要是大型的多媒体文件)共享方面。当前用于文件共享的P2P协议种类很多,在美国大量使用的是KaZaA,在欧洲存在的大量用户是eDonkey和WinMx,在我国使用最频繁的是BitTorrent,其他常用的P2P协议还有FastTrack、eMule、Grokster、Groove及Gnutella等。P2P用户的总数庞大到数以百万计,占用的带宽资源也高达60%以上。广泛应用的P2P文件共享机制主要具有以下几个特点。

(1)使用向多个IP终端并发多个连接的方法使用带宽。

(2)在下载数据的同时使用相当的带宽上传数据。

(3)单独用户上传及下载持续时间长,一般为几个小时。

(4)总使用时间遍布24小时,峰值集中在晚上和周末。

10.4.2 下载软件

所需下载软件为ipp2p-0.74.tar.gz、kernel-2.6.9-11.EL.src.rpm和iptables-1.2.11-3.1.RHEL5. src.rpm。

10.4.3 安装

依次使用如下命令安装软件包:

#rpm -ivh kernel-2.6.9-11.EL.src.rpm
#rpm -ivh iptables-1.2.11-3.1.RHEL4.src.rpm
#cd /usr/src/redhat/SOURCES
#tar jxvf iptables-1.2.11.tar.gz

将ipp2p目录中的Markfile:

IPTABLES_SRC = -I/usr/src/iptables

修改为:

IPTABLES_SRC = /usr/src/redhat/SOURCES/iptables-1.2.11
#make  “编译模块”
#cp libipt_ipp2p.so /lib/iptables
#cp ipt_ipp2p.ko /lib/modules/2.6.9-11.EL/kernel/net/ipv4/netfilter/
#insmod ipt_ipp2p.ko

10.4.4 测试

使用“iptables -m ipp2p-help”命令测试模块是否能正常装载,如果能够显示正常的帮助文件,表示加载成功,如图10-11所示。

图10-11 测试模块是否能正常装载

ipp2p帮助信息中的P2P协议中文注释如下:

# iptables -m ipp2p --help
  ……
  IPP2P v0.5c options:
  --ipp2p    Grab all known p2p packets
(抓所有已知的P2P包)
  --ipp2p-data   Grab all known p2p data packets
(抓所有已知P2P数据包)
  --edk  Grab all known eDonkey/eMule/Overnet packets
(抓所有已知的eDonkey/eMule/Overnet类型的包)
  --edk-data Grab all eDonkey/eMule/Overnet data packets
(抓所有已知的eDonkey/eMule/Overnet数据包)
  --dc   Grab all known Direct Connect packets
(抓所有已知的直接连接包)
  --dc-data  Grab all Direct Connect data packets
(抓所有已知的直接连接数据包)
  --kazaa    Grab all KaZaA packets
(抓所有KaZaA包)
  --kazaa-data   Grab all KaZaA data packets
(抓所有KaZaA数据包)
  --gnu  Grab all Gnutella packets
(抓所有Gnutella包)
  --gnu-data Grab all Gnutella data packets
(抓所有Gnutella数据包)
  --bit  Grab all BitTorrent packets (beta - handle with care)
(抓所有BitTorrent包)
  --apple    Grab all AppleJuice packets (beta - handle with care)
(抓所有AppleJuice包)
  --soul SoulSeek (beta - handle with care)
(SoulSeek类型的包)

ipp2p目前支持的P2P协议为FastTrack(KaZaa、Grokster)、eDonkey(eDonkey、eMule)、Direct Connect、Gnutella(regular clients and Shareaza's gnutella 2)、BitTorrent和OpenFT(giFT)。

10.4.5 使用方法

添加如下命令封锁使用P2P软件:

iptables -A INPUT -m ipp2p -edk -kazaa -bit -j DROP