現在、私は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設定。
答え2
ルール変更が可能です。
例は次のとおりです。
まず、次を使用して上部(最初の)位置にルールを作成できます。
iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
チェーン内の既存のルールを置き換えるルールを指定できます。
場所1に与えられた最初の規則は、どこからでもhttpポート(ポート80)への接続を許可することです。
次のiptablesコマンドは、ネットワークアドレス範囲192.168.0.0/24でのみ標準httpポート(ポート80)への接続を制限するルールを上書きします。
iptables -R INPUT 1 -p tcp -s 192.168.0.0/24 --dport 80 -j ACCEPT
したがって、すべてのルールを削除する必要はなく、ルールを置き換える場所を知るだけです。
これが完全なコース方法です源泉