Iptables
iptables hashlimit 速率未按預期工作
我寫了以下防火牆規則:
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。