すべてのiptablesルールの決定論的完全ダンプをどのように取得できますか?
Complete は iptables のすべてのテーブルを表します。
決定論は、iptables を変更せずに、コマンドが複数回実行されたときに常に同じ結果を出力する必要があることを意味します。
ユースケース:ファイアウォールスクリプトのリファクタリング。たとえば、コマンドのようなものを複数回作成するのではなく、forループを使用します。リファクタリングの前後にiptables-dumpコマンドを実行して、リファクタリングによって実際のiptablesルールが変更されたことを確認します。
~によると回答渡すザイルズ、完全な出力を得るために-v
使用する必要があります。
iptables
filter
、および5つの異なるテーブルを制御nat
します。指定された呼び出しでは、オプション引数で指定されたテーブルの1つだけが表示または変更されます(デフォルトは)。ファイアウォールの全体的な状態を表示するには、各テーブルを順番に呼び出す必要があります。mangle
raw
security
iptables
-t
filter
iptables
また、ルールを正確に表現するには、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]
....