現在、私は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設定。