编译64位deiban内核,安装Layer 7过滤软件

编译64位deiban内核,安装Layer 7过滤软件

作者:Xliu
Msn:6160@9.cn



首先从debian的官方网站下载ISO镜像,下载地址:http://www.debian.org/distrib/。官方网站上有各种不同CPU架构的安装镜像下载,其中标识i386就是我们常用的32位系统镜像,IA64是专用于安腾64位处理器,本文所要使用的是64位系统,就选择标识为amd64的镜像。需要注意的是,amd64架构不是单指AMD的64位处理器,也包括支持INTEL EMT64技术的处理器(如现在流行的酷睿系列处理器)。镜像也分为DVD和CD两种,建议有条件的话,还是下载DVD的,毕竟包含的软件多。一般来说只需下载第一张镜像光盘就可以了,这次实验下载的镜像卷标为debian-501-amd64-DVD-1.iso
接下来刻盘安装,安装过程就不说了,网上教程很多,系统安装完成后,配置好IP,配置好SSH服务。
然后打开putty(一个用来登录远程服务器的工具),通过SSH登录debian服务器,输入root帐号、密码,登录成功。如下图。(图片1)


接下来要更改apt源、准备内核和过滤工具的源代码。
cd /etc/apt
cp sources.list sources.list.bak
在sources.list中修改apt源列表,
nano sources.list
可以用删除键把里面所用的字符完全删除,接着输入apt的源,在中国大陆目前还是163的源最快最稳定,强烈建议使用。163是门户网站中第一个为开源软件提供镜像的公司。在这里顺便感谢下163。感谢为开源事业所做出的贡献。
deb http://mirrors.163.com/debian lenny main non-free contrib
deb-src http://mirrors.163.com/debian lenny main non-free contrib

(图片2)

完成后,按ctrl+o敲下回车保存,再按ctrl+x退出。
输入apt-get update更新源列表

(图片3)

更新完成,安装编译所需的工具:
apt-get install zip
apt-get install bzip2
 apt-get install make
 apt-get install debhelper
 apt-get install kernel-package
 apt-get install libncurses5-dev
 apt-get install fakeroot

接下来该下载内核和过滤工具的源代码,为了方便管理,新建目录
mkdir /usr/src/kernels
内核和过滤工具的源代码就放在kernels目录。进入kernels目录
cd /usr/src/kernels

(图片4)

用wget命令下载内核和过滤工具的源代码
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.10.tar.bz2
wget ftp://ftp.netfilter.org/pub/iptables/iptables-1.4.2.tar.bz2
wget http://nchc.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v2.21.tar.gz
wget http://nchc.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2009-05-10.tar.gz
用ls命令查看下,应该可以看到下载完的软件包
(图片5)

解压以上文件:
tar -jxvf linux-2.6.28.10.tar.bz2; tar -zxvf l7-protocols-2009-05-10.tar.gz; tar -zxvf netfilter-layer7-v2.21.tar.gz; tar -jxvf iptables-1.4.2.tar.bz2

为了方便,做一个符号链接,并进入新内核源代码目录:
ln -s linux-2.6.28.10 linux
cd linux

为内核源代码打下layer7的补丁
patch -p1 < ../netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch

(图片6)

接下来进入关键的步骤,为内核选择layer7及相关的模块;
make menuconfig
让新内核读取旧内核的配置:
在出现的菜单选项中选中“Load an Alternate Configuration File”,输入旧内核配置文件的路径/boot/config-2.6.26-2-amd64,然后确认,开始选择内核模块
选项如下:
General setup --->[*] Prompt for development and/or incomplete code/drivers
Networking --->
Networking options --->[*] Network packet filtering framework (Netfilter) --->
Core Netfilter Configuration --->
<M> Netfilter connection tracking support
-*- Connection tracking flow accounting
-*- Connection mark tracking support[*] Connection tracking security mark support[*] Connection tracking events (EXPERIMENTAL)
<M> SCTP protocol connection tracking support (EXPERIMENTAL)
<M> UDP-Lite protocol connection tracking support (EXPERIMENTAL)
<M> Amanda backup protocol support
<M> FTP protocol support
<M> H.323 protocol support (EXPERIMENTAL)
<M> IRC protocol support
<M> NetBIOS name service protocol support (EXPERIMENTAL)
<M> PPtP protocol support
<M> SANE protocol support (EXPERIMENTAL)
<M> SIP protocol support (EXPERIMENTAL)
<M> TFTP protocol support
<M> Connection tracking netlink interface (EXPERIMENTAL)
{M} Netfilter Xtables support (required for ip_tables)
<M> "CLASSIFY" target support
<M> "CONNMARK" target support
<M> "DSCP" target support
<M> "MARK" target support
<M> "NFQUEUE" target Support
<M> "NFLOG" target support
<M> "NOTRACK" target support
<M> "TRACE" target support
<M> "TRACE" target support
<M> "SECMARK" target support
<M> "CONNSECMARK" target support
<M> "TCPMSS" target support
<M> "comment" match support
<M> "connbytes" per-connection counter match support
<M> "connlimit" match support"
<M> "connmark" connection mark match support
<M> "conntrack" connection tracking match support
<M> "DCCP" protocol match support
<M> "DCCP" protocol match support
<M> "DSCP" match support
<M> "ESP" match support
<M> "helper" match support
<M> "length" match support
<M> "limit" match support
<M> "mac" address match support
<M> "mark" match support
<M> IPsec "policy" match support
<M> Multiple port match support
<M> "physdev" match support
<M> "pkttype" packet type match support
<M> "quota" match support
<M> "realm" match support
<M> "sctp" protocol match support (EXPERIMENTAL)
<M> "state" match support
<M> "layer7" match support[*] Layer 7 debugging output
<M> "statistic" match support
<M> "string" match support
<M> "tcpmss" match support
<M> "time" match support
<M> "u32" match support
<M> "hashlimit" match support
IP: Netfilter Configuration --->
<M> IPv4 connection tracking support (required for NAT)[*] proc/sysctl compatibility with old connection tracking (NEW
<M> IP Userspace queueing via NETLINK (OBSOLETE)
<M> IP tables support (required for filtering/masq/NAT)
<M> IP range match support
<M> TOS match support
<M> recent match support
<M> ECN match support
<M> AH match support
<M> TTL match support
<M> Owner match support
<M> address type match support
<M> Packet filtering
<M> REJECT target support
<M> LOG target support
<M> ULOG target support
<M> Full NAT (NEW)
<M> MASQUERADE target support
<M> REDIRECT target support
<M> NETMAP target support
<M> SAME target support (OBSOLETE)
<M> Basic SNMP-ALG support (EXPERIMENTAL)
<M> Packet mangling
<M> TOS target support

建议把Core Netfilter Configuration和IP: Netfilter Configuration的所有选项都选中。注意,刚开始时,我一直找不到:<M> "layer7" match support 和[*] Layer 7 debugging output 这两个模块,浪费了很多时间,后来发现是因为这两个模块是属于:<> Netfilter connection tracking support 这个模块,因此得先选择<M> Netfilter connection tracking support 这样下面才有Layer7及相关模块,在内核选项建议把你所有的网卡驱动选中[*],其中time模块就是可以通过iptables可以控制上网的时间等功能,就是时间控制的模块!

一步一步的"EXIT"后,会提示你是否保存刚才的选择更改结果,我们选“YES”!

清除源码树并复原 kernel-package 参数
#make-kpkg clean

然后进行编译并生成.deb的包,以供安装时使用:
fakeroot make-kpkg --append_to_version -adm64 --initrd --revision=2.6.28.10 kernel_image modules_image
下面系统就可以编译内核了,这是一个漫长的过程,在我机器上用了一个小时才编译完成。


(图片7)

退回kernels目录:
cd ..
安装新的内核:
dpkg -i linux-image-2.6.28.10-adm64_2.6.28.10_amd64.deb

(图片8)

这时,会将新内核安装到相应的位置,同时会在/boot/grub/menu.lst增加新内核的条目

为iptables打补丁,并安装之
cd iptables-1.4.2
cp ../netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward/libxt_layer7.* extensions/
./configure --with-ksource=/usr/src/kernels/linux
make
make install
安装通讯定义档
cd /usr/src/kernels/l7-protocols-2009-05-10
make install

(图片9)
看执行的结果就知道,它在做什么了!

这样新的内核都弄好了,iptables也装好了,重启计算机:
shutdown -r now
启动完成后,用命令查看新内核与iptalbes是否安装成功:
uname -a;iptables -V
(图片10)

再测试layer7是否可用:
iptables -m layer7 --help
(图片11)

如果出现上面的信息就说明layer已经可以正常工具了。到这一步就算大功告成了。


附:阻挡qq.bt.msn通讯的命令
iptables -t mangle -I PREROUTING -m layer7 --l7proto msnmessenger -j DROP (禁止msn)
iptables -t mangle -I PREROUTING -m layer7 --l7proto bittorrent -j DROP (禁止bt)
iptables -t mangle -I PREROUTING -m layer7 --l7proto qq -j DROP (禁止QQ通讯)


在写作本文的过程中,参考了以下两篇文章,在这里向两位作者表示感谢。
http://blog.csdn.net/zubin006/archive/2008/08/03/2760600.aspx
http://ms.ntcb.edu.tw/~steven/article/kernel-layer7-filter.htm
上传的缩略图
点击图片以查看大图

名称:	01.jpg
查看次数:	11
文件大小:	24.4 KB
ID:	52204   点击图片以查看大图

名称:	02.jpg
查看次数:	5
文件大小:	20.2 KB
ID:	52205   点击图片以查看大图

名称:	03.jpg
查看次数:	6
文件大小:	38.7 KB
ID:	52206   点击图片以查看大图

名称:	04.jpg
查看次数:	2
文件大小:	5.8 KB
ID:	52207  

点击图片以查看大图

名称:	05.jpg
查看次数:	2
文件大小:	9.0 KB
ID:	52208   点击图片以查看大图

名称:	06.jpg
查看次数:	2
文件大小:	26.5 KB
ID:	52209   点击图片以查看大图

名称:	07.jpg
查看次数:	2
文件大小:	20.7 KB
ID:	52210   点击图片以查看大图

名称:	08.jpg
查看次数:	2
文件大小:	38.6 KB
ID:	52211  

  liuy03 当前离线 反映此帖   回复时引用此帖 快速回复此帖
 
 
 
 

补上图片~!
上传的缩略图
点击图片以查看大图

名称:	10.jpg
查看次数:	1
文件大小:	7.6 KB
ID:	52212   点击图片以查看大图

名称:	11.jpg
查看次数:	5
文件大小:	36.5 KB
ID:	52213  
posted @ 2009-07-01 22:08  Dragon.Spirit  阅读(498)  评论(0编辑  收藏  举报