文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Redhat 9.0下限制P2P流量

Redhat 9.0下限制P2P流量

时间:2006-03-30  来源:noahtang

这篇文章参考了很多其他高手的文章,在这儿向他们表示感谢!!!

一、准备工作

1、  下载iptables-1.3.5.tar.bz2、patch-o-matic-ng-20040621.tar.bz2、ipp2p-0.8.1_rc1.tar.gz、iproute2-ss050607.tar.gz。

注: (1)这儿下载的代码经测试载Redhat 9.0下都是可以使用的;

(2)较新的patch-o-matic-ng中已经没有了我们下面所需的CONNMARK模块。

2、  解压iptables-1.3.5.tar.bz2、patch-o-matic-ng-20040621.tar.bz2、ipp2p-0.8.1_rc1.tar.gz、iproute2-ss050607.tar.gz到/usr/src目录下。(实际上可以把代码解压到任意目录)

3、  Redhat 9.0配置如下:

Eth0 192.168.1.215  网关指向192.168.1.2

Eth1 10.0.0.1

主机配置如下:

Eth0 10.0.0.212  网关指向10.0.0.1

二、不编译内核完全阻断P2P通信

1、    进入ipp2p目录/usr/src/ipp2p-0.8.1_rc1。修改Makefile中的IPTABLES_SRC为IPTABLES_SRC=/usr/src/iptables-1.3.5,使IPTABLES_SRC指向iptables的目录。

2、    进入iptables目录/usr/src/iptables-1.3.5。修改Makefile中的KERNEL_DIR为KERNEL_DIR=/usr/src/linux-2.4,使KERNEL_DIR指向内核源代码目录。

3、    编译并安装iptables。iptables的默认安装目录为/usr/local/sbin/。

4、    编译ipp2p。

把编译好的libipt_ipp2p.so拷贝到/usr/local/lib/iptables/目录下。

把编译好的ipt_ipp2p.o插入内核,insmod -f ipt_ipp2p.o。

5、    测试。执行iptables -m ipp2p --help,若出现ipp2p的相关信息,并且用lsmod可以查看到ipp2p模块,表明ipp2p运行成功。

6、    在NAT表中配置规则:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.169.1.215。

7、    在FILTER表中配置规则:

iptables -A FORWARD -m ipp2p --ipp2p -j DROP。

(当前的--ipp2p等价于--edk --dc --kazaa --gnu --bit --apple --winmx --soul --ares)

经过如上的配置,可以完全阻断P2P的预连接,使得P2P完全无法通信。我用bitcomet 0.63进行测试,效果非常好,P2P通信流量一直为0。

三、编译内核限制P2P流量

1、    进入patch-o-matic-ng目录/usr/src/patch-o-matic-ng-20040621。iptables中P2P流量控制需CONNMARK模块支持,该模块在extra仓库中,运行如下命令来升级内核补丁。

KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.5 ./runme extra

2、    运行该命令后会出现一个模块选择界面,界面有两个区域,一个给出相关的模块名、模块功能、用法和语法实例;另一个给出各种选项,如N/y/b/r.../q/?,其中第一个为大写字母,表示缺省选项,n表示下一个模块,y表示确定,b表示上一个模块,q表示退出。首先应该确定当前的模块是否需要,不需要就按“N”键后回车,继续显示下一个模块的相关信息。当出现需要的模块时,按“Y”键确认。选择完所有需要的模块后,按“Q”键退出。

3、    给内核打好补丁后,进入源代码文件所在目录/usr/src/linux-2.4,开始编译内核。

4、    在make menuconfig时,在配置选项中必须选择Networking options→IP:Netfilter Configuration→Connection mark tracking support和CONNMARK target support两个选项。

在Networking options→Qos and/or fair queueing中选中所需的队列规程和分类器,如CBQ packet scheduler、HTB packet scheduler对列规程,Firewall based classifier、U32 classifier等。

5、    编译完成后用新内核启动。

6、    删除系统默认安装的iptables:

rpm -e lokkit-0.5-22 iptables-1.2.7a-2

7、    先按(二)中的方式修改Makefile,再编译安装iptables-1.3.5、ipp2p-0.8.1_rc1、iproute2-ss050607。

8、    执行下面的脚本:

#!/bin/bash

#Limit Bandwidth of P2P

#下面的命令清空所有的规则

iptables –F

#下面的命令从CONNMARK目标中恢复标记

iptables -t mangle -A PREROUTING -p tcp -j CONNMARK --restore-mark

#下面的命令接收所有非0的标记包

iptables -t mangle -A PREROUTING -p tcp -m mark ! --mark 0 -j ACCEPT

#下面的命令将ipp2p连接标记为“1”

iptables -t mangle -A PREROUTING -m ipp2p --ipp2p -j MARK --set-mark 1

#下面的命令保存所有标记为“1”的包到CONNMARK目标中

iptables -t mangle -A PREROUTING -p tcp -m mark --mark 1 -j CONNMARK --save-mark

  

#注:TC只能控制网卡发送包的速率

#下面的命令删除旧有队列

tc qdisc del dev eth0 root

#下面的命令将一个htb根对列绑定到网络设备eth0上,其编号为1:0

tc qdisc add dev eth0 root handle 1: htb default 2

#下面的命令建立根分类1:1,速率限制为256Kbit

tc class add dev eth0 parent 1: classid 1:1 htb rate 256Kbit ceil 256Kbit

#下面的命令创建子分类1:2,其父分类为1:1,速率为200Kbit

tc class add dev eth0 parent 1:1 classid 1:2 htb rate 200Kbit ceil 256Kbit

#下面的命令创建子分类1:3,其父分类为1:1,速率为56Kbit

tc class add dev eth0 parent 1:1 classid 1:3 htb rate 56Kbit ceil 256Kbit

#下面的命令为子分类1:2建立过滤器,其中handle 1对应于iptables中设定的标记

tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 1 fw classid 1:2

经过如上的配置,可以有效限制P2P的流量。我用bitcomet 0.63进行测试,P2P总通信流量一直为100Kbit内。

文件: Redhat 9.0下限制P2P流量.rar
大小: 9KB
下载: 下载
相关阅读 更多 +
排行榜 更多 +
药丸轮盘手机版下载

药丸轮盘手机版下载

休闲益智 下载
摔跤擂台物语汉化版下载

摔跤擂台物语汉化版下载

休闲益智 下载
模拟山羊3胡闹多元宇宙手机版下载

模拟山羊3胡闹多元宇宙手机版下载

休闲益智 下载