使用Iptables进行并发连接限制

运维 系统运维
使用Iptables进行并发连接限制:Iptables是Linux内核的一部分,他是Linux内核集成的IP信息包过滤系统。本文讲述的是如何使用Iptables进行并发连接限制

  用Iptables进行并发连接限制

  Iptables是一个内核状态的防火墙,也就是说它是Linux内核的一部分,所以它的功能异常强大,效率非常高。

  进入/usr/src/linux-2.6.18.8进行内核编译。

  1.   cd /usr/src/linux-2.6.18.8  
  2.  

  make mrproper #确保源代码目录下没有不正确的.o文件

  make menuconfig #内核配置,这步最重要,成不成在此一举呀。这是编译内核最麻烦的地方,不是特别熟悉的话最好先看看这些选项的意思,最好是把SELinux给关掉。如果是用vmware虚拟机的话,记住一定要选中SCSI里的LSI Logic和BusLogic相关的驱动。

  1.   make  
  2.  
  3.   make modules_install  
  4.  
  5.   depmod –a #生成模块依赖关系  
  6.  

  到这里我们就编译完成了新的内核,下面就是配置使用用新的内核启动。

  1.   cp /usr/src/linux-2.6.18.8/arch/i386/boot/bzImage /boot/ vmlinuz-2.6.18.8 #压缩的内核文件  
  2.  
  3.   cp /usr/src/linux-2.6.18.8/System.map /boot/System.map-2.6.18.8  
  4.  
  5.   cd /boot  
  6.  

  mkinitrd initrd-2.6.18.8.img #把一些系统启动时需要的模块打包

  添加新的启动项,用新的内核启动系统,这里可以参照原有的启动配置项进行设置,示例:

  用vi /etc/grub.conf打开文件,加入如下内容:

  1.   title Linux-2.6.18.8  
  2.  
  3.   root (hd0,0)  
  4.  
  5.   kernel /vmlinuz-2.6.18.8 ro root=LABEL=/ enforcing=0 
  6.  
  7.   initrd /initrd-2.6.18.8.img  
  8.  

  重新启动计算机,在启动菜单选择我们使用刚才新添加的启动项,启动新的内核。

  相对于2.4的内核来说我感觉2.6的内核编译起来更容易些,一般不会出现什么太大的问题,编译完成后能够正常的启动。

  Iptables有许多模块,一些不成熟的模块是以patch-o-matic的形式存在的,个人理解就是内核补丁。等这些模块代码成熟后就后直接加入内核。这里我们介绍一个限制每个IP并发连接的模块,就connlimit,这个模块还是以patch-o-matic的形式存在的,所以如果我们想要使用这个模块需要以内核补丁的形式加入到内核源码中,然后再通过编译内核,把它们编译成内核模块的形式使用。

  下面我们以linux-2.6.18-8+Iptables-1.3.7为主来说说编译内核使用connlimit。为什么要用linux-2.6.18-8内核呢?因为目前最流行的RedHat最新企业版本也就是5.0版本使用的就是2.6.18-8内核,这对后面升级操作系统后使用这个功能可能更方便一点。

  软件下载后,可以通过SSH文件传输客户端把它们上传到Linux的/usr/src目录下,然后进行解压,命令如下:

  1.   tax –jxvf linux-2.6.18.8.tar.bz2  
  2.  
  3.   tar –jxvf iptables-1.3.7.tar.bz2  
  4.  
  5.   tar –jxvf patch-o-matic-ng-20070414.tar.bz2  
  6.  

  进入patch-o-matic-ng,为内核打补丁:

  1.   cd /usr/src/patch-o-matic-ng-  
  2.  
  3.   ./runme --download  
  4.  
  5.   KERNEL_DIR=/usr/src/linux-2.6.18.8 IPTABLES_DIR=/usr/src/iptables-1.3.7 ./runme connlimit  
  6.  

      重新进入Linux后我们就可以编译安装Iptables了。

  1.   cd /usr/src/iptables-1.3.7  
  2.  
  3.   export KERNEL_DIR=/usr/src/linux-2.6.18.8  
  4.  
  5.   export IPTABLES_DIR=/usr/src/iptables-1.3.7  
  6.  
  7.   make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install  
  8.  

  现在就可以进行设置试一下了,输入以下命令:

  1.   iptables –A INPUT –p tcp –dport 22 –m connlimit –connlimit-above 2 –j REJECT  
  2.  

  这条命令是允许每个IP最多有2个连接到本机的22端口。

  好了,赶快用SSH试一下吧,看看超过两个连接还能不能连接上。

  另外,网上有人提供了RHEL4.4的connlimit RPM包,直接安装上就可以使用,不过这些包都基于特定内核的,所以下载的时候一定要先用:uname –r看一下自己的内核版本,下载适合自己内核版本的RPM包。

【编辑推荐】

Iptables的基本语法规则

iptables的编译

iptables在Red Hat上的安装

责任编辑:zhaolei 来源: IT专家网
相关推荐

2021-03-05 00:06:12

Docker容器内存

2011-03-17 15:16:38

2011-03-17 15:02:48

2011-03-14 16:05:52

IPtables流量

2019-08-27 08:32:01

nginx访问频率下载速率

2011-03-31 14:28:15

2011-03-31 13:40:36

MRTGsquid流量

2010-04-16 16:29:57

Unix操作系统

2011-03-31 13:40:48

2011-03-17 12:25:55

iptables ft

2011-03-15 14:50:03

使用IPTables

2011-03-31 13:40:48

MRTGsquid流量

2023-11-21 16:29:06

2011-03-15 15:33:26

IPtablesBT电驴

2009-02-09 10:02:00

远程终端服务

2017-03-02 10:10:34

2018-01-03 10:43:41

2021-08-01 15:26:59

协程Asyncio并发数

2010-01-13 18:23:46

2011-03-16 09:05:29

iptablesNAT
点赞
收藏

51CTO技术栈公众号