免费注册 查看新帖 |

Chinaunix

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

[网络管理] 关于connlimit的时间期限 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-02 12:51 |只看该作者 |倒序浏览
关于connlimit的解释:
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).

翻译:这个增加一个iptables匹配允许你限制每个客户ip地址的并发tcp连接,即同时连接到一个服务器个数.

Examples: 例子:

# allow 2 telnet connections per client host (允许每个客户机同时两个telnet连接)

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 (这下面例子限制80端口最多同时16个连接请求)

# network (24 bit netmask)

iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j REJECT

模块 connlimit 作用:连接限制

--connlimit-above n 限制为多少个

--connlimit-mask n 这组主机的掩码,默认是connlimit-mask 32 ,即每ip.

这个主要可以限制内网用户的网络使用,对服务器而言则可以限制每个ip发起的连接数...比较实用

例如:只允许每个ip同时5个80端口转发,超过的丢弃:

iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP

例如:只允许每组C类ip同时10个80端口转发:

iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 24 -j DROP

例如:为了防止DOS太多连接进来,那么可以允许最多15个初始连接,超过的丢弃.

/sbin/iptables -A INPUT -s 192.186.1.0/24 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP

/sbin/iptables -A INPUT -s 192.186.1.0/24 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT



=================================================
我想问一下的是,比如这条规则例如:只允许每个ip同时5个80端口转发,超过的丢弃:

iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP
有没有时间概念的?每个ip同时5个80,是怎么的一个时间概念??同时不知道该何理解!

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
2 [报告]
发表于 2007-07-02 13:39 |只看该作者
按照我的理解,应该就是每个IP最多5条链接,譬如5条TCP会话。
但是不清楚尚未建立的会话算不算,应该是不算的。

论坛徽章:
0
3 [报告]
发表于 2007-07-02 13:48 |只看该作者
iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP
那比如上面这条规则,不可能我每台电脑永远就只允许5个新的连接吧??
这样的理论好像不对啊,我用光5个只后,就不能再用了?我觉得应该有个时间概念或范围吧!

论坛徽章:
0
4 [报告]
发表于 2007-07-02 21:44 |只看该作者
哪位高手来指点一下啊!!

论坛徽章:
0
5 [报告]
发表于 2007-07-02 21:54 |只看该作者
iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP
那比如上面这条规则,不可能我每台电脑永远就只允许5个新的连接吧??
这样的理论好像不对啊,我用光5个只后,就不能再用了?我觉得应该有个时间概念或范围吧!


ipt_connlimit.c 里面的注释说得很清楚
当链接关闭或者因为超时而关闭的话,自动删除记录


                if (found->ctrack->proto.tcp.state == TCP_CONNTRACK_TIME_WAIT) {
                        /* we don't care about connections which are
                           closed already -> ditch it */

                        lh = lh->prev;
                        list_del(lh->next);
                        kfree(conn);
                        nf_conntrack_put(&found->ctrack->infos[0]);
                        continue;
                }


[ 本帖最后由 platinum 于 2007-7-2 23:46 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-07-03 09:36 |只看该作者
多谢老大,经过实际测试,确实如此,谢谢!!

这个功能很实用,呵呵

论坛徽章:
0
7 [报告]
发表于 2008-02-20 15:05 |只看该作者
原帖由 platinum 于 2007-7-2 21:54 发表


ipt_connlimit.c 里面的注释说得很清楚
当链接关闭或者因为超时而关闭的话,自动删除记录


                if (found->ctrack->proto.tcp.state == TCP_CONNTRACK_TIME_WAIT) {
                    ...

我的如下,iptables默认允许一切
iptables -A FORWARD -p tcp -s 192.168.1.224 --syn --dport 80 -m connlimit --connlimit-above 2 -j DROP
但是实际测试的时候 客户机192.168.1.224能打开N多个服务器的80页面
iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 2 -j DROP
当我通过securecrt打开3个SSH是都OK 但是当打开第四个的时候就会话超时了
这该怎么理解?

论坛徽章:
0
8 [报告]
发表于 2008-02-20 17:36 |只看该作者
继续讨论这个问题:
如果我要限制,且仅限制192.168.100IP段中的任何一个IP,访问我23端口的链接数不能超过3个,那么策略要怎么来写?
1、是用脚本循环,把192.168.100.1-254的所有IP都加一遍?
还是
2、直接用:
iptabels -A INPUT -p tcp -s 192.168.100.0/24 -m connlimit --connlimit-above 3 --connlimit-mask 32 -j DROP?

关键在于,--connlimit-mask有多灵活!!!

论坛徽章:
0
9 [报告]
发表于 2008-02-21 10:52 |只看该作者
原帖由 busyant 于 2008-2-20 17:36 发表
………………
2、直接用:
iptabels -A INPUT -p tcp -s 192.168.100.0/24 -m connlimit --connlimit-above 3 --connlimit-mask 32 -j DROP?
………………


在RHEL 3上验证成功。

论坛徽章:
0
10 [报告]
发表于 2008-02-22 08:54 |只看该作者
原帖由 busyant 于 2008-2-20 17:36 发表
继续讨论这个问题:
如果我要限制,且仅限制192.168.100IP段中的任何一个IP,访问我23端口的链接数不能超过3个,那么策略要怎么来写?
1、是用脚本循环,把192.168.100.1-254的所有IP都加一遍?
还是
2、直 ...

你的意思是小于或者等于3个的时候 这么写connlimit --connlimit-above 3 那么你在你的机器上实际的时候是打开第几个的时候就无法访问(3?4?5?)了呢,因为我测试结果有些出入所以问问 顺便说下 iptabels -A INPUT -p tcp -s 192.168.100.0/24 -m connlimit --connlimit-above 3 --connlimit-mask 32 -j DROP
这样确实是可以的 或者iptabels -A INPUT -p tcp -s 192.168.100.0/24 -m connlimit --connlimit-above 3  -j DROP都一样
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP