特定のiptablesチェーンのみを保存する方法は?

特定のiptablesチェーンのみを保存する方法は?

Dockerコンテナを実行しているLinuxシステムでiptablesを設定する必要があります。 save iptables ルールを使用すると、iptables-save > /etc/iptables/rules.v4すべてのチェーンのルールがファイルに書き込まれます。

しかし、INPUT、OUTPUT、DOCKER-USERチェーンだけを保存したい、DOCKER、DOCKER-ISOLATION-STAGE-1などのチェーンは保存したくありません。これは、dockerによって自動的に追加されたルールが含まれているためです。後続の再起動に関連する必要があります。

私が知っている限り、iptables-save特定のテーブルは保存できますが、特定のチェーンは保存できません。

現在、不要なチェーンからルールを削除するiptables-saveために組み合わせを使用しようとしています。grep同じ結果を得るより良い方法はありますか?

答え1

iptablesオプション-S()でデフォルトのコマンドを使用すると、指定された--list-rulesチェーンとテーブルに対して同様の出力を取得できます。たとえば、次のようになります。

$ sudo iptables -t filter -S OUTPUT
-P OUTPUT DROP
-A OUTPUT -o lo -j ACCEPT
...

ただし、各テーブルとチェーンに対してこの作業を繰り返す必要があります。互換性が必要な場合は、iptables-restore各テーブルにヘッダーを追加したり、デフォルト*filterポリシーを-Pに変更したり:、各テーブルに追加したりするなど、いくつかの出力を変更できますCOMMIT

関連情報