IP セットを交換する必要がありますか、それともオンザフライで追加/削除できますか?

IP セットを交換する必要がありますか、それともオンザフライで追加/削除できますか?

私は意味論について疑問に思っていましたipset(8)

セットに一致するルールを追加してセットを操作することは可能ですか? それとも、セットを作成して古いセットと交換し、名前に一致するルールiptablesに適用することしかできませんか?iptablesつまり、IP セットをアドホックに追加したり削除したりできるのでしょうか、それともセットがアクティブに使用されている間にセット全体を交換できるのでしょうか?


私がこう尋ねる理由は次の通りです。セットを作成するとします

ipset create PCs hash:ip
ipset add PCs 1.1.1.1
ipset add PCs 2.2.2.2

...など。HTTP へのアクセスを許可するルール:

iptables -A INPUT -p tcp --dport 80 -m set --set PCs src -j ACCEPT

実行すると何が起きますか:

ipset add PCs 3.3.3.3

iptablesこの規則は IP 3.3.3.3 にも直ちに適用されますか?

-j SET --add-set ...ルール内から IP セットをアドホックに操作するために使用できることがわかりましたiptables。これにより、任意の時点でセットを操作できるはずだと考えさせられます。

ただし、ipsetプロジェクト サイトでは、新しい (調整された) セットを別のセットと交換する方がよい代替手段であると示唆されているようです。 または を介しipset swap​​て行いますipset restore -!

誰かこれについて説明できますか?

答え1

すでに定義されているセットに IP をオンザフライで追加したり削除したりできます。これは IPsets の背後にあるアイデアの 1 つです。これが不可能であれば、setの拡張全体がiptablesあまり意味をなさないでしょう。

の主な目的は、ipset一致のクラスを(動的にも)定義できるようにすることです(たとえば、すべてのホストに 1 つのルールを魔法のように追加する必要なく、悪意のあるホストを動的にブラックリストに登録するなど)。

抜粋ipset ホームページ

  • 複数のIPアドレスまたはポート番号を保存し、iptablesによるコレクションと一挙に照合する
  • パフォーマンスを低下させることなく、IP アドレスまたはポートに対して iptables ルールを動的に更新します。
  • 複雑なIPアドレスとポートベースのルールセットを1つのiptablesルールで表現し、IPセットの速度の恩恵を受ける

関連情報