iptables 的得力助手 – ipset

前言廢話

ipset 是一個 iptables 的得力助手。若使用 iptables 為每個允許的 IP 位址新增規則,那聽起來很累。因此,我們可以設定一個 ipset,將 ip 列表加入集合,我們日後只需要在 iptables 中允許這個集合就好。

安裝 ipset

使用以下命令安裝 ipset

sudo apt-get install ipset

建立 ipset 集合

我們建立一個集合 myset,並將 haship 儲存

sudo ipset create myset hash:ip

加入 ip 到這個集合(如:192.168.1.1):

sudo ipset add myset 192.168.1.1

若你要將 ip 從這個集合刪除:

sudo ipset del myset 192.168.1.1

清空這個集合:

sudo ipset flush myset

刪除這整個集合:

sudo ipset destroy myset

列出這個集合:

sudo ipset list myset

設定 iptables

接著,我們就要從 iptables 加入這個集合。

例如說,我想允許這個集合中的 IP 可以訪問 TCP 8080 的話,則這樣下:

sudo iptables -A INPUT -p tcp --dport 8080 -m set --match-set myset src -j ACCEPT

ipset 存檔

與 iptables 一樣,你設定完後其實是不會存檔的,這意味著當你重新啟動後,這些集合就會消失。

因此,我們安裝 ipset-persistent

sudo apt-get install -y ipset-persistent

且若你的 iptables 沒有安裝 iptables-persistent 的話,也可以裝一下:

sudo apt-get install -y iptables-persistent

之後,每當你完成規則或集合設定,你可以下以下命令來保存:

sudo ipset save
sudo netfilter-persistent save
sudo netfilter-persistent reload