Iptables

iptables hashlimit 速率未按預期工作

  • February 1, 2022

我寫了以下防火牆規則:

iptables -A INPUT -m hashlimit –hashlimit 1/hour –hashlimit-burst 3 –hashlimit-mode srcip,dstport –hashlimit-name ssh -j ACCEPT

我原以為爆發會在一小時後充電 1,但實際上它甚至比一分鐘更快地充電 1。我從相同的源 IP 和相同的目標埠發送消息,所以我希望它接受 3 個連接,然後每小時接受 1 個。但它接受的更多(每 20-30 秒一次)。如果我使用**–limit 1/hour**我可以觀察到預期的行為,但我需要使用 hashlimit 因為我需要過濾每個 srcip 和 dstport。我究竟做錯了什麼?謝謝!

我認為您遇到了即將到期的條目。手冊頁的豁免:

  --hashlimit-burst amount
         Maximum initial number of packets to match: this number gets recharged by
         one every time the limit specified above is not reached, up to this number;
         the default  is  5. When  byte-based rate matching is requested, this
         option specifies the amount of bytes that can exceed the given rate.
         This option should be used with caution -- if the entry expires, the burst
         value is reset too.

並且使用選項指定保存任何雜湊條目的時間量--hashlimit-htable-expire。我不知道這個條目的預設值是多少,但我猜它比一小時短得多,這可以解釋為什麼你可以連接的速度比預期的快。

您應該考慮進一步調整這些值,例如每分鐘允許一個 - 在這種情況下,您的伺服器只需要記住最後一分鐘的 IP,而不是最後一小時的 IP。

引用自:https://serverfault.com/questions/1080398