找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7340|回复: 4

带有P2P流量控制的Bridging Firewall 构建手册

[复制链接]
发表于 2006-1-6 15:16:44 | 显示全部楼层 |阅读模式

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

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

×
linux 桥接防火墙+ipp2p控制   polygun2000@hotmail.com WwW Studio 原创

主要思路:

1、配网桥
2、配ipp2p

准备工作:

一台装有双网卡的计算机
redhat 9 安装盘
linux内核源码     linux-2.4.31.tar.bz2  ( 官方主页:http://www.kernel.org )
iptables源码      iptables-1.3.4.tar.bz2  ( 官方主页:http://www.netfilter.org )
ipp2p源码         ipp2p-0.8.0.tar.gz  ( 官方主页:http://www.ipp2p.org/ )
ebtables-brnf补丁 ebtables-brnf-11-2_vs_2.4.31.diff.gz ( 官方主页:http://ebtables.sourceforge.net )
bridge-utils源码  bridge-utils-1.0.6.tar.gz ( 官方主页:http://linux-net.osdl.org/index.php/Bridge )

一、安装redhat9,除了开发工具外不安装其他任何东西,防火墙选择NO firewall,安装好后进入系统。

二、删除系统默认安装的iptables

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

二、将需要的文件复制到/usr/src目录下(这是我的习惯,为了方便管理,你可以根据自己的习惯来做)

cp linux-2.4.31.tar.bz2 /usr/src
cp iptables-1.3.4.tar.bz2 /usr/src
cp ipp2p-0.8.0.tar.gz /usr/src
cp bridge-utils-1.0.6.tar.gz /usr/src
cp ebtables-brnf-11-2_vs_2.4.31.diff.gz /usr/src

三、解压缩源码

cd /usr/src
tar xvjf linux-2.4.31.tar.bz2
ln -s linux-2.4.31 linux        (建立linux目录的链接,目的是在编译iptables时不用指定内核源码目录,这是可选的)
tar xvjf iptables-1.3.4.tar.bz2
tar xvzf ipp2p-0.8.0.tar.gz
tar xvzf bridge-utils-1.0.6.tar.gz
gunzip ebtables-brnf-11-2_vs_2.4.31.diff.gz
cp ebtables-brnf-11-2_vs_2.4.31.diff linux

四、编译iptables

cd iptables-1.3.4
make
make install

编译后的iptables默认在/usr/local/sbin下,如果你想更改位置,可以修改Makefile文件中的PREFIX变量的值。

五、编译bridge-utils

cd bridge-utils-1.0.6
./configure
make
make install

编译后的brctl默认在/usr/local/sbin下,如果你需要更改位置,可以使用./configure --prefix= 来修改。

六、编译内核,使之支持桥接式防火墙

cd /usr/src/linux
patch -p1 < ebtables-brnf-11-2_vs_2.4.31.diff    给内核打补丁,这样才能使iptables“看到”桥中的数据
cp /boot/config-2.4.20-8 .config                 偷个懒,使用系统原有的内核配置文件
make oldconfig                                   配置内核选项

  在出现Bridge:ebtables (CONFIG_BRIDGE_NF_EBTABLES) [N/m/?] (NEW)的时候选择m,即编译成模块形式,然后在其后的选项中凡是以
ebt:开头的都选择m编译成模块。其实这些选项不是都常用,但是编译了也没有坏处。

make dep
make bzImage
make modules
make modules_install
mkinitrd /boot/initrd-2.4.31.img 2.4.31
cp boot/arch/i386/bzImage /boot/vmlinuz-2.4.31

修改/boot/grub/grub.conf,将新编译的内核加入启动中,这是在我计算机上的例子。
-----------------------------
default=0
timeout=10
splashinage=(hd0,0)/grub/splash/splash.xpm.gz

title Red Hat linux
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img

title Bridgeing Firewall                        这部分是新加的
root (hd0,0)
kernel /vmlinuz-2.4.31 ro root=LABEL=/
initrd /initrd-2.4.31.img
-----------------------------

七、编译IPP2P

cd ipp2p-0.8.0
vi Makefile   修改Makefile中的IPTABLES_SRC变量指定iptables源码的位置,本例中是/usr/src/iptables-1.3.4
make

编译结束后会生成libipt_ipp2p.so和ipt_ipp2p.o
cp libipt_ipp2p.so /usr/lib/iptables         将libipt_ipp2p.so拷贝到iptables的lib目录中,本例中是/usr/lib/iptables
cp ipt_ipp2p.o /lib/modules/2.4.31/kernel/net/ipv4/netfilter  将ipt_ipp2p.o拷贝到相应的内核的lib目录中
depmod -a                   更新modules配置文件

八、重启计算机,使用新的内核引导系统,配置网桥。

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
ifconfig br0 up

此时将此计算机的两块网卡分别接到网络中,使用ping做测试,应该可以ping通,表示网桥已经正常工作了。

此时就可以使用ipp2p来控制bt,emule等的下载了,例如禁止BT使用如下命令:

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

其他ipp2p的用法可以参考源码中的README文件和官方网站相关信息。

打完收工。
routeros
发表于 2006-1-6 17:43:12 | 显示全部楼层
期待中
routeros
回复

使用道具 举报

发表于 2006-1-7 16:01:44 | 显示全部楼层

好文!

鼓掌~~
routeros
回复

使用道具 举报

发表于 2006-1-7 20:47:24 | 显示全部楼层
真hao
routeros
回复

使用道具 举报

发表于 2006-1-17 00:15:23 | 显示全部楼层
好文!!
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-12-27 15:29 , Processed in 0.063520 second(s), 14 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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