Dockerがiptablesを機能させる方法のため、Dockerを再起動せずにiptablesをリセットし、新しいバージョンのルールを適用することはできません。
Dockerはテーブルを使用しますNAT
が、FILTER
タッチは使用しませんMANGLE
。
これを念頭に置いて、ファイアウォールスクリプトを次のようにFILTER/INPUT
変更することにしました。FILTER/OUTPUT
MANGLE/PREROUTING
MANGLE/POSTROUTING
これで、Dockerを停止/再開せずにファイアウォール(iptables -t mangle -F
)を完全にリセットし、新しいルールセットを適用できるようになりました。
質問は次のとおりです。MANGLE
私のようにテーブルを使用すると欠点がありますか?私のルールはとても簡単です。 IPごとの接続制限、一部のポートの削除、一部のプロトコルの削除...
答え1
Dockerを再起動しないと、iptablesをリセットして新しいバージョンのルールを適用することはできません。
私はこれが正しいと思います。
"diff"ルールダンプ
Dockerファイアウォールの設定には慣れていませんが、dump stateを使用できますiptables-save
。すべてのルールの説明を生成して簡単にフィルタリングできます。
その後、ルールセットをリセットし、Dockerルールを復元し、新しいルールを適用できます。この順序で行うと、最も簡単になります。これがどれほど実現可能かは、ルールの作成方法によって異なります。
補助チェーン
もう一つの方法は、公式チェーンに1つのルールだけを置くことです。その後、すべてのルールがあるチェーンに移動します。その後、これらの補助チェーンをリセットして再構築できます。 Dockerルールは影響を受けません。