前言廢話
ipset 是一個 iptables 的得力助手。若使用 iptables 為每個允許的 IP 位址新增規則,那聽起來很累。因此,我們可以設定一個 ipset,將 ip 列表加入集合,我們日後只需要在 iptables 中允許這個集合就好。
安裝 ipset
使用以下命令安裝 ipset
sudo apt-get install ipset
建立 ipset 集合
我們建立一個集合 myset
,並將 hash
以 ip
儲存
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