私は意味論について疑問に思っていました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 つのルールを魔法のように追加する必要なく、悪意のあるホストを動的にブラックリストに登録するなど)。
- 複数のIPアドレスまたはポート番号を保存し、iptablesによるコレクションと一挙に照合する
- パフォーマンスを低下させることなく、IP アドレスまたはポートに対して iptables ルールを動的に更新します。
- 複雑なIPアドレスとポートベースのルールセットを1つのiptablesルールで表現し、IPセットの速度の恩恵を受ける