感谢platinum的文档;
下面是我在Linux上的试验步骤,可能不那么准确。
=========
Iptables添加模块 Howto
For kernel 2.6
准备工作:
1, 最新的patch-o-matic-ng,在下面的地址可以下载到最新的:
http://ftp.netfilter.org/pub/patch-o-matic-ng/
2, 最新的iptables源代码:
http://www.netfilter.org
3, 内核源代码:
http://www.kernel.org
4, L7-filter 补丁以及协议描述文件:
http://sourceforge.net/project/showfiles.php?group_id=80085
测试系统环境及软件版本:
1, GCC 3.4.2
2, Kernel 2.6.9
3, Iptbles 1.3.1
4, l7-protocols 2005-02-06
5, netfilter-layer7 v1.0
6, patch-o-matic-ng 20050309
安装步骤:
1, 解压kernel到/usr/src: #tar –jxvf kernel-2.6.9.tar.bz2 –C /usr/src
2, 使用上面类似的命令解压其余的文件到/source/temp下:
为kernel打补丁:
Cd /usr/src/linux-2.6.9
Make menuconfig(注意生成.config)
cd /source/temp/patch-o-matic-ng-20050309
KERNEL_DIR=/usr/src/linux-2.6.9 IPTABLES_DIR=/source/temp/iptables-1.3.1 ./runme time
(注: runme后跟需要添加的模块,不要使用base或其它的命令,会导致后面iptables不能编译通过。我编译的模块有:time ipv4options psd mport ipp2p quota。很遗憾的是string模块不支持kernel-2.6版本)
##这里是与l7-filter有关的(你可以不做这里的):
Cd /usr/src/linux-2.6.9
Patch –p1 </source/temp/netfilter-layer7-v1.0/kernel-2.6-layer7-1.0.patch
Cd /source/temp/iptables-1.3.1
Patch –p1 </source/temp/netfilter-layer7-v1.0/iptables-layer7-1.0.patch
##这里是与l7-filter有关的结束
Cd /usr/src/linux-2.6.9
Make menuconfig (在这里选择你添加的netfilter的模块)
Make
Make modules_install
修改grub或lilo使用新的kernel来启动Linux
编译iptables:
Cd /source/temp/iptables-1.3.1
Export KERNEL_DIR=/usr/src/linux-2.6.9
Export IPTABLES_DIR=/source/temp/iptables-1.3.1
make PREFIX=/usr LIBDIR=/lib BINDIR=/sbin &&
make PREFIX=/usr LIBDIR=/lib BINDIR=/sbin install
安装l7-filter协议文件:
Cd /source/temp/l7-protocols-2005-02-06
Make install
测试是否成功:
Iptables –A OUTPUT –p tcp –m mport –sports 21:23,80 –j DROP
等等测试命令,如果你需要看帮助:
Iptables –m ip2p2 –help
参考文档:
http://l7-filter.sourceforge.net/L7-HOWTO-Netfilter
http://www.netfilter.org/documentation/HOWTO//netfilter-extensions-HOWTO.html
platinum的HOWTO文档