免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1362 | 回复: 0
打印 上一主题 下一主题

如何给iptables添加模块 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-21 16:18 |只看该作者 |倒序浏览
iptables 添加模块HOWTO
http://chinaunix.net/jh/4/505370.html
如何给iptables添加模块(v2.2)
这个文档很简单,只有“准备工作”和“安装步骤”两部分,在这里我要特别感谢ChinaUnix的“gouya”和“lyxmoo”,
他们给了我很大帮助,也谢谢在此期间关心帮助过我的朋友们。
准备工作
需要一个内核源码,下载最新内核源码包或者使用系统自带的RPM包均可
需要一个最新的patch-o-matic-ng,可以到官方网站下载最新的快照
http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/
需要一个最新的iptables,可以到官方网站获取
http://www.netfilter.org/downloads.html
安装步骤(以CentOS-3.4为例)
1、展开压缩包
cd /usr/src
yum install kernel-source
wget
http://www.netfilter.org/files/iptables-1.3.1.tar.bz2
wget
http://ftp.iasi.roedu.net/netfilter/patch-o-matic-ng/snapshot/patch-o-matic-ng-20050307.tar.bz2
tar xjvf iptables-1.3.1.tar.bz2
tar xjvf patch-o-matic-ng-20050307.tar.bz2
2、给netfilter打补丁
cd /usr/src/linux-2.4
make mrproper
make menuconfig,什么都不做,直接保存退出(见注解1)
uname -r,可得到“2.4.21-27.0.2.EL”的信息
vi Makefile,将“EXTRAVERSION = -27.0.2.ELcustom”改为“EXTRAVERSION = -27.0.2.EL”
cd /usr/src/patch-o-matic-ng-20050307
KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme base(见注解2)
一路“y、回车”,如果发现和内核源码有冲突或者其他原因打不上,可以“n、回车”,直到结束
cd /usr/src/linux-2.4
make menuconfig,确认
  • Prompt for development and/or incomplete code/drivers要选中
    然后进入Networking options
    再进入IP:Netfilter Configuration,会看到增加很多模块,把你想要的选中“”(见注解3)
    保存、退出,至此,给netfilter打补丁工作完成
    3、编译、并启用netfilter模块
    cd /usr/src/linux-2.4
    head -n4 Makefile(见注解4)
    make dep
    make modules SUBDIRS=net/ipv4/netfilter
    cp -f net/ipv4/netfilter/*.o /lib/modules/2.4.21-27.0.2.EL/kernel/net/ipv4/netfilter/
    depmod –a
    4、编译安装iptables
    cd /usr/src/iptables-1.3.1
    export KERNEL_DIR=/usr/src/linux-2.4
    export IPTABLES_DIR=/usr/src/iptables-1.3.1
    make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install
    ln -s /lib/iptables /usr/local/lib/iptables(可不做,由于之前的iptables-1.3.0有BUG,所以有可能要用到)
    5、测试是否成功
    iptables -A FORWARD -m iprange --src-range 192.168.1.5-192.168.1.124 -j ACCEPT
    iptables -A OUTPUT -m time --timestart 8:00 --timestop 18:00 -j ACCEPT
    iptables -A FORWARD -m string --string "sex" -j DROP
    iptables -A FORWARD -m ipp2p --edk --bit -j DROP
    [root@platinum root]# iptables -nL
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 source IP range 192.168.1.5-192.168.1.124
    DROP all -- 0.0.0.0/0 0.0.0.0/0 STRING match "sex"
    DROP all -- 0.0.0.0/0 0.0.0.0/0 ipp2p v0.7.2 --edk --bit
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 TIME from 8:0 to 18:0 on all days
    [root@platinum root]#
    FAQ
    Q:为什么depmod -a,提示类似下列的话?
    depmod: *** Unresolved symbols in /lib/modules/2.4.21-27.0.2.EL/kernel/net/ipv4/ah4.o
    A:这里失败的原因是因为模块版本与当前内核版本不匹配,往往是没有修改Makefile造成的,另一个原因就是,修改
    Makefile的工作必须在make dep之前
    Q:我一切都做完了,也没出错,为什么我调用模块时提示iptables: No chain/target/match by that name?
    A:因为您没有在make menuconfig里面,将
  • Prompt for development and/or incomplete code/drivers选中
    或者没有在Networking options -> IP:Netfilter Configuration里面选中要编译的模块
    Q:为什么我在Networking options -> IP:Netfilter Configuration里面没有看到补丁出来的模块选项?
    A:必须在给netfilter打补丁之前,先make menuconfig后保存退出,生成一个.config
    Q:depmod -a的时候,出现很多错误,怎么办?
    A:删除掉那些模块,然后再depmod -a
    Q:在编译iptables时,有些ipv6的模块总编译不过去,但我实际不需要ipv6的支持,应该怎么做?
    A:以random举例,在extensions/.random-test6文件中,可以看到一个监测信息,屏蔽掉即可
    Q:一切已经OK,但是启动的时候,-j MASQUERADE无效,提示“iptables: No chain/target/match by that name”
    A:需要执行前手动加载模块modprobe ipt_MASQUERADE
    Q:为什么modprobe ip_nat_ftp的时候出错?
    A:修改/lib/modules/2.4.21-27.0.2.EL/modules.dep,找到ip_nat_ftp,删除含有ip_nat_core 的行,顺便删除
    /lib/modules/2.4.21-27.0.2.EL/kernel/net/ipv4/netfilter/ip_nat_core.o,然后再depmod –a,发现有错误,
    继续删除发生错误的文件,直到depmod -a,没有错误为止
    Q:为什么我make modules SUBDIRS=net/ipv4/netfilter的时候,提示我一堆错误?
    A:第一次make menuconfig生成.config文件之前,先执行一次make mrproper
    注解:
    1、为了生成.config文件,否则以后会有问题
    2、根据README,可以选择base或者extra等参数,这里我们只打基本包
    3、IPV6的东西我没有选,因为我不需要
    4、确认信息和uname -r的版本一致,否则编译的模块不能被现有内核使用
    2005年3月13日
    白金
    ChinaUnix - platinum

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4543/showart_16893.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP