如何给iptables添加模块v2.2(含视频教程)

发表于:2007-07-04来源:作者:点击数: 标签:
我经过反复的试验,终于成功了! 我没有编译整个内核,只编译了netfilter部分,内核沿用目前的即可,大大缩短了编译时间。 欢迎大家下载,有什么不足之处,恳请大家指出! 下载地址 手册(62kB) http://ftp.jyt.com.cn/baijin/book/netfilter-extensions-HO

我经过反复的试验,终于成功了!
我没有编译整个内核,只编译了netfilter部分,内核沿用目前的即可,大大缩短了编译时间。
欢迎大家下载,有什么不足之处,恳请大家指出!

下载地址

手册(62kB)
http://ftp.jyt.com.cn/baijin/book/netfilter-extensions-HOWTO-CN.pdf

视频教程(7.1MB)
http://ftp.jyt.com.cn/baijin/book/netfilter-extensions-HOWTO-VIDEO.rar

 bjchenxu 回复于:2005-03-05 11:53:14
祝贺platinum功力大进,修成正果,呵呵

 platinum 回复于:2005-03-05 12:26:27
chenxu哥又开我玩笑了 :em06:

 零二年的夏天 回复于:2005-03-05 22:01:01
怎么最近流行pdf?

 freeand 回复于:2005-03-05 23:15:39
2.6内核呢

 haohaoo 回复于:2005-03-06 01:37:21
都用什么做PDF?

 platinum 回复于:2005-03-06 03:02:24
因为一直处于观望状态,所以2.6的内核没研究过
我用的是PDF_FactoryPro210chs.exe来转的,虚拟出一个打印机来,直接打印输出成PDF就可以了

iptables -A FORWARD -s 192.168.1.0/24 -m time --timestart 8:00 --timestop 18:00 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -m string --string "sex" -j DROP
iptables -A FORWARD -s 192.168.1.0/24 -m ipp2p --edk --bit -j DROP
iptables -A FORWARD -m iprange --src-range 192.168.1.120-192.168.1.131 -j DROP
……

这些策略用起来真爽!

 lukhxw 回复于:2005-03-06 06:14:06
platinum  兄,你的那个pdf 不能下呀!不大吧!
要不你发到我的 e-mail:lukhxw@gmail.com and lukhxw@21cn.com
ok!!!

 llzqq 回复于:2005-03-06 09:03:08
祝贺啊,我要文档

 wallace888 回复于:2005-03-06 09:03:11
我也下载不到了哈!希望能给我发一份哟!
game888◎yeah.net

 llzqq 回复于:2005-03-06 09:13:59
现在能下了,嘿嘿

 llzqq 回复于:2005-03-06 10:57:11
# make modules SUBDIRS=net/ipv4/netfilter

ip_nat_pptp.o ip_nat_pptp.c
ip_nat_pptp.c: In function `pptp_nat_expected':
ip_nat_pptp.c:131: too few arguments to function `ip_nat_setup_info_R8c274bd7'
make[1]: *** [ip_nat_pptp.o] Error 1
make[1]: Leaving directory `/usr/src nux-2.4.21-27.0.2.EL/net/ipv4/netfilter'
make: *** [_mod_net/ipv4/netfilter] Error 2

 llzqq 回复于:2005-03-06 11:01:41
ip_nat_amanda.c: In function `amanda_nat_expected':
ip_nat_amanda.c:90: too few arguments to function `ip_nat_setup_info_R8c274bd7'
make[1]: *** [ip_nat_amanda.o] Error 1
make[1]: Leaving directory `/usr/src/linux-2.4.21-27.0.2.EL/net/ipv4/netfilter'
make: *** [_mod_net/ipv4/netfilter] Error 2

 ydlhero 回复于:2005-03-06 11:24:29
支持 原创

 platinum 回复于:2005-03-06 13:14:52
llzqq,升级你的modutils到最新的2.4.27试试
然后你直接这样,确保你系统没问题
1、make mrproper
2、make menuconfig(什么都不选,保存退出)
3、make dep
4、make modules SUBDIRS=net/ipv4/netfilter
如果有问题,就是系统自身的问题了
如果没问题,选择模块的时候尽量少,因为[color=red:cbc6d762ea]有可能[/color:cbc6d762ea]会造成冲突

 lihn 回复于:2005-03-06 13:15:49
呵呵,有空试试

 llzqq 回复于:2005-03-06 13:20:32
[quote:c442a40f48="platinum"]嵩斐沙逋籟/quote:c442a40f48]

知道了,我试一下

 llzqq 回复于:2005-03-06 14:39:47
安装IPTABLE是又出错了:

extensions/libip6t_random.c:144: request for member `save' in something not a structure or union
extensions/libip6t_random.c:144: initializer element is not constant
extensions/libip6t_random.c:144: (near initialization for `rand_match.print')

 platinum 回复于:2005-03-06 15:06:09
我也遇到过
你看看extensions下已经编译出来的模块,然后直接cp到/lib/iptables里试试

这样的现象,根据我的经验,一般是iptables与内核源码模块冲突所致

另外,有可能iptables需要检查netfilter的ipv4和ipv6版本
所以你恐怕还要make modules SUBDIRS=net/ipv6/netfilter才行

 惠繪洋 回复于:2005-03-06 15:06:18
謝謝樓主, 很好的參考文件. :)

 ljily000 回复于:2005-03-06 15:34:37
[quote:2e92480dca="platinum"]
iptables -A FORWARD -s 192.168.1.0/24 -m time --timestart 8:00 --t..........[/quote:2e92480dca]


看起来很爽哟!
platinum大哥能否讲讲iptables的这些扩展模块!

 牙齿晒太阳 回复于:2005-03-06 15:34:38
[quote:771efea653="platinum"]
因为抄袭,且恶意删除、篡改作者版权的人太多了 :em08: 
而且这样保存文档比较方便 :em03:[/quote:771efea653]

solidconverter_pdf  可以将PDF转换成word。。。。

 :em06:  :em06:  :em06:

 platinum 回复于:2005-03-06 15:37:13
[quote:2b0bfe15be="牙齿晒太阳"]

solidconverter_pdf &可以将PDF转换成word。。。。

 :em06: :em06: :em06:[/quote:2b0bfe15be]
 :shock: 

 :em16:

 platinum 回复于:2005-03-06 15:38:36
[quote:e17a9ce085="ljily000"]


看起来很爽哟!
platinum大哥能否讲讲iptables的这些扩展模块![/quote:e17a9ce085]
这些东西,你可以去iptables-1.x.x/extensions里面,看他们的man文件
写的很详细

因为东西实在太多太多了,所以还是自己看的好
而且也可以锻炼自己的自学能力和英语阅读能力 :em06:

 牙齿晒太阳 回复于:2005-03-06 15:48:32
[quote:d66b402088="platinum"]因为一直处于观望状态,所以2.6的内核没研究过
我用的是PDF_FactoryPro210chs.exe来转的,虚拟出一个打印机来,直接打印输出成PDF就可以了

iptables -A FORWARD -s 192.168.1.0/24 -m time --timestart 8:00 --t..........[/quote:d66b402088]


坏蛋阿  :em22:  :em22:  :em22:

 網中人 回复于:2005-03-06 19:33:51
[quote:b44707b7ae="platinum"]因为抄袭,且恶意删除、篡改作者版权的人太多了 :em08: 
而且这样保存文档比较方便 :em03:[/quote:b44707b7ae]
嗯... 問一下 platinum 兄:
請問你寫文檔的目的是甚麼呢?
若是推廣, 那, 我覺得你不必計較那些啊.
若是別的, 我就沒啥意見了....

一些個人心得啦. 別介意.

 platinum 回复于:2005-03-06 19:50:44
是推广,主要是更便于保存
这样就不会再像原来一样“文件、另存为”了
且不用再复制URL过来、复制URL过去了
网兄说的对 :em02:

 jiyu2004 回复于:2005-03-06 20:53:15
祝贺,要好好地研究一下了

 platinum 回复于:2005-03-06 21:33:44
我这里没有环境
哪位再研究一下kernel 2.6.x的环境下的patch方式

 llzqq 回复于:2005-03-07 11:50:53
# make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install

.......
extensions/libip6t_random.c:144: request for member `save' in something not a structure or union
extensions/libip6t_random.c:144: initializer element is not constant
extensions/libip6t_random.c:144: (near initialization for `rand_match.print')
make: *** [extensions/libip6t_random_sh.o] Error 1

 lihn 回复于:2005-03-07 12:10:24
我的也是这个错误,还不如编译内核呢

 platinum 回复于:2005-03-07 12:20:45
编译iptables时候出现的问题吧?
尝试编译ipv6模块,因为iptables在编译的时候需要调用kernel里面的ipv6库,所以,即使不使用ipv6,也仍然要
make modules SUBDIRS=net/ipv6/netfilter
然后再试试呢?

另外一个方法,如果编译到ipv6的时候出错,不要紧,因为ipv4的模块应该已经编译出来了,那么就先用普通升级iptables的方法,先升级iptables,然后用上面的方法再编译iptables,然后手动复制到/lib/iptables里面试

 shitian8848 回复于:2005-03-07 12:28:53
呵呵,谢谢白金兄的新点子,改天我也试试.
^-^

 lihn 回复于:2005-03-07 14:34:30
我按照文档安装完后执行iptables -A FORWARD -s 192.168.1.0/24 -m time --timestart 8:00 --timestop 18:00 -j ACCEPT 
提示我:
iptables v1.2.8: Couldn't load match `time':/lib/iptables/libipt_time.so: cannot open shared object file: No such file or directory
怎么解决?

Try `iptables -h' or 'iptables --help' for more information.

 platinum 回复于:2005-03-07 14:37:18
[quote:becb40f738="lihn"]我按照文档安装完后执行iptables -A FORWARD -s 192.168.1.0/24 -m time --timestart 8:00 --timestop 18:00 -j ACCEPT 
提示我:
iptables v1.2.8: Couldn't load match `time':/lib/iptables/libipt_time.so: can..........[/quote:becb40f738]
你的iptables里面编译出来的libipt_time.so没有复制到/lib/iptables里面

 lihn 回复于:2005-03-07 14:46:18
呵呵,我把ipt_time编译到内核里了。在/lib/modules/2.4.21-15.EL/kernel/net/ipv4/netfilter/里。但还是提示:
Couldn't load match `time':/lib/iptables/libipt_time.so: cannot open shared object file: No such file or directory

 platinum 回复于:2005-03-07 14:51:22
[quote:5b82921fe4="platinum"]
你的iptables里面编译出来的libipt_time.so没有复制到/lib/iptables里面[/quote:5b82921fe4]
我说的不是内核,是iptables里面的模块

 lihn 回复于:2005-03-07 16:10:21
[quote:b073a0a2ca="platinum"]编译iptables时候出现的问题吧?
尝试编译ipv6模块,因为iptables在编译的时候需要调用kernel里面的ipv6库,所以,即使不使用ipv6,也仍然要
make modules SUBDIRS=net/ipv6/netfilter
然后再试试呢?
那么就先用普通升级iptables的方法,先升级iptables,然后用上面的方法再编译iptables
另外一?.........[/quote:b073a0a2ca]
具体怎么升级iptables和编译?

 platinum 回复于:2005-03-07 16:46:16
里面有INSTALL,可以看看

 speed_fj 回复于:2005-03-07 17:21:14
支持

 platinum 回复于:2005-03-07 23:12:09
那个文档我又修改了,现在是2.1版本,又增加了2个例子和一堆FAQ,相信遇到问题的朋友这下能解决了 ^_^

 lihn 回复于:2005-03-08 10:20:54
2。6内核如何做?

 llzqq 回复于:2005-03-08 11:57:29
终于做圆满了,多谢白金兄弟啊

 platinum 回复于:2005-03-08 12:01:43
你的最后是什么问题?怎么解决的?问题在我那个FAQ的范围之内吗?

 llzqq 回复于:2005-03-08 12:03:15
一部分在FAQ,一部分自己解决的

 llzqq 回复于:2005-03-08 12:03:52
QQ

 platinum 回复于:2005-03-08 12:05:35
好,你QQ里告诉我,然后我再完善一下文档

 llzqq 回复于:2005-03-08 12:06:58
不能确定我的做法是正道!

 platinum 回复于:2005-03-08 12:09:08
我的FAQ里面也很多可能不是正道,不过确实能解决
稍等,我在甲方这里调网呢,QQ正在下载中……

 lihn 回复于:2005-03-08 12:09:20
讲讲详细过程啊

 platinum 回复于:2005-03-08 12:35:15
http://www.netfilter.org/files/changes-iptables-1.3.1.txt
[quote:924de6a41d]
iptables v1.3.1 Changelog
======================================================================
This version requires kernel >= 2.4.4
This version recommends kernel >= 2.4.18

Bugs fixed from 1.3.0:

- Fix CLUSTERIP rule deletion
[ Pablo Neira ]

- Fix libip6t_random compilation
[ Harald Welte ]

- Fix CONNMARK on 32bit userspace / 64bit kernel archs
[ Pablo Neira ]

Changes from 1.3.0:

- remove bogus NFC_* stuff in iptables
[ Pablo Neira ]

- libiptc: don't sort builtin chains, restores iptables-1.2.x sort order
[ Olaf Rempel ]


Please note: Since version 1.2.7a, patch-o-matic is now no longer part of
iptables but rather distributed as a seperate package
(ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot)
[/quote:924de6a41d]
看来那个FAQ里面写的random的IPV6模块的问题,是iptables-1.3.0造成的,现在出了1.3.1,弥补了这个BUG
llzqq遇到的问题也类似,但不是那个模块

大家换用iptables-1.3.1应该会好些

 mb 回复于:2005-03-09 09:27:18
大家弄弄2.6内核吧

 hongfengyue 回复于:2005-03-09 10:07:16
我来作2.6的,完成后告诉大家。
估计明天有空

 platinum 回复于:2005-03-09 10:16:38
kernel 2.6.x HOWTO就交给红桃K了 :em02:

 mb 回复于:2005-03-09 10:37:08
:D  期待着

 lihn 回复于:2005-03-09 15:29:52
我全部编译完成后运行:
iptables -A FORWARD -s 192.168.1.0/24 -m ipp2p --edk --bit -j DROP 
提示我iptables v1.3.1: Couldn't load match `ipp2p':/usr/local/lib/iptables/libipt_ipp2p.so: cannot open shared object file: No such file or directory
但我把模块安装到了/lib/iptables里面了。模块文件也有啊。

 mb 回复于:2005-03-09 15:40:04
你编译iptables了?
cp到 /usr/local/lib/iptables/ 下

 mb 回复于:2005-03-09 15:43:41
2.6内核上开门不顺呀 :em10: 
make modules SUBDIRS=net/ipv4/netfilter
scripts/Makefile.build:36: kbuild: net/ipv4/netfilter/Makefile - Usage of export-objs is obsolete in 2.6. Please fix!
  Building modules, stage 2.
  MODPOST

 lihn 回复于:2005-03-09 15:44:55
已经cp到 /usr/local/lib/iptables/ 下了。还是不行
而且运行 iptables -L时候提示:
iptables v1.3.1: can't initialize iptables table `filter': Module is wrong version
Perhaps iptables or your kernel needs to be upgraded.

 platinum 回复于:2005-03-09 15:45:52
[quote:adc9dd8d12="lihn"]我全部编译完成后运行:
iptables -A FORWARD -s 192.168.1.0/24 -m ipp2p --edk --bit -j DROP 
提示我iptables v1.3.1: Couldn't load match `ipp2p':/usr/local/lib/iptables/libipt_ipp2p.so: cannot open sha..........[/quote:adc9dd8d12]
iptables的Makefile好像有BUG,虽然指定了LIB=/sbin,但是有时候还会装到/usr/local/lib下
所以我在文档里加了一步ln -s /lib/iptables /usr/local/lib/iptables
你一定没做这步吧?

 hongfengyue 回复于:2005-03-09 15:52:03
kernel 2.6开门不顺呀!!
首先string 这个好功能不支持kernel2.6的内核,气死我了!!!!!!!!!
还在进一步研究中,发现编译iptables会产生很多错误。

明天搞了。

 lihn 回复于:2005-03-09 17:10:58
[quote:24042dddb7="platinum"]
iptables的Makefile好像有BUG,虽然指定了LIB=/sbin,但是有时候还会装到/usr/local/lib下
所以我在文档里加了一步ln -s /lib/iptables /usr/local/lib/iptables
你一定没做这步吧?[/quote:24042dddb7]
ln -s /lib/iptables /usr/local/lib/iptables也运行了。

我把/lib/iptables下的libipt_ipp2p.so /usr/local/lib/iptables/ 里就可以运行iptables -A FORWARD -s 192.168.1.0/24 -m ipp2p --edk --bit -j DROP
但是执行iptables -I INPUT -p tcp --dport 23 -m iplimit --iplimit-above 2 -j REJECT是提示:
Segmentation fault
怎么解决?

 platinum 回复于:2005-03-09 17:20:59
ipp2p能用,证明没问题
iplimit不行,可能是因为你没打好那个patch
有的patch确实不能用
我只打了几个:
ipp2p、connlimit、iprange、NETMAP、time、string、l7-layer、geoip
其他我用不到都没加进去,否则容易出乱子

个人感觉,最有用的是ipp2p、iprange、time、string、geoip、l7-layer
connlimit和NETMAP用的不多,但是也会用到

 lihn 回复于:2005-03-09 17:23:03
既然pp2p,time,iprange等能用,那iplimit也应该能用啊。而且在安装过程中也没提示我iplimit模块出错的

 platinum 回复于:2005-03-09 17:32:36
我刚才查了一下netfilter网站,你确定你说的是“iplimit”?
我怎么没查到那个模块呢?

 lihn 回复于:2005-03-09 17:42:48
那我怎么能查看我的iptables加载了那些模块?
还有iptables -I INPUT -p tcp --dport 23 -m connlimit --connlimit-above 2 -j REJECT
和iptables -I INPUT -p tcp --dport 23 -m iplimit --iplimit-above 2 -j REJECT 有什么区别?
iptables -I INPUT -p tcp --dport 23 -m connlimit --connlimit-above 2 -j REJECT可以正常运行

 platinum 回复于:2005-03-09 17:46:49
所有的模块的源代码都在iptables源码的extensions目录下

 lihn 回复于:2005-03-09 17:49:32
明白了,如果想限制每个ip的连接数应该用connlimit

 lihn 回复于:2005-03-10 11:41:37
ipp2p好像不能限制BT啊。一点作用都没有!

 platinum 回复于:2005-03-10 11:50:43
不要说的那么绝对
是ipp2p不行,还是你不行?
我试过,没问题的
不知道你是怎么试的

 platinum 回复于:2005-03-10 11:54:01
[quote:0a46148ce6]
This module matches certain packets in P2P flows. It is not
designed to match all packets belonging to a P2P connection -
use IPP2P together with CONNMARK for this purpose. Also visit
http://www.ipp2p.org for detailed information.

Use it together with -p tcp or -p udp to search these protocols
only or without -p switch to search packets of both protocols.

IPP2P provides the following options:
.TP
.B "--edk "
Matches as many eDonkey/eMule packets as possible.
.TP
.B "--kazaa "
Matches as many KaZaA packets as possible.
.TP
.B "--gnu "
Matches as many Gnutella packets as possible.
.TP
.B "--dc "
Matches as many Direct Connect packets as possible.
.TP
.B "--bit "
Matches BitTorrent packets.
.TP
.B "--apple "
Matches AppleJuice packets.
.TP
.B "--soul "
Matches some SoulSeek packets. Considered as beta, use careful!
.TP
.B "--winmx "
Matches some WinMX packets. Considered as beta, use careful!
.TP
.B "--ares "
Matches Ares and AresLite packets. Use together with -j DROP only.
.TP
.B "--ipp2p "
Short hand for: --edk --kazaa --gnu --dc
.TP
.B "--debug "
Prints some information about each hit into kernel logfile. May
produce huge logfiles so beware!
[/quote:0a46148ce6]

[quote:0a46148ce6]
Detects some P2P packets
Author: Eicke Friedrich <ipp2p@ipp2p.org>  
Status: Stable 


This option makes possible to match some P2P packets
therefore helps controlling such traffic. Dropping all
matches prohibits P2P networks. Combined with conntrack,
CONNMARK and a packet scheduler it can be used for
accounting or shaping of P2P traffic.

Examples:
iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP
[/quote:0a46148ce6]

 hongfengyue 回复于:2005-03-10 12:24:46
http://bbs.chinaunix.net/forum/viewtopic.php?t=508312&show_type=new
上面是iptables添加模块在kernel 2.6的环境中,希望大家指正。
谢谢!!

 platinum 回复于:2005-03-10 12:26:13
红桃K,搞定了??

 hongfengyue 回复于:2005-03-10 12:46:42
嗯,就是string模块不能使用。气死我了。

 lihn 回复于:2005-03-10 13:15:38
能发个iptables的脚本吗?可以是我的教本有问题

 platinum 回复于:2005-03-13 13:50:53
更新了一下安装手册
新添加了一个视频教程
这样就更直观了(详见顶楼贴子)

 LEOD 回复于:2005-03-14 11:41:39
[quote:a1d4ead2c0="platinum"]因为一直处于观望状态,所以2.6的内核没研究过
我用的是PDF_FactoryPro210chs.exe来转的,虚拟出一个打印机来,直接打印输出成PDF就可以了

iptables -A FORWARD -s 192.168.1.0/24 -m time --timestart 8:00 --t..........[/quote:a1d4ead2c0]

这些都加起来CPU的利用率怎么样?

 platinum 回复于:2005-03-14 12:18:26
string、l7-layer比较耗费CPU
具体耗费多少,我没统计过,但是一定和数据包流量有关,也和策略的顺序(执行效率)有关

 nj130 回复于:2005-03-16 12:57:27
很好。。。。顶。。。。

 ht11 回复于:2005-03-24 21:49:50
好帖!!!强~~~终于找到了,已经感动的无以伦比了- -看PDF和视频去了,哇哈哈!!!!

 wchun 回复于:2005-05-30 11:42:48
原有系统上的iptables rpm要不要删?

rpm -e iptables 
提示redhat-config-secure依赖

 yzr963229cu 回复于:2005-05-31 01:28:23
我的编译成功了,但重启RH3系统,提示iptables出错,NAT共享上网这一句有问题(如下)
-A POSTROUTING -s 192.168.20.0/24 -o ppp0 -j MASQUERADE
但这个在添加模块前是正确的,能提供NAT共享上网啊?

 yzr963229cu 回复于:2005-05-31 08:08:21
添加模块后iptables能用webmin进行配置么?

 我自逍遥 回复于:2005-05-31 08:33:51
祝贺一下。已收。

 wchun 回复于:2005-05-31 10:13:58
[quote:b4b4453b98="yzr963229cu"]我的编译成功了,但重启RH3系统,提示iptables出错,NAT共享上网这一句有问题(如下)
-A POSTROUTING -s 192.168.20.0/24 -o ppp0 -j MASQUERADE
但这个在添加模块前是正确的,能提供NAT共享上网啊?[/quote:b4b4453b98]

看看这里!
http://bbs.chinaunix.net/forum/viewtopic.php?t=544835

 yzr963229cu 回复于:2005-05-31 15:02:15
问题解决,信息太多,一些重要的没看到,其实我已经收集到了,谢谢各位!
但,还有个问题:
“添加模块后iptables能用webmin进行配置么?好像webmin里面没什么变化?比如iprage怎么在webmin中设置”

 platinum 回复于:2005-05-31 15:31:12
[quote:f6e8f65ca8="yzr963229cu"]问题解决,信息太多,一些重要的没看到,其实我已经收集到了,谢谢各位!
但,还有个问题:
“添加模块后iptables能用webmin进行配置么?好像webmin里面没什么变化?比如iprage怎么在webmin中设置”[/quote:f6e8f65ca8]
举个例子好了
假如学校购买了一批校服,都是标准码(无一例外),而偏偏你是一个大胖子
试问,那些衣服你能穿吗?

 yzr963229cu 回复于:2005-05-31 20:56:03
platinum,很高兴你回复,webmin现在版本是不是还不支持这个?

 platinum 回复于:2005-05-31 20:58:03
很抱歉,webmin 这个东西,我从来不碰的 ^_^

 yzr963229cu 回复于:2005-06-01 10:46:07
觉得刚入门,用用webmin挺好

原文转自:http://www.ltesting.net