web-dev-qa-db-ja.com

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ルールはIP3.3.3.3でもすぐに有効になりますか?

-j SET --add-set ...を使用して、iptablesルール内からアドホックにIPセットを操作することが可能であることがわかりました。これにより、任意の時点でセットを操作することが機能するはずだと思います。

ただし、ipsetプロジェクトサイトは、新しい(調整済みの)セットを別のセットに交換する方が良い方法であることを示唆しているようです。 ipset swap経由でもipset restore -!経由でも。

誰かがこれに光を当てることができますか?

2
0xC0000022L

定義済みのセットにその場でIPを追加および削除できます。これは、IPsetの背後にある考え方の1つです。これが不可能な場合、setiptables拡張子全体はあまり意味がありません。

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

ipsetホームページからの抜粋

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