²©¿Íͳ¼ÆÐÅÏ¢

Óû§Ãû£ºsookk
ÎÄÕÂÊý£º169
ÆÀÂÛÊý£º78
·ÃÎÊÁ¿£º250180
ÎÞÓDZңº588
²©¿Í»ý·Ö£º1084
²©¿ÍµÈ¼¶£º5
×¢²áÈÕÆÚ£º2008-08-20

²»±àÒëÄں˼ÓÔØconnlimitÄ£¿é
2010-03-03 23:29:57

ǰÑÔ

RHEL 5 µÄkernel rpm°ü²¢²»°üº¬ÍêÕûµÄsource code£¬ËùÒÔ°´ÕÕÒÔǰ°æ±¾µÄ±àÒë·½·¨ÊDz»Äܳɹ¦µÄ¡£¸ù¾ÝfedoraµÄrelease notesµÄ˵Ã÷£¬ÐèÒªÔö¼ÓеÄÄ£¿éµÄʱºò£¬Ö»ÐèҪн¨Ò»¸öMakefile£¬È»ºómakeÕâ¸öÄ£¿é¾ÍºÃÁË£¨RHEL 5µÄrelease notesÓ¦¸ÃÒ²ÓÐÌáµ½£¬µ«ÎÒûÓвéÖ¤£©£¨fedora 5µÄrelease notes£º [url]http://docs.fedoraproject.org/release-notes/fc5/release-notes-ISO/#id3098172[/url]£©¡£

ϵͳ»·¾³ºÍÏà¹ØÈí¼þ°ü

²Ù×÷ϵͳ£ºRed Hat Enterprise Linux Server release 5 (Tikanga)
ÄÚºËÔ´Âë·¾¶£º/usr/src/kernels/2.6.18-8.el5-i686
iptables-1.4.0.tar.bz2                         #ÏÂÔØµã£º[url]www.netfilter.org[/url]——ÆäʵÎÒÃǽöÐèÒªËûµÄÔ´Âë¶øÒÑ¡£
patch-o-matic-ng-20080214.tar.bz2        #ÏÂÔØµã£º[url]www.kernel.org[/url]——ÎÒdownµÄÊÇ×îеİü¡£
 

±àÒë¹ý³Ì

»ñÈ¡°²×°°ü²¢½âѹ£¨/rootĿ¼ÄÚ£©

#tar xjf iptables-1.4.0.tar.bz2
#tar xjf patch-o-matic-ng-20080214.tar.bz2
#cd /root/patch-o-matic-ng-20080214

ÏÂÔØconnlimitÄ£¿é

#exportÿKERNEL_DIR=/usr/src/kernels/2.6.18-8.el5-i686/  #exportÿIPTABLES_DIR=/root/iptables-1.4.0
#./runme --download
Successfully downloaded external patch geoip
Successfully downloaded external patch condition
Successfully downloaded external patch IPMARK
Successfully downloaded external patch ROUTE
Successfully downloaded external patch connlimit
Successfully downloaded external patch ipp2p
Successfully downloaded external patch time
./patchlets/ipv4options exists and is not external
./patchlets/TARPIT exists and is not external
Successfully downloaded external patch ACCOUNT
Successfully downloaded external patch pknock
Loading patchlet definitions......................... done
 
 
Excellent! Source trees are ready for compilation.

Ó¦ÓÃconnlimit²¹¶¡µ½ÄÚºË

#export KERNEL_DIR=/usr/src/kernels/2.6.18-8.el5-i686/ 
#export IPTABLES_DIR=/root/iptables-1.4.0
#./runme connlimit
Loading patchlet definitions......................... done
Welcome to Patch-o-matic ($Revision: 6736 $)!
 
Kernel:   2.6.18, /usr/src/kernels/2.6.18-8.el5-i686/
Iptables: 1.4.0, /root/iptables-1.4.0
Each patch is a new feature: many have minimal impact, some do not.
Almost every one has bugs, so don't apply what you don't need!
-------------------------------------------------------
Already applied:
Testing connlimit... not applied
The connlimit patch:
   Author: Gerd Knorr <kraxel@bytesex.org>
   Status: ItWorksForMe[tm]
 
This adds an iptables match which allows you to restrict the
number of parallel TCP connections to a server per client IP address
(or address block).
 
Examples:
 
# allow 2 telnet connections per client host
iptables -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT
 
# you can also match the other way around:
iptables -p tcp --syn --dport 23 -m connlimit ! --connlimit-above 2 -j ACCEPT
 
# limit the nr of parallel http requests to 16 per class C sized
# network (24 bit netmask)
iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 \
        --connlimit-mask 24 -j REJECT
-----------------------------------------------------------------
Do you want to apply this patch [N/y/t/f/a/r/b/w/q/?] y
 
Excellent! Source trees are ready for compilation.

 

¿ªÊ¼±àÒëÄ£¿é

#cd /usr/src/kernels/2.6.18-8.el5-i686
#make oldconfig

[root@connlimit 2.6.18-8.el5-i686]# make oldconfig
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/kxgettext.o
  HOSTCC  scripts/kconfig/mconf.o
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTLD  scripts/kconfig/conf
scripts/kconfig/conf -o arch/i386/Kconfig
*
* Linux Kernel Configuration
*
*
* Code maturity level options
*
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [Y/n/?] y
…………………………………………………………………………………………………………
                                 Ê¡ÂÔ´óÁ¿Êä³ö
…………………………………………………………………………………………………………
*    ARP tables support (IP_NF_ARPTABLES) [M/n/?] m
      ARP packet filtering (IP_NF_ARPFILTER) [M/n/?] m
      ARP payload mangling (IP_NF_ARP_MANGLE) [M/n/?] m
    Connections/IP limit match support (IP_NF_MATCH_CONNLIMIT) [N/m/?] (NEW) m
    *
    * IPv6: Netfilter Configuration (EXPERIMENTAL)
    *
    IP6 Userspace queueing via NETLINK (OBSOLETE) (IP6_NF_QUEUE) [M/n/?] m
…………………………………………………………………………………………………………
                                 Ê¡ÂÔ´óÁ¿Êä³ö
…………………………………………………………………………………………………………
 
* General setup
*
#
# configuration written to .config
#

 
ÌáʾмÓÈëÁËconnlimitµÄÑ¡ÏÎÊÊÇ·ñÐèÒª±àÒë½øÈëÄں˵Äʱºò£¬ÊäÈë“m”£¬±àÒëΪģ¿é¡£
#make modules_prepare      ####Õâ²½ÊǸÉÂðµÄ£¿£¿£¿ÎÒ²»ÖªµÀ£¬Ò²Ã»ÓÐϸ¾¿£¬ÀÏʵִÐÐÁË¡£
#mv net/ipv4/netfilter/Makefile net/ipv4/netfilter/Makefile.orig      ####±¸·ÝÔ­À´µÄMakefile£¬ÀïÃæ°üº¬ÁËԭʼµÄ±àÒëÐÅÏ¢£¬Ö±½Ó±àÒë»áÎÞ·¨Í¨¹ý¡£
´´½¨ÐµÄMakefile

#vi net/ipv4/netfilter/Makefile

 

obj-m := ipt_connlimit.o
 
KDIR  := /lib/modules/$(shell uname -r)/build
PWD   := $(shell pwd)
 
default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules
 

È»ºó±àÒë¸ÃÄ£¿é£º
#make M=net/ipv4/netfilter/

[root@connlimit 2.6.18-8.el5-i686]# make M=net/ipv4/netfilter/
  LD      net/ipv4/netfilter/built-in.o
  CC [M]  net/ipv4/netfilter/ipt_connlimit.o
  Building modules, stage 2.
  MODPOST
  CC      net/ipv4/netfilter/ipt_connlimit.mod.o
  LD [M]  net/ipv4/netfilter/ipt_connlimit.ko

½«Éú³ÉµÄkoÄ£¿écopyµ½Ä¿±êµØÖ·£¬²¢ÉèÖÃȨÏÞ

#cp net/ipv4/netfilter/ipt_connlimit.ko /lib/modules/2.6.18-8.el5/kernel/net/ipv4/netfilter/
#chmod 744 /lib/modules/2.6.18-8.el5/kernel/net/ipv4/netfilter/ipt_connlimit.ko

µ½ÕâÀģ¿é±àÒëÍê³É¡£

²âÊÔ²¢Ó¦ÓÃеÄÄ£¿é

ÓÃdepmod –a ²âÊÔconnlimitÄ£¿éÊÇ·ñ¼æÈÝ

# depmod –a

¼ÓÔØconnlimitÄ£¿é

#modprobe ipt_connlimit

²é¿´ÊÇ·ñ¼ÓÔØ³É¹¦

[root@connlimit 2.6.18-8.el5-i686]# lsmod |grep ip
ipt_connlimit           7680  0
ip_conntrack           53153  1 ipt_connlimit
nfnetlink              10713  1 ip_conntrack
ipv6                  251137  12
ipt_REJECT              9537  0
x_tables               17349  3 ipt_connlimit,ipt_REJECT,xt_tcpudp

OK£¬Ä£¿éÒѾ­¿ÉÒÔÕý³£Ê¹ÓÃÁË
ÏÂÃæ²âÊÔһϣº
Ó¦ÓùæÔò£º
1£®              ÈκÎÒ»¸öIP¶Ô80¶Ë¿ÚµÄ·ÃÎÊÎÞ·¨³¬¹ý32¸öÁ¬½Ó
#iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 32 -j REJECT
2£®              ±£»¤WEB£¬·Àֹ̫¶àÁ¬½Ó
# iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 32 -j DROP
²é¿´²ßÂÔÊÇ·ñÓ¦Óóɹ¦

[root@connlimit 2.6.18-8.el5-i686]# iptables -L -n
 

·ÖÏíÖÁ
¸ü¶à
Ò»¼üÊղأ¬ËæÊ±²é¿´£¬·ÖÏíºÃÓÑ£¡
djyou¡¢win_linux
2ÈË
ÁËÕâÆªÎÄÕÂ
Àà±ð£ºLinux©ª¼¼ÊõȦ()©ªÔĶÁ()©ªÆÀÂÛ() ©ª ÍÆË͵½¼¼ÊõȦ©ª·µ»ØÊ×Ò³

ÎÄÕÂÆÀÂÛ

 
2011-03-24 15:32:32
make M=net/ipv4/netfilter/

WARNING: Symbol version dump /usr/src/linux-2.6.18.i686/Module.symvers
      is missing; modules will have no dependencies and modversions.

make[1]: *** ûÓйæÔò¿ÉÒÔ´´½¨¡°net/ipv4/netfilter/ipt_connlimit.o¡±ÐèÒªµÄÄ¿±ê¡°net/ipv4/netfilter/ipt_connlimit.c¡±¡£ Í£Ö¹¡£
make: *** [_module_net/ipv4/netfilter] ´íÎó 2
  °´ÕÕÄãµÄÎĵµÎªÊ²Ã´³öÏÖÕâ¸öÇé¿öàÅ£¿
²©Ö÷»Ø¸´:
2011-06-28 09:32:45
×Ðϸ²éѯÏÂÄãµÄÄÚºËÔ´Âë¶ÔÓ¦ÊÇ·ñÕýÈ·

 

·¢±íÆÀÂÛ            

¡¾¼¼ÊõÃÅÕר¼Ò½âÎö£ºÈí¿¼ÖØµãÄѵ㼰ӦÊÔ¼¼ÇÉ
êÇ  ³Æ£º
µÇ¼  ¿ìËÙ×¢²á
ÑéÖ¤Â룺

Çëµã»÷ºóÊäÈëÑéÖ¤Â벩¿Í¹ý2¼¶£¬ÎÞÐèÌîдÑéÖ¤Âë

ÄÚ  ÈÝ£º