Ubuntu 12.04 LTS - iptables v1.4.12
TLDR:
Где хранятся наборы правил iptables при вызове iptables-save <ruleset-name>
?
Объяснение :
Согласно этот ответ базовым способом сохранения правил iptables вызывает
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
и затем загружает / восстанавливает эти правила в /etc/network/interfaces
как:
iface eth0 inet static
....
pre-up iptables-restore < /etc/iptables/rules.v4
pre-up ip6tables-restore < /etc/iptables/rules.v6
... или поместить их в скрипт оболочки в /etc/network/if-pre-up.d
.
Это можно упростить, установив пакет iptables-persistent
.
sudo apt-get install iptables-persistent
inovoke-rc.d iptables-persistent save
update-rc.d iptables-persistent defaults
Следуя некоторым учебникам, я попытался вызвать service iptables status
(несуществующая / неизвестная команда для версии / пакета iptables
, которая поставляется с предустановленной 12.04) и нашла этот интересный вывод:
Aborting iptables initd: unknown command(s): "status".
...
save <ruleset>
save the current ruleset
load <ruleset>
load a ruleset
...
Saved rulesets:
active, inactive
...
Кажется, я могу загрузить два набора правил (active
и inactive
) ...
.. но где они хранятся ?
Я не могу найти их местоположение, так как активные / неактивные довольно плохие поисковые термины, и dpkg-query -L iptables
тоже не помогает.
Поскольку я предоставляю своим серверам puppet
/ chef
, было бы неплохо знать, есть ли место, где я могу поместить свои наборы правил и добавить простой сценарий оболочки в /etc/networking/if-pre-up
для их загрузки.
Тогда я мог бы опустить пакет iptables-persistent
, который не настолько гибок, так как не позволяет загружать разные наборы правил.
Спасибо за вашу помощь.
iptables хранит правила в памяти, но набор правил , созданный iptables-save ruleset-name
, можно найти в файле
/ var / lib / iptables / ruleset-name ]
Их можно восстановить, вызвав iptables-restore <ruleset-name>
.
Я могу подтвердить это только для Ubuntu 12.04.03 LTS - возможно, это местоположение изменилось в более поздних версиях iptables-пакета.
Я думаю, что-то вроде /etc/iptables/rulesets.d
было бы более логичным местом для их хранения.
Путь сохранения настраивается в /etc/init.d/iptables
в строке 27 , а затем используется initd_save()
, который вызывает initd_counters()
.
libdir=/var/lib/iptables
# ...
initd_counters () {
if test "${enable_save_counters:-false}" = true; then
echo -n " with counters"
$iptables_save -c > "$ruleset"
else
$iptables_save | sed '/^:/s@\[[0-9]\{1,\}:[0-9]\{1,\}\]@[0:0]@g' > "$ruleset"
fi
}
initd_save () {
rm -f $autosave
ruleset="${libdir}/$@"
echo -n "Saving iptables ruleset: save \"$@\""
initd_counters
echo "."
}