Linux

我是否必須交換 IP 集,或者我可以即時添加/刪除?

  • May 15, 2014

我想知道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 -!

任何人都可以闡明這一點嗎?

您可以動態添加和刪除 IP 到您已經定義的集合。這是 IPsets 背後的想法之一:如果這不可能,那麼整個set擴展iptables就沒有多大意義。

的主要目標ipset是使您能夠定義(也是動態的)匹配類別(例如,用於動態地將惡意主機列入黑名單,而無需為每個主機神奇地添加一條規則)。

摘自ipset 首頁

  • 儲存多個 IP 地址或埠號,並一舉與 iptables 的集合匹配
  • 針對 IP 地址或埠動態更新 iptables 規則而不會降低性能
  • 使用單個 iptables 規則表達複雜的基於 IP 地址和埠的規則集,並受益於 IP 集的速度

引用自:https://unix.stackexchange.com/questions/129424