1
bellchu 2015-01-24 20:40:25 +08:00 via iPhone 1
Ip tables -a input -p top --dport xxx -m connlimit --connlimit-above 100 --connlimit-mask 0 -j reject
手机打字 将就看吧 |
2
bellchu 2015-01-24 20:44:20 +08:00 via iPhone 1
--dport 20000:30000 就是20000到30000
|
5
bellchu 2015-01-25 20:48:48 +08:00
@ryd994 呃。。。。。。。你这么一说好像是啊,
这么写 iptables -A INPUT -p tcp -m multiport --dports 20000:30000 -m connlimit --connlimit-above 5 --connlimit-mask 0 -j REJECT |
6
ryd994 2015-01-26 01:31:31 +08:00 via Android 1
|
8
ryd994 2015-01-26 09:45:55 +08:00
|
12
bellchu 2015-01-26 12:08:09 +08:00
发现个问题,connlimit不会减计数,断开之后还算连接着,保持被REJECT状态。除非iptables -F,不然就算连接清空了还是连不上被REJECT。楼主还是用hitcount hashlimit之类来做限制吧。
|
13
ryd994 2015-01-26 20:18:21 +08:00 via Android
@bellchu connlimit肯定会减的,我的web服务器上就用着,要是不减还得了………
而且问题不在于限制是不是两个连接,而是这个限制是总限制还是每端口。我测试的结果就是,如果 |
16
bellchu 2015-01-26 23:02:45 +08:00
@ryd994 count不减少是因为TIME_WAIT的timeout时间在我机器上是120秒,你可能写的DROP,所以连接马上被关闭了,而我写的是REJECT所以一直在WAIT。
mask改32的现象是source ip限制为单个,而不是匹配所有ip。 至于你说的两个match不能一起用显然是不成立的。 明天有空我再去试试看多端口的限制吧,楼主的这么多端口的限制的需求也真是没遇到过呢。刚刚看了看man,说是multiport后面写range也只算range中的两个ports。 |
17
ryd994 2015-01-26 23:53:06 +08:00 via Android
@bellchu 我没说不能一起用……我是说他们的参数互相不干扰……你这样是限制所有端口上的总数………
|
18
GavinMa OP @ryd994
@bellchu 感谢两位的积极帮助,需求是这样的:我免费分享了几台TW的SS服务器,每位注册用户都有自己的独立端口和密码,为了防止滥用,想对每个端口做连接数限制。 目前还没有解决。 使用的开源系统: 1、https://github.com/orvice/ss-panel 2、https://github.com/mengskysama/shadowsocks/tree/manyuser |
19
ryd994 2015-01-28 00:23:40 +08:00 via Android 1
@GavinMa 这样的话就直接限制所有端口上每个IP的连接总数吧,效果一样的。
你要限制单个端口上的所有IP的连接数太麻烦了。 |
20
bellchu 2015-01-28 11:07:10 +08:00
@GavinMa 你确定你有1万个用户需要开1万个端口么,我只做过面向服务的连接数和流量限制,比如web的http(s),SSH的22. 就像楼上所说,你的需求用connlimit做源地址的限制比较合理,当然你可以写一万条防火墙脚本,这么长的脚本我就没法说保证系统的效率了,不过你也可以试一下.
|
21
GavinMa OP |
22
ryd994 2015-01-28 21:36:33 +08:00 1
iptables -A INPUT -p tcp --dport 20000:30000 -m connlimit --connlimit-above 10 -j REJECT
这样基本就行了,不同用户给不同密码就行了。 |
24
ikzzdd 2015-02-05 12:08:56 +08:00
这个问题我也想知道方案,研究好多天了
|
25
617450941 2015-10-20 22:49:30 +08:00
iptables 怎么限制一个端口只能一个 ip 连接 求解
|
26
Vogan 2020-02-04 02:40:54 +08:00
@ryd994 #22 这是错误的,限制的是 20000-30000 共 1w 个端口,一共只能 10 个连接数,而不是每个端口 10 个连接数!
|
27
ryd994 2020-02-12 18:55:09 +08:00 via Android
@Vogan rtfm
http://ipset.netfilter.org/iptables-extensions.man.html connlimit Allows you to restrict the number of parallel connections to a server per client IP address (or client address block). 默认是每 IP,除非你用 connlimit-mask 0 |