QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1438|回复: 11

能否限制端口的连接数量?

[复制链接]
发表于 2004-10-25 22:19:50 | 显示全部楼层 |阅读模式
看资料说xp的sp2会限制一个端口的并行连接数量,在linux下能否实现类似的功能阿?????
发表于 2004-10-25 23:18:05 | 显示全部楼层
iptables
回复

使用道具 举报

 楼主| 发表于 2004-10-26 07:28:17 | 显示全部楼层
版主再详细指点一下
回复

使用道具 举报

发表于 2004-10-26 12:17:15 | 显示全部楼层
介绍篇老文章给你看一下:通用线程:动态 iptables 防火墙
developerWorks 的 Linux 专区上有很多详细深入的文章,看一下吧:)
回复

使用道具 举报

 楼主| 发表于 2004-10-26 20:07:07 | 显示全部楼层
限制一个端口的连接数量为10。就是说某个时刻,这个端口的连接数量是不能超过10个的。
如果使用iptables的成--limit和--limit-burst参数好象不能实现这个效果吧??
如果能的话,麻烦版主写一下相应的iptables命令。 :-)
回复

使用道具 举报

发表于 2004-10-26 21:13:50 | 显示全部楼层
OK,我们来看一下:
限制 25/TCP 端口,同时连接数 10。
[code:1]iptables -N port25_burst
iptables -A port25_burst -p tcp -m limit --limit 10/second --limit-burst 10 -j RETURN
iptables -A port25_burst -p tcp -j REJECT --reject-with tcp-reset
iptables -I INPUT -p tcp --dport 25 -m state --state NEW -j port25_burst[/code:1]

iptables -N port25_burst
定义一个链 port25_burst
iptables -A port25_burst -p tcp -m limit --limit 10/second --limit-burst 10 -j RETURN
在 port25_burst 链里添加规则:限制并发数 10。 这里的 --limit 10/second 可以根据你的网络情况调整
iptables -A port25_burst -p tcp -j REJECT --reject-with tcp-reset
超过限制的连接请求将以 TCP RESET 应答拒绝
iptables -I INPUT -p tcp --dport 25 -m state --state NEW -j port25_burst
在 INPUT 链里面插入规则: 到 25 端口的 TCP 连接请求,如果是新建连接请求,则交给链 port25_burst 处理


好了,现在,到 25 端口的 TCP 并发连接只能维持在 10 个以下。
需要的 netfilter 模块:iptable_filter、ipt_limit、ipt_REJECT、ip_conntrack、ipt_state。
回复

使用道具 举报

 楼主| 发表于 2004-10-26 23:22:53 | 显示全部楼层
iptables-1.1.9指南.pdf
[code:1]limit match的工作方式就像一个单位大门口的保安,当有人要进入时,需要找他办理通行证。早上上班时,保安手里有一定数量的通行证,来一个人,就签发一个,当通行证用完后,再来人就进不去了,但他们不会等,而是到别的地方去(在iptables里,这相当于一个包不符合某条规则,就会由后面的规则来处理,如果都不符合,就由缺省的策略处理)。但有个规定,每隔一段时间保安就要签发一个新的通行证。这样,后面来的人如果恰巧赶上,也就可以进去了。如果没有人来,那通行证就保留下来,以备来的人用。如果一直没人来,可用的通行证的数量就增加了,但不是无限增大的,最多也就是刚开始时保安手里有的那个数量。也就是说,刚开始时,通行证的数量是有限的,但每隔一段时间就有新的通行证可用。limit match有两个参数就对应这种情况,--limit-burst指定刚开始时有多少通行证可用,--limit指定要隔多长时间才能签发一个新的通行证。

当防火墙看到一个请求包时,就认为连接处于NEW状态,当有应答时,就是ESTABLISHED状态。
[/code:1]
参考上面的资料的话,版主你给的代码不就是每秒允许10的新的连接吗??
这样的话连接数目就不止10个了(包括已经建立的连接)。
回复

使用道具 举报

发表于 2004-10-27 12:26:26 | 显示全部楼层
没错。 所以要设 --limit,理论上让间隔时间大于等于你的系统设置的 TCP 超时时间。
回复

使用道具 举报

 楼主| 发表于 2004-10-27 13:15:19 | 显示全部楼层
我本来想限制bt的连接数量(一个端口),bt的连接一般建立后都会持续很长时间的吧??
假设现在已经存在10个连接,这样设置的话每6秒就能允许新的连接,这样的话还是不能实现限制为10个端口的效果。
回复

使用道具 举报

发表于 2004-10-27 17:36:43 | 显示全部楼层
看来linux真的比windows网络先进啊,iptable早就有这个功能了,而sp2最近才出。呵呵。
回复

使用道具 举报

发表于 2004-10-28 17:48:57 | 显示全部楼层
[quote:583c8d389f="GGGO"]我本来想限制bt的连接数量(一个端口),bt的连接一般建立后都会持续很长时间的吧??
假设现在已经存在10个连接,这样设置的话每6秒就能允许新的连接,这样的话还是不能实现限制为10个端口的效果。[/quote]

对了,可以使用 iptables 的 patch-o-matic 补丁里面的 iplimit 模块,

iptables -I INPUT -p tcp --dport 25 -m iplimit --iplimit-above 10 -j REJECT
回复

使用道具 举报

 楼主| 发表于 2004-10-28 18:54:15 | 显示全部楼层
哦,谢啦。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 05:36 , Processed in 0.046186 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表