ipset
数万のアドレスをハッシュテーブルとしてカーネル内に保持し、iptablesが1万本のルールの代わりに1本のルールで集合全体を照合できるようにする仕組み。
ipsetがなければ、ブロックリストはパケットごとに先頭から辿るルールの列になり、リストが少し大きくなっただけでファイアウォールが破綻する。ipsetを使えば、集合はハッシュまたはビットマップとしてカーネル内に置かれ、検索は定数時間になる。iptablesのルールは -m set --match-set blocklist src と書くだけだ。集合は中身に応じて型が決まり、hash:ip、プレフィックス用の hash:net、組み合わせ用の hash:ip,port などがある。エントリにはタイムアウトを持たせて自動的に失効させられ、これがfail2banなどのツールの定番の部品になっている理由だ。nftablesでは同等の機能が名前付きセットとして最初から組み込まれている。