iptables 添加模块HOWTO
创始人
2024-07-23 03:52:08
0

为自己的iptables文档添加一个模块:HOWTO 我在这里为大家介绍下这个模块。

  这个文档很简单,只有“准备工作”和“安装步骤”两部分,在这里我要特别感谢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)

  如何给iptables添加模块(v2.2)

  2 / 4

  一路“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

  如何给iptables添加模块(v2.2)

  3 / 4

  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]#

#p#

  二、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文件中,可以看到一个监测信息,屏蔽掉即可

  如何给iptables添加模块(v2.2)

  4 / 4

  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的版本一致,否则编译的模块不能被现有内核使用

通过文章介绍和问答的形式,我们可以清楚的知道iptables文档模块HOWTO,希望本文对大家有用!

【编辑推荐】

  • netfilter/iptables模块功能介绍
  • iptables 源码分析
  • iptables 总结与应用心得
  • 如何利用netfilter/iptables构建防火墙
  • Iptables 命令和命令说明
  • squid+iptables网关防火墙的实现
  • Iptables 实例分析
  • Iptables 配置指南

 

 

 

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...