フラッシュや書き換えなしでiptablesルールを更新する方法

フラッシュや書き換えなしでiptablesルールを更新する方法

現在、私はiptablesルールを更新するためにbashスクリプトを使用しています。ここで次のコマンドを呼び出します。

iptables -F

次にルールを適用します。

問題は、ポート80にアクセスするためにルールを更新し、10分ごとにcronジョブのすべてのエントリを削除する必要があることです。そのため、10分ごとにiptables -F電話をかけて前のルールを削除し(不要)、すべてのポートを開きます。

10分ごとにルールを更新したくなく、既存のルールを編集または更新するだけです。

ベストアンサー1

定期的に更新する必要がある特定の規則がある場合は、それらを別々のチェーンに入れて、適切なINPUTスロットでそのチェーンを呼び出します。

iptables -N mychain                # Create new chain "mychain"
iptables -A INPUT mychain          # Insert it into INPUT
iptables -A INPUT …other rules…    # Append other rules as before

mychainこれで、次のルールに影響を与えずに頻繁に変更されるルールを更新して追加できますINPUT

iptables -F mychain
iptables -A mychain …rule…
iptables -A mychain …rule…

トランザクションなど、これを単一のエンティティとして追加するには、チェーンを作成し、チェーンにルールを追加し、チェーンをここに挿入して直前のINPUTインスタンスをすぐに削除します。これには動的チェーン名が必要な場合があります。例えば、

chain="mychain_$(date +%s)"    # One second granularity
iptables -N "$chain"           # Create the chain
iptables -A "$chain" …rule…    # and its rules
iptables -A "$chain" …rule…
iptables -A "$chain" …rule…

それから

old=$(iptables -L INPUT | awk '$1 ~ /^mychain_[0-9]+$/ {print $1; exit}')
iptables -I INPUT 1 -j "$chain"    # Add new chain in correct position
if [ -n "$old" ]
then
    iptables -D INPUT -j "$old"    # Remove old chain
    iptables -X "$old"             # Delete it
fi

一方、多数のIPアドレスをブロックまたは許可する必要がある場合は、次の点を考慮することをお勧めします。IP設定

おすすめ記事