ipset 是什麼

IP sets are a framework inside the Linux kernel, which can be administered by the ipset utility. Depending on the type, an IP set may store IP addresses, networks, (TCP/UDP) port numbers, MAC addresses, interface names or combinations of them in a way, which ensures lightning speed when matching an entry against a set.

簡而言之,就是使用 iptables 設定防火牆規則時,變簡單、且高效率。

以前設定 iptables 可能是每阻擋一 IP 直接 ↓ (會很多行)

iptables -A INPUT -s 1.1.1.1 -j DROP 
iptables -A INPUT -s 1.1.1.2 -j DROP 
iptables -A INPUT -s 1.1.1.3 -j DROP

而有了 ipset 就只要一行 ↓ (之後新 IP 只要加入集合裡就好)

iptables -A INPUT -m set --match-set cross src -j DROP

cross 是一個自訂的集合名稱,再透過 ipset 將 IP 加入到集合內,就可成功阻擋

怎麼建立 ?

建立 cross 集合 (以 hash 方式儲存 ip)

ipset create cross hash:ip

加入 ip

ipset add cross 10.10.10.138

刪除 ip

ipset del cross 10.10.10.138

清空集合

ipset flush cross

銷毀集合 (等於這個集合都不要了)

ipset destroy cross

列出集合 (規則、Members 等)

ipset list cross

開始阻擋 (要先有集合名稱才可設定)

iptables -A INPUT -m set --match-set cross src -j DROP

加入倒數時間 (時間到自動刪除於 members 裡,預設 300 秒,也可新加入的自訂 10 秒)

ipset create cross2 hash:ip timeout 300
ipset add cross2 10.10.10.138 timeout 10
iptables -A INPUT -m set --match-set cross2 src -j DROP

備份

ipset save cross -f cross.backup

還原

ipset restore -f cross.backup

 

最後修改日期: 2021 年 09 月 30 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。