netfilter-persistent
ipset як і iptabbles (ip6tables) працюють в пам'яті і не зберігаються на диск. Утиліта netfilter-persistent
допомагає зберегти і відновити набори/правила до і після перезавантаження сервера.
Як працює ipset-persistent
ipset-persistent
В Ubuntu ipset-persistent
входить у пакет iptables-persistent
. Він:
при збереженні пише в
/etc/iptables/ipsets
при завантаженні виконує
ipset restore < /etc/iptables/ipsets
(аналогічно з iptables → /etc/iptables/rules.v4
і /etc/iptables/rules.v6
).
Після встановлення у /usr/share/netfilter-persistent/plugins.d/ маємо два файли для відтврення правил iptables:
drwxr-xr-x 3 root root 4096 Sep 11 14:56 ../
-rwxr-xr-x 1 root root 2404 May 13 2023 15-ip4tables*
-rwxr-xr-x 1 root root 2471 May 13 2023 25-ip6tables*
Додамо плагін для відтворення наборів ipset
Файли з цієї директорії виконуються по черзі (run-parts
), у порядку назв.
Тобто якщо треба створити 10-ipset
, він відпрацює раніше існуючих, щоб на момент відтворення правил iptables набори ipset вже існували.
nano /usr/share/netfilter-persistent/plugins.d/10-ipset
#!/bin/sh
### BEGIN INIT INFO
# Provides: ipset
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop:
# Short-Description: Load and save ipset rules
### END INIT INFO
set -e
IPSET_SAVE="/etc/iptables/ipsets"
case "$1" in
start)
[ -f "$IPSET_SAVE" ] && ipset restore < "$IPSET_SAVE" || true
;;
stop)
ipset save > "$IPSET_SAVE"
;;
save)
ipset save > "$IPSET_SAVE"
;;
restart|reload|force-reload)
;;
esac
chmod +x /usr/share/netfilter-persistent/plugins.d/10-ipset
Перевіряємо
systemctl restart netfilter-persistent
systemctl status netfilter-persistent
Керування
зберегти вручну поточні ipset-набори:
sudo netfilter-persistent save
це викличе
ipset save > /etc/iptables/ipsets
відновити:
sudo netfilter-persistent reload
або просто перезавантажити сервер
Перевірка сервісу
systemctl status netfilter-persistent.service
Він стартує на multi-user.target
і виконує restore автоматично.
Last updated