私は新卒で入社したころはネットワーク系のソフトウェア設計をしていてたのですが,いろいろあって今はそれよりも上流設計寄りで,ネットワークやソフトウェアの専門的な知識があまりなくてもなんとかなってしまう装置の開発業務や,その装置を用いたサービスの運用業務に携わっています。
先日,社内の研修で久し振りにネットワーク系のシミュレータの操作をした際に,題記のiptablesについて新たな気づきがあったので書いておきます。
■iptablesとは
Google先生に訊けばいろいろ出てくるのであまり言及はしませんが,自分の中でiptablesは「Linux OSで動作するパケットフィルタリング型のファイアウォールの設定を操作するコマンド」という理解をしています。 PCルータを作る際によく使った思い出があります。
※本記事では,chainやポリシー,ルールといった用語が説明もなく出てくることがございますが,論点がぼけないようにするため説明を割愛していますので,わからない方は別途Google先生に訊いてみてください。
■iptables -F とは
iptables -F は,「#iptables -F [chain]」の書式で入力した際に,指定したchainのルールを全て消すコマンドです。
chainを指定しないと全てのchainの全てのルールが全て消えます。
iptables -F の後に,iptablesに設定してあるルールを表示するコマンドである iptables -L を実行すると,下記のようになります。
#iptables -F #iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
■iptables -F の注意点
上記のように,各chainに設定されたルールが全削除されるので初期化されたように見えるのですが,-F オプションではポリシーは初期化されません。
上記では全chainのポリシーが初期状態のACCEPTになっていますが,事前に-P オプションでDROPなどの他のポリシーにしていた場合,そのまま残ります。
環境がないので試していませんが,INPUTのポリシーがDROPになっているときに遠隔でFlushすると,その後の操作を受け付けなくなってしまうと予想できます。
これを防ぐため,iptables -F の前にはポリシーの設定を見直すようにした方がよいかと思います。
■感想
私は昔,iptables -F を実行すればiptablesの初期化ができるものと思って試験系の環境設定をしていたことがあるのですが,本記事の内容を知らずにやってなんとかなっていたのはラッキーだったと思います。
今の仕事を続けていく上でiptablesコマンドを使うことはそうそうないと思いますが,有事の際にはこれを思い出して活かしていければと思いました。