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
ルールはIP3.3.3.3でもすぐに有効になりますか?
-j SET --add-set ...
を使用して、iptables
ルール内からアドホックにIPセットを操作することが可能であることがわかりました。これにより、任意の時点でセットを操作することが機能するはずだと思います。
ただし、ipset
プロジェクトサイトは、新しい(調整済みの)セットを別のセットに交換する方が良い方法であることを示唆しているようです。 ipset swap
経由でもipset restore -!
経由でも。
誰かがこれに光を当てることができますか?
定義済みのセットにその場でIPを追加および削除できます。これは、IPsetの背後にある考え方の1つです。これが不可能な場合、set
のiptables
拡張子全体はあまり意味がありません。
ipset
の主な目標は、一致のクラスを(動的に)定義できるようにすることでした(たとえば、ホストごとに1つのルールを魔法のように追加することなく、悪意のあるホストを動的にブラックリストに登録するため)。
- 複数のIPアドレスまたはポート番号を保存し、一挙にiptablesによるコレクションと照合します
- パフォーマンスを低下させることなく、IPアドレスまたはポートに対してiptablesルールを動的に更新します
- 複雑なIPアドレスとポートベースのルールセットを単一のiptablesルールで表現し、IPセットの速度の恩恵を受ける