debian环境下 l7filter 的安装教程

摘要:
L7滤波器已经开发到v1.3,功能相对完整。它是以内核和iptables补丁的形式提供的,并且没有被合并到内核的源代码中。Debian linux是最流行的linux发行版之一。本文将介绍如何在Debian模式下安装和使用l7过滤器。Debian的iptables的源代码被下载以使用其编译脚本,稍后将对此进行描述。转到iptables主页下载最新版本,即官方主页http://www.netfilter.org 。 运行debian脚本:/在debian/ruleunpack步骤之后,将添加多个目录,例如build-686和build-686-smp。默认值对应于kernel-source-2.6.11目录。
debian环境下 l7-filter 的安装教程

本文欢迎大家转载,请保留作者信息。
请注明转自linuxsir.org,作者memory。

l7-filter(Application Layer Packet Classifier for Linux)是linux下的开源项目,它是基于应用层数

据识别的分类器。它可以分类数据包而不管你使用的是哪些端口,这对那些经常变换端口的网络应用进行

数据流整形非常有用。l7-filter已经开发到v1.3版,功能已经比较完善。它以kernel、iptables的补丁的
形式提供的,尚未合并到kernel的源代码中。

debian linux是当前流行的几大linux发行版之一。它的优势就是其有着强大的软件包管理工具集,能够很

好的自动解决软件包之间的相互依赖关系,以及便捷的升级方式。本文将介绍怎样以debian的方式来安装

使用l7-filter。



1、安装编译相关工具
apt-get install debhelper kernel-package fakeroot libncurses5-dev bzip2



2、获取源代码

(1)获取debian官方源代码包(unstable)
cd /usr/src
apt-get source kernel-image-2.6.11-686
apt-get install kernel-tree-2.6.11
apt-get source iptables

iptables的当前debian官方版本是1.2.11。下载debian的iptables源代码是为了使用其编译脚本,后边会

介绍。


(2)到iptables主页下载最新版本,官方主页http://www.netfilter.org。下面的是我当前使用得版本:
wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20050520.tar.bz2
wget http://ftp.netfilter.org/pub/iptables/iptables-1.3.1.tar.bz2


(3)layer7 filter 官方主页下载补丁和协议定义包,主页http://l7-filter.sourceforge.net/
wget http://jaist.dl.sourceforge.net/sourceforge/l7-filter/netfilter-layer7-v1.3.tar.gz
wget http://jaist.dl.sourceforge.net/sourceforge/l7-filter/l7-protocols-2005-05-19.tar.gz

解开这两个包:
tar -xzf netfilter-layer7-v1.3.tar.gz
tar -xzf l7-protocols-2005-05-19.tar.gz



3、准备编译iptables

(1)拷贝新版本源代码到debian的iptables源代码目录中:
cp patch-o-matic-ng-20050520.tar.bz2 iptables-1.3.1.tar.bz2 kernel-source-2.6.11.tar.bz2

iptables-1.2.11/upstream


(2)修改debian脚本
cd iptables-1.2.11
vi scripts/prep.sh
修改下面几行为:
iptables="iptables-1.3.1"
pomng="patch-o-matic-ng-20050520"
kernel="kernel-source-2.6.11"

找到下面两行:
unpack "$ipset"
> ${build}/ipset/Makefile

在其后添加:
(cd "$iptables_profectio"; \
patch -p1 < /usr/src/netfilter-layer7-v1.3/iptables-layer7-1.3.patch; \
chmod o+x extensions/.layer7-test;
> ippool/ippool)
(cd "$kernel_profectio"; patch -p1 <

/usr/src/netfilter-layer7-v1.3/kernel-2.6.11-layer7-1.3.patch)

上面几行在脚本运行时将会把iptables和kernel的layer7 filter 补丁打上。

iptables编译时有个小问题,一直没能很好的解决,那就是修改后的源代码编译时总是不能编译出ippool

这个工具,不知为何。但debian在给编译结果打包时总是要找这个东西。无奈,我只能采取欺骗的手法,

先在ippool目录中建个假的ippool完事。这也就是上边:
> ippool/ippool
这一句的用意。


(3)修改debian的iptables版本
vi debian/changlog
修改第一行为:
iptables (1.3.1-1) unstable; urgency=medium
编译后iptables的debian包版本就是1.3.1-1


(4)去掉1.2.11版iptables的patch,因为现在用的是1.3.1版的:
cd patches
mv all all.old
mkdir all


(5)编译iptables

make binary

如果不出什么异常的话,/usr/src下应该多出两个叫iptables_1.3.1-1_i386.deb和iptables-dev_1.3.1-1

_i386.deb的包,这就是编译成果。

注意:这一步会因为kernel以前打过一些补丁出现问题,直接回车跳过即可。



4、编译kernel

(1)拷贝iptables编译时使用的kernel源代码
cd /usr/src/kernel-image-2.6.11-i386-2.6.11
cp -R ../iptables-1.2.11/debian/build/kernel-source-2.6.11 .


(2)kernel编译的准备工作
vi debian/rules
找到下面这一行:
tar jxf /usr/src/kernel-source-$(version).tar.bz2
改为:
# tar jxf /usr/src/kernel-source-$(version).tar.bz2
实际就是注释掉,因为源代码我们已经从iptables目录中拷贝过来了。

删除不必要的配置文件,只保留你需要的平台配置。比如我只保留686、686-smp和default配置:
rm ./config/k7* ./config/386

如果你不删除,rules脚本将为每个配置建立相应的build目录。每个配置文件都是以面对平台的处理器命

名的,如386、686、k7等,而且要为每种配置编译生成相应的debian包,很耗时间。

运行debian脚本:
./debian/rules unpack

这步结束后,多出几个目录形如:build-686、build-686-smp,default对应的就是kernel-source-2.6.11

目录。目录个数是根据具体配置来的。


(3)为每个平台配置kernel
以686为例:
cd build-686
make menuconfig
进入
Device Drivers --->
Networking support --->
Networking options --->
Network packet filtering (replaces ipchains) --->
IP: Netfilter Configuration --->
<M> Layer 7 match support (EXPERIMENTAL)

记住:为每个你需要编译的平台作上面这一步,否则在编译是会停在那里等你确认。


(3)编译kernel
cd /usr/src/kernel-image-2.6.11-i386-2.6.11
./debian/rules binary-arch

要是没什么异常的话,在上级目录中将为每个平台建立了各自的.deb包。



5、安装

(1)安装l7 protocol
cd l7-protocols-2005-05-19
make install

这一步很简单,实际就是把这个整个目录拷贝到了/etc下


(2)安装iptables
cd /usr/src
dpkg -i iptables_1.3.1-1_i386.deb
dpkg -i iptables-dev_1.3.1-1_i386.deb


(3)安装kernel
dpkg -i kernel-image-2.6.11-1-686_2.6.11-3_i386.deb



6、测试成果

禁用bt的iptables规则:
iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j DROP

官方howto不建议上边的这种用法,因为l7的协议定义实际上就是正则表达式,有的数据包可能会匹配多种

协议,造成误判。他建议用tc工具分配一个带宽很窄的通道,将那些不期望的数据都定向到此通道。具体

说法和用法还是参照其主页howto。



7、禁止升级kernel、iptables软件包

测试无误后,使用包管理命令禁止更新这两个包:
echo iptables hold | dpkg --set-selections
echo kernel-image-2.6.11-1-686 hold | dpkg --set-selections


完成。

有什么问题或错误欢迎大家批评指正。

免责声明:文章转载自《debian环境下 l7filter 的安装教程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于OceanStor Dorado V3存储之精简高效 Smart 系列特性XAF学习笔记之 Upcasting下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux下rsync的用法

一、rsync的概述 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。rsync是Linux系统下的文件同步和数据传输工具,它采用“rsync”算法,可以将一个客户机和远程文件服务器之间的文件同步,也可以在本地系统中将数据从一个分区备份到另一个分区上。如果rsync在备份过程中出现了数据传输中断,恢复...

ZH奶酪:Linux/Ubuntu 安装/卸载 软件

1、安装.deb文件 以安装Chrome为例: (1)到官方网站下载Chrome浏览器相应版本,比如google-chrome-stable_current_i386.deb; (2)Ctrl+Alt+T打开终端,进入deb文件所在目录(默认“Downloads”,中文操作系统的话就是“下载”); cd ~/Downloads (2.5)安装之前,一般都会...

LINUX-文件的特殊属性

chattr +a file1 只允许以追加方式读写文件 chattr +c file1 允许这个文件能被内核自动压缩/解压 chattr +d file1 在进行文件系统备份时,dump程序将忽略这个文件 chattr +i file1 设置成不可变的文件,不能被删除、修改、重命名或者链接 chattr +s file1 允许一个文件被安全地删除 cha...

linux进阶之yum管理

一、部署私有repo源 1、官网下载需要的仓库: rsync -avrt --delete rsync://mirrors.ustc.edu.cn/centos/7/cloud/x86_64/openstack-pike /export/download/cloud/ 2、安装软件包: yum install yum-utils createrepo ng...

[置顶] export命令-linux

export 命令 功能说明: 设置或显示环境变量。 语 法: export [-fnp][变量名称]=[变量设置值] 补充说明: 在shell中执行程序时,shell会提供一组环境变量。 export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。 参 数: -f 代表[变量名称]中为函数名称...

Linux (三)

chmod:用来改变文件或目录的访问权限 语法格式:chmod 【参数选项】 【mode】【文件或者目录】 参数选项: -v :显示权限变更的详细信息 -R :对当前目录下的所有文件以及子目录进行相同的权限变更 ​ (以递归的当时逐个变更) mode :是权限标记。可以有符号标记和八进制数两种格式。 文件或者目录 :要设置的文件名或者目录名,必须输入...