Ubuntu 12.04 LTS-iptables v1.4.12
TLDR:
iptables-save <ruleset-name>
を呼び出すときにiptablesのルールセットはどこに保存されますか?
説明:
この答え によると、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
(12.04がプリインストールされているiptables
バージョン/パッケージの存在しない/不明なコマンド)を呼び出そうとしましたが、この興味深い出力が見つかりました。
Aborting iptables initd: unknown command(s): "status".
...
save <ruleset>
save the current ruleset
load <ruleset>
load a ruleset
...
Saved rulesets:
active, inactive
...
ロードできるルールセットは2つあるようです(active
およびinactive
)...
.. butこれらはどこに保存されていますか?
アクティブ/非アクティブはかなり悪い検索用語であり、dpkg-query -L iptables
も役に立たないため、場所を見つけることができません。
サーバーをpuppet
/chef
でプロビジョニングしているので、ルールセットを配置し、これらをロードするための簡単なシェルスクリプトを/etc/networking/if-pre-up
に追加できる場所があるかどうかを知るのは良いことです。
それから、iptables-persistent
パッケージを省略できますが、これは異なるルールセットのロードを許可しないため、それほど柔軟ではありません。
ご協力いただきありがとうございます。
iptablesはルールをメモリに保存しますが、iptables-save ruleset-name
によって作成されたrulesetはファイル内にあります
/ var/lib/iptables/ruleset-name
これらは、iptables-restore <ruleset-name>
を呼び出すことで復元できます。
これはUbuntu 12.04.03 LTSでのみ確認できます-この場所は、iptables-packageの以降のバージョンで変更された可能性があります。
/etc/iptables/rulesets.d
のようなものは、これらを保存するためのより論理的な場所だったと思います。
Save-pathは/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 "."
}