Centos5.4升级内核+iptables+Layer7+ipp2p推荐

1.所需要软件包 linux-2.6.28..tar.gz http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2 iptables-1.4.5.tar.bz2 http://ftp.netfilter.org/pub/iptables/iptables-1.4.5.tar.bz2 netfilter-layer7-v2.22.tar.gz http://downloads.sourceforge.net/l7-filter/netfilter-layer7-v2.22.tar.gzl7-protocols-2009-05-28.tar.gz http://downloads.sourceforge.net/l7-filter/l7-protocols-2009-05-28.tar.gz2.把以上内核和软件包解压到/usr/src下tar -zxvf linux-2.6.28.7.tar.gz -C /usr/srctar -zxvf netfilter-layer7-v2.22.tar.gz -C /usr/srctar -zxvf l7-protocols-2009-05-28.tar.gz -C /usr/srctar -jxvf iptables-1.4.5.tar.bz2 -C /usr/src二、安装l7-protocols进入l7-protocols/下Make install三、编译新内核1.给新内核打L7补丁cd /usr/src/linux-2.6.28.7patch -p1 /usr/src/netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch2.修改内核配置项make mrproper清理工作make menuconfig Networking — Networking options — Network packet filtering framework (Netfilter) — Core Netfilter Configuration — 该项下的所有项目建议都选上 M Netfilter connection tracking support 这个项目必需选上,下面才会出现layer7的选项 M layer7 match support 必选 Layer 7 debugging output (可不选) IP: Netfilter Configuration — 该项下的所有项目必需都选上2.1编译并安装新内核Makemake bzImagemake modulesmake modules_installmake install2.2 设置新内核为默认启动的内核,如果是远程连接服务器,必须要修改这项,否则重启后默认加载旧的kernel vim /boot/grub/gurb.confdefault=1 把1改为0timeout=5 设置等候时间splashimage=(hd0,0)/boot/grub/splash.xpm.gzhiddenmenutitle CentOS (2.6.24.7) root (hd0,0) kernel /boot/vmlinuz-2.6.24.7 ro root=LABEL=/ rhgb quiet initrd /boot/initrd-2.6.24.7.imgtitle CentOS (2.6.18-164.el5) root (hd0,0) kernel /boot/vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet initrd /boot/initrd-2.6.18-164.el5.img保存退出3.编译安装iptables并支持layer7cd /usr/src/iptables-1.4.5/export KERNEL_DIR=/usr/src/linux-2.6.28/export IPTABLES_DIR=/usr/src/iptables-1.4.54.进入到iptables的源码目录,将/usr/src/netfilter-layer7-v2.20/iptables-1.4.1.1-for-kernel-2.6.20forward目录下的libxt_layer7.clibxt_layer7.man 这两个文件拷贝到/usr/src/iptables-1.4.2/extensions目录下cp ../netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.* ./extensions/注:如果有patch可以打补丁进入到iptables1.4.2源码目录执行以下命令给iptables1.4.2打补丁,由于没有针对我的2.6.25的补丁,所以就装了最新的2.6.20,其他版本的补丁没有试过patch -p1 ../netfilter-layer7-v2.20/iptables-1.4-for-kernel-2.6.20forward-layer7-2.20.patch5、接下来就是安装打好补丁的iptables1.4.2了,进入到iptables1.4.2源码目录,执行以下命令:./configure –with-ksource=/usr/src/linux-2.6.28make KERNEL_DIR=/usr/src/linux BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man make install BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man四、重新启动之后查看内核是否加载成功 以及iptables版本[root@DB2 ~]# uname aLinux DB2 2.6.28 #1 SMP Thu Feb 24 11:19:41 CST 2011 x86_64 x86_64 x86_64 GNU/Linux[root@DB2 ~t ~]# iptables -Viptables v1.4.5

五、编译加载ipp2p(这个步骤一定会出现一些问题,是新版本的内核和iptabels的改变导致的)首先修改Makefile,编译tar zxvf ipp2p-0.99.15.tar.gz cd ipp2p-0.99.15/ vi Makefile 修改kernel_dir为/usr/src/linux-2.6.24.7 make如果完全按照上面的步骤操作,编译的时候遇到的第一个错误应该是这样的:图一

这是版本差异造成的,需要修改代码:修改libipt_ipp2p.c找到报警的行:375,376,378,379参考系统的libxt_mark.c修改相关代码如下:static void删除init(struct ipt_entry_match *m, unsigned int *nfcache)添加init(struct xt_entry_match *m){ struct ipt_p2p_info *info = (struct ipt_p2p_info *)m- data;删除 *nfcache |= NFC_UNKNOWN;/*init the module with default values*/ info- cmd = 0; info- debug = 0;}static intparse(int c, char **argv, int invert, unsigned int *flags,删除 const struct ipt_entry *entry,删除 unsigned int *nfcache,添加 const void *entry, struct xt_entry_match **match){ struct ipt_p2p_info *info = (struct ipt_p2p_info *)(*match)- data;static void删除print(const struct ipt_ip *ip,添加print(const void *ip, const struct xt_entry_match *match, int numeric){static void删除save(const struct ipt_ip *ip, const struct iptt_entry_match *match)添加save(const void *ip, const struct xt_entry_match *match){ struct ipt_p2p_info *info = (struct ipt_p2p_info *)match- data;重新编译,make clean make成功编译!将编译出的libipt_ipp2p.so(目录 ipp2p-0.99.15/下)复制到/lib/iptables/cp libipt_ipp2p.so /lib/iptables/cp ipt_ipp2p.ko /lib /modules/2.6.24.7/kernel/net/ipv4/netfilter将ipt_ipp2p.ko复制到内核的netfilter目录下运行depmod -a,更新内核模块的依赖关系。重启iptables服务Service iptables restart测试L7成功Iptables A FORWARD m layer7 l7proto q j DROP测试ipp2p成功Iptables A FORWARD p tcp m ipp2p xunlei j DROP

没有什么可留恋,只有抑制不住的梦想,

Centos5.4升级内核+iptables+Layer7+ipp2p推荐

相关文章:

你感兴趣的文章:

标签云: