我想将发送特定URL的IP列入黑名单,但只限于一段确定的时间。 比方说10分钟。
我正在考虑创build一个粘贴表,并存储src IP并增加一个计数器。 一旦柜台超过X重试,我否认它。
stick-table有一个expire参数,但是我注意到只要有新的数据写在里面,expire计数器就会被重置。 所以expire参数是表格范围的。 因此,条目将永不过期,直到10分钟内没有添加任何内容。
有什么办法可以实现这种暂时的阻塞?
棒表实际上有一个到期,但它是每个条目计数/计算,而不是每个表。
根据文档 :
到期
定义自上次创build,刷新或匹配以来表中条目的最大持续时间。 到期延迟使用标准时间格式定义,与各种超时类似。 最长持续时间略高于24天。 有关更多信息,请参阅第2.2节。 如果未指定此延迟,则会话将不会自动过期,但较旧的条目将一次性删除。 如果未指定过期延迟,请务必不要使用“nopurge”参数。
所以你可以用它来做你想做的事情。
事实上,这个网站已经或多或less的被一些网站上的优秀人员的博客回复,还有一些人维护HAProxy。
基本上,你只需要几行就可以工作
stick-table type ip size 100k expire 10m store conn_rate(3s) tcp-request connection reject if { src_conn_rate ge 10 } tcp-request connection track-sc1 src
应修改conn_rate(3s)以反映应引发临时黑名单的连接速率。