すべてのiptablesルールの決定論的完全ダンプをどのように取得できますか?

すべてのiptablesルールの決定論的完全ダンプをどのように取得できますか?

すべてのiptablesルールの決定論的完全ダンプをどのように取得できますか?

Complete は iptables のすべてのテーブルを表します。

決定論は、iptables を変更せずに、コマンドが複数回実行されたときに常に同じ結果を出力する必要があることを意味します。

ユースケース:ファイアウォールスクリプトのリファクタリング。たとえば、コマンドのようなものを複数回作成するのではなく、forループを使用します。リファクタリングの前後にiptables-dumpコマンドを実行して、リファクタリングによって実際のiptablesルールが変更されたことを確認します。

~によると回答渡すザイルズ、完全な出力を得るために-v使用する必要があります。

iptablesfilter、および5つの異なるテーブルを制御natします。指定された呼び出しでは、オプション引数で指定されたテーブルの1つだけが表示または変更されます(デフォルトは)。ファイアウォールの全体的な状態を表示するには、各テーブルを順番に呼び出す必要があります。manglerawsecurityiptables-tfilteriptables

また、ルールを正確に表現するには、optionsを渡す必要があります-v。そうしないと、フィルタリングルールのインターフェイスなどのいくつかの重要な基準が出力から省略されます(たとえば、「すべてのアイテムを許可する」ルールと「ループバックインターフェイスのすべてのアイテムを許可する」ルールは区別するためにのみ使用できます-v)。

したがって、必要なnetfilterルールの完全なデモを得るために

iptables -vL -t filter
iptables -vL -t nat
iptables -vL -t mangle
iptables -vL -t raw
iptables -vL -t security

あるいは、iptables-saveすべてのテーブルのすべてのルールを解析可能な形式で表示するプログラムを呼び出すこともできますiptables-restore。この形式は人間が読むこともできます(iptablesテーブルを作成するコマンドの一連の呼び出しと非常によく似ています)。

ただし、使用すると-vパケットとバイトカウンタが追加されます。これにより出力が不確実になります。

両方の世界の利点を活用する方法は?すべてのiptablesルールの決定論的完全ダンプをどのように取得できますか?

ベストアンサー1

このiptables-saveコマンドの出力は非常に簡単です。他の部分は、ルールの後の角かっこ内にあるか、コメントにあります。

# Generated by iptables-save v1.4.21 on Sun Jan 10 16:02:30 2016
: INPUT ACCEPT [38:2132]

その後、これらのエンティティをキャンセルまたは削除する練習になり、次を使用して再読み込みできる完全に決定的な出力が生成されますiptables-restore

iptables-save | sed -e 's/\[[0-9:]*\]/[0,0]/' -e '/^#/d'
*filter
:INPUT ACCEPT [0,0]
....

おすすめ記事