如何让 ipset 条目“老化”?

0xC*_*22L 5 firewall ipset

我正在尝试建立一个已成功登录系统的客户端的白名单,使用ipset. 我有什么选择可以让条目老化,以便我以后可以根据它的年龄丢弃它?

有没有比下面概述的想法更好的方法?

我没有找到ipset直接提供的任何东西,所以我试图确定这样的设施是否存在于ipset/的范围内iptables


现在我想出的唯一想法是使用一个 cronjob,每 X 分钟或几小时交换一次列表。因此,举个例子,如果我在 20:00 和 20:59 之间的某个时间,我会有一个活动列表whitelist,加上下一个小时的列表(比如 21:00 whistelist_21)。现在连接的任何客户端将被添加到活动whitelist和下一小时(或给定时间段)的白名单中。然后在每个完整小时(或给定时间段)进行一次 cronjob - 例如在上述情况下的 21:00 - 将现有的替换为现有whitelistwhitelist_21并处理(现已重命名)whitelist。例如:

ipset swap whitelist whitelist_21
ipset destroy whitelist_21
Run Code Online (Sandbox Code Playgroud)

0xC*_*22L 4

结果该man页面描述了我正在寻找的内容。它被恰当地调用timeout,并且可以在向 IP 集添加条目时指定。由于搜索错误的术语,我错过了它。

如果需要覆盖设置的默认值,则可以在创建集合时以及稍后为添加的每个条目指定默认超时值。

示例来自ipset(8)

ipset create test hash:ip timeout 300
ipset add test 192.168.0.1 timeout 60
ipset -exist add test 192.168.0.1 timeout 600
Run Code Online (Sandbox Code Playgroud)