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
留言