14.7. rc.flush-iptables.txt

rc.flush-iptables.txt スクリプトは、その性格上、本当の意味でのスクリプトとは言えない。rc.flush-iptables.txt スクリプトは、すべてのテーブルとチェーンのリセットとフラッシングを行う。このスクリプトでは、まず最初に、filter テーブルの INPUTOUTPUTFORWARD チェーンのポリシーを ACCEPT にする。次に、nat テーブルの PREROUTINGPOSTROUTINGOUTPUT のデフォルトポリシーをリセットする。なぜこれらを最初に行うかといえば、そうすれば、コネクションが閉じてしまってパケットが立ち往生する心配をしなくてすむからだ。このスクリプトを作ったのは、実際のファイヤーウォール構築中にトラブルシュートに使ってもらえると思ったから。その意味から、このスクリプトはすべてを開放してデフォルトポリシーへとリセットすることだけに徹している。

その後、filter テーブル、nat テーブルの順で、そこに含まれるすべてのチェーンをフラッシングする。こうした過程を経て、邪魔くさいルールが綺麗さっぱりなくなっているという確信が持てる状態になる。それが完了したら、今度は nat テーブルと filter テーブルにあるユーザ定義チェーンを消し去る段階に突入する。これも終われば、即ちスクリプトは完了だ。mangle テーブルを使っている人は、そこをフラッシングするルールを加えてみてもいい。

Note

最後に、このコードについて一言。このスクリプトを、 rc.firewall start とコマンドすればスクリプトがスタートする Red Hat Linux 流を用いて、元の rc.firewall.txt に組み込んでみてはどうか、と、ある人たちから提案を受けたことがある。しかし、この文書はチュートリアルであって、発想の源にしてもらうこと目指しているので、やたらとシェルスクリプトだらけになったり込み入った文法が満載になるのは好ましくない。だから、この提案は、今後も盛り込むことはないだろう。スクリプトに文法やら何やらが絡んでくると読解が難しくなる、というのが僕の考えだ。このチュートリアルは読みやすさ、分かりやすさをモットーとしており、これからもその方針は崩さないつもりだ。