![]() | 1 bellchu 2015-01-24 20:40:25 +08:00 via iPhone ![]() 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 ![]() --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 ![]() |
![]() | 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 ![]() @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 ![]() 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 |