A.2. テーブルのアップデートとフラッシュ

どこかで iptables がぐちゃぐちゃになってしまったとしても、フラッシングする手段が用意されているので、再起動する必要はない。この質問は何度も受けているので、ここで回答しておこうと思った次第だ。追加した時にルールを間違ってしまった場合は、ただ単に、その間違った行の中の -A パラメータを -D に変えればいいだけだ。そうすれば iptables はその行を見つけて削除してくれる。まったく同一内容の行が複数あった時には、指定した記述に合致する事例のうち最初に見つかったものだけが削除される。それでは困る場合には、-D オプションを iptables -D INPUT 10 のように使えば、INPUT チェーンの 10番目のルールを削除してくれる。

時には、あるチェーンをまるごとフラッシングしたいこともある。その場合は -F オプションの出番だ。例えば iptables -F INPUTINPUT チェーンの内容をすべて消去する。ただし、これはデフォルトポリシーまでは変更してくれないので、もしもデフォルトポリシーが DROP に設定してあると、上記のやり方では INPUT チェーン全体を丸ごとブロックしてしまうことになる。チェーンのポリシーをリセットするには、DROP に設定した時と同様に、iptables -P INPUT ACCEPT といった具合にコマンドすればいい。

rc.firewall.txt ファイルを適切にセットアップしようとしている最中に iptables をフラッシング、リセットしたくなった時のことを考慮して、 rc.flush-iptables.txt (付録としても置いている) も用意しておいた。ただしひとつ留意点があって、もしあなたが mangle テーブルをいじくっている場合、そこはこのスクリプトでは消去されない。mangle テーブルも消去するには多少の行を追加するだけで、決して難しい話ではないのだが、rc.firewall.txt スクリプトはどこを見ても一切 mangle テーブルを使っていないので、盛り込まないことにした。