Centos 5.3 环境下编译iptables

系统 Linux
CentOS(Community ENTerprise Operating System)是Linux发行版之一,当我们使用CentOS时,我建议大家配置一个iptables,iptables 是与最新的 2.6.x 版本Linux 内核集成的 IP 信息包过滤系统.非常好用。下面教大家在Centos 5.3 环境下编译iptables。

Centos 5.3 环境下编译iptables,下面介绍下内容。

  一 相关内容介绍

  CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。介绍地址http://zh.wikipedia.org/zh-cn/CentOS

  iptables或netfilter(网络过滤器) 是一个用户态的防火墙应用软件,允许系统管理员可以调整设定X表(Xtables)提供相关的系统表格(目前主要是在 iptables/netfilter 底下)以及相关的“键”与“规则”来管理网络封包的流动与转送的动作。介绍详见 http://zh.wikipedia.org/zh-cn/Iptables

  patch-o-matic是iptables的扩展模块,默认安装的iptables并不安装这些模块,扩展模块功能强大,能够很好提高iptables的使用效率。介绍详见 http://www.netfilter.org/projects/patch-o-matic/pom-external.html

  ipp2p,Layer 7都是iptables的扩展模块,通过它可以限制网络中的BT流量,多种下载工具以及其他一些异常网络行为。介绍详见 http://www.ipp2p.org/ http://l7-filter.sourceforge.net/

#p#

  二 下载相关程序

  一般通过光盘安装的centos5.3 内核版本为2.6.18-128.el5 ,iptables版本为1.3.5,由于其默认安装的iptables没有我们需要的模块,即Layer 7 ipp2p,扩展模块patch-o-matic,我们需要通过编译系统内核,重新安装新内容的iptables。

  1. kernel 2.6.18(官方版本)下载地址 http://www.kernel.org/pub/linux/kernel/v2.6/

  kernel 2.6.18-128.el5(redhat 修改的版本) http://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/

  注:kerne官网提供的下载格式为tar.gz 及tar.bz2 ,这是由于linux发行版本众多,打包压缩格式是标准的发布方式。kernel也有src.rpm的格式, 是RedHat发布的,主要是在官方发布的kernel基础上打了好多的补丁,主要可以提高他的一些性能,并增加了一些设备的驱动,其及其它一些功能。RedHat 的版本号 2.6.18-128.el5 表示是从kernel.org 官方公布的 2.4.18 版本的基础上修改而来的。-128 表示是第128次build。因为我们采用的操作系统是centos,其内核本是经红帽修改的,所以推荐下载 src.rpm版本的内核源码

  2.iptables 1.3.5(官方版本)下载地址 http://www.netfilter.org/projects/iptables/downloads.html

  3.Layer 7 仔细阅读 http://l7-filter.sourceforge.net/HOWTO-kernel

  注:这里我们要下载两个文件,一个是L7-filter-kernel version ,http://sourceforge.net/projects/l7-filter/files/

  一个是protocol definitions http://sourceforge.net/projects/l7-filter/files/

  注意这两个文件的发布时间,下载接近的版本。在这里我们选择下载最新版本

  netfilter-layer7-v2.22.tar.gz Mon Jul 13 2009 22:55

  l7-protocols-2009-05-28.tar.gz Thu May 28 2009 21:48

  4. ipp2p 下载地址 http://linux.chinaunix.net/bbs/viewthread.php?tid=914377&extra=page%3D1&page=1

  这里我们推荐安装CU网友修改的过的IPP2P 0.99.15 ,新增了对迅雷的限制。当然我们也可以去官网下载0.82版本 地址为 http://www.ipp2p.org/ 在这里我们选择下载最新版本。

  5 patch-o-matic 下载地址 http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/

  在写这篇文章之前,我还没查清iptabels版本与 patch-o-matic 之间的对应关系 有兴趣的朋友可以研究一下

  在这里我们下载 patch-o-matic-ng-20080214

  二 解压安装

  把下载的打包压缩文件全都解压到/usr/src目录下,内核源码文件不用

  # tar zxvf ipp2p-0.99.15.tar.gz -C /usr/src/ / / ipp2p模块的

  # tar zxvf l7-protocols-2008-02-20.tar.gz -C /usr/src/ / /L7协议

  # tar zxvf netfilter-layer7-v2.17.tar.gz -C /usr/src/ / /L7内核及iptables的补丁

  # tar xvjf iptables-1.3.5.tar.bz2 -C /usr/src/ / /iptables源码

  #tar jxvf patch-o-matic-ng-20071120.tar.bz2 -C /usr/src/ / /iptables扩展

  # rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 / /修正rpm包安装key警告问题

  # useradd mockbuild / /建立内核源码包安装所需用户

  # rpm -ivh kernel-2.6.18-128.el5.src.rpm / /安装内核源码

  # cd /usr/src/redhat/SPECS

  # rpmbuild -bp --target=i686 kernel-2.6.spec

  # cp -a /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686 /usr/src/linux-2.6.18 //安装源码包 考一份内核到 /usr/src/linux-2.6.18做编译使用,如果编译失败 可以删除后再考新的所以不建议做软连接操作

  # cd /usr/src/linux-2.6.18

  # vi Makefile

  修改 EXTRAVERSION = -prep / /修改拷贝的内核与当前系统内核版本一致(很重要,否则编译出来的

  该成 EXTRAVERSION = -128.el5 模块不能被内核所使用)

  # uname -r

  2.6.18-128.el5

  # head -n4 Makefile / /保持跟uname -r 的版本一致 检测一下

  VERSION = 2

  PATCHLEVEL = 6

  SUBLEVEL = 18

  EXTRAVERSION = -128.el5

  # make mrproper / /该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。

  #make oldconfig / /该命令是生成就的内核配置文件,运行完后就会有.config文件了

#p#

  三 为内核打L7补丁并添加iptables扩展模块

  注意:一定要设置内核和iptables的环境变量,否则会出错

  # export KERNEL_DIR=/usr/src/linux-2.6.18 / /设置内核源码路径

  # export IPTABLES_DIR=/usr/src/iptables-1.3.5 / /设置iptables-1.3.5源码路径

  # cd /usr/src/linux-2.6.18

  # patch -p1 < /usr/src/netfilter-layer7-v2.22/for_older_kernels/kernel-2.6.18-2.6.19-layer7-2.9.patch

  / /给内核打补丁L7补丁 1 是数字1 不是字母l

  注意:仔细查看netfilter-layer7-v2.22目录下的README文件,不同版本的内核和iptables使用的文件不一样,请仔细查找相符合的版本,如错误则编译内核时会出错。

  #cd /usr/src/patch-o-matic-ng-20080214

  #./runme –download / /首先下载相关的扩展

  #./runme time / /安装iptables netfilter的扩展项(我安装了以下项目)

  #./runme connlimit / / 不要安装ROUTER扩展 这个版本的会出错有BUG

  #./runme u32

  #./runme geoip

  四 配置内核选项,增加新模块

  # cd /usr/src/linux-2.6.18

  # make menuconfig / /进入内核配置

  选项路径1:Loadable module support --->

  source checksum for all modules 这项去掉 !!!不检查模块源

  选项路径2:Networking --->

  Networking options --->

  Network packet filtering (replaces ipchains) --->

  IP: Netfilter Configuration --->

  新加入的模块都在这里 选中新加入的模块

  Layer 7 match support (EXPERIMENTAL) \选中L7\

  [ ] Layer 7 debugging output (NEW) (这个debug 不要选啦)

  TIME match support

  Connections/IP limit match support

  U32 match support

  geoip match support

  把time、 Connectionslimit 、u32,geoip 选上

  保存退出

  五 重新编译内核

  #mv /lib/modules/2.6.18-53.el5 /lib/modules/2.6.18-53.el5.old / /在重新编译内核之前,我们需要把现有的模块目录改名。这样,即使编译失败,只要把模块目录名改回成原来,系统还和以前一样的

  #make bzImage / /字母“I”是大写的 (大约30分钟)

  #make modules / /编译各个模块

  #make modules_install / /安装模块

  2.6的kernel的编译不需要cp 内核和System.map,修改Grub.conf的步骤,统统make_install搞定了

  #reboot //重新启动,使用新内核

  六、安装新版本iptables以及layer7iptables补丁和协议

  #cd /usr/src/iptables

  # export KERNEL_DIR=/usr/src/linux-2.6.18 / /设置内核源码路径

  # export IPTABLES_DIR=/usr/src/iptables-1.3.5 / /设置iptables-1.3.5源码路径

  #patch -p1 < ./usr/src/netfilter-layer7-v2.22.1/iptables-1.3-for-kernel-pre2.6.20-layer7-2.16.1.patch

  #chmod +x ./extensions/.layer7-test

  #make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install //安装新版本iptables

  #cd /usr/src/l7-protocols-2008-02-20

  #make install / /安装l7-filter协议文件

  # cd /usr/src/ipp2p-0.99.15 //安装ip2p2模块

  # vi Makefile

  把 $(CC) -shared -o libipt_ipp2p.so libipt_ipp2p.o

  改成 ld -shared -o libipt_ipp2p.so libipt_ipp2p.o

  #make

  #cp libipt_ipp2p.so /lib/iptables \\将编译好的libipt_ipp2p.so模块复制过去\\

  #cp ipt_ipp2p.ko /lib/modules/2.6.18-53.el5/kernel/net/ipv4/netfilter/ \\将编译好的ipt_ipp2p.ko模块复制过去\\

  #depmod -a \\更新内核模块的依赖关系\\

  安装结束

通过文章的介绍,我们不难发现Centos 5.3 环境下编译iptables是比较简单的,相信大家都能掌握!

【编辑推荐】

  1. CentOS+iptables+squid透明代理+防火墙设置
  2. centos IPTables 配置方法
  3. 创建iptables NAT 规则
  4. Ubuntu iptables 初始化的实现
  5. Ubuntu iptables 内网端口映射
  6. 如何使用 ubuntu iptables 防止IP攻击
  7. ubuntu防火墙iptables使用指南

 

责任编辑:赵鹏 来源: 网络转载
相关推荐

2011-03-09 16:16:57

CentOSLAMP

2011-03-16 12:46:29

CentOSiptables防火墙

2011-03-09 16:16:54

CentOSLAMP

2011-03-14 14:40:11

iptables编译

2009-03-20 11:28:20

LinuxCentOS 5.3

2009-09-03 15:25:46

RHEL5.3CentOS5.3更新源

2011-09-09 17:23:53

CentOSLAMPmysql

2010-02-23 14:45:52

CentOS LEMP

2011-03-16 11:08:58

2011-03-14 13:51:00

iptables编译

2010-01-08 09:43:40

Ubuntu ngin

2021-06-07 23:51:16

MacGo服务

2010-01-13 10:14:45

2011-03-09 16:17:20

2011-03-16 12:29:41

2011-03-09 16:16:56

CentOSLAMP

2010-04-06 12:45:28

CentOS系统

2010-08-03 15:23:29

CentOS 5.3

2011-07-02 14:11:46

Qt Gtk Ubuntu

2009-11-30 09:56:16

点赞
收藏

51CTO技术栈公众号