|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
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文件和官方网站相关信息。
打完收工。 |
|