![Iptables 阻止的连接会持续多长时间?有没有办法设置超时?](https://linux22.com/image/515610/Iptables%20%E9%98%BB%E6%AD%A2%E7%9A%84%E8%BF%9E%E6%8E%A5%E4%BC%9A%E6%8C%81%E7%BB%AD%E5%A4%9A%E9%95%BF%E6%97%B6%E9%97%B4%EF%BC%9F%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E8%AE%BE%E7%BD%AE%E8%B6%85%E6%97%B6%EF%BC%9F.png)
iptables -A INPUT -m state --state NEW -m recent --set # If we receive more than 10 connections in 10 seconds block our friend.
iptables -A INPUT -m state --state NEW -m recent --update --seconds 5 --hitcount 15 -j Log-N-Drop
我从 iptables 中获得了这两条相关规则。如果 5 秒内建立的连接超过 15 个,它会记录该尝试并阻止它。iptables 会将计数器维持多长时间?如果再次尝试连接,它会刷新吗?
答案1
如果五秒内建立了超过 15 个连接,则会拒绝这些连接,直到收到最后一个数据包五秒后为止。
答案2
您可以通过运行以下命令获取此模块的帮助iptables -m recent --help
:
与您的问题相关的主要选项是:
[!] --update Match if source address in list, also update last-seen time.
所以我的理解是,使用 --update 它会刷新,但你需要在删除之前进行更新。因此,如果是第一次,它将“过期”。作者页面也可能有帮助。如果有更多的 IP 进来,以下模块参数也会发挥作用:
ip_list_tot=100 ;每个表记住的地址数
编辑:老实说,仔细想想,我对所有可能的场景都有点困惑。我会通过使用 scapy 之类的工具为 fping 制作不同的源 IP 地址来对此进行大量测试。以下模块参数可能也会有所帮助:
debug=0 ; Set to 1 to get lots of debugging info
也许有人会有一个更好的答案,谁已经尝试过这些选项,抱歉 :-/