先日の台風はみなさん通勤、通学いかがだったでしょうか。
朝の忙しい時間帯だったので、大変なおもいをされた方も多いかと思います。
まつぼっくりも5時ごろ目が覚めてテレビやインターネットで祈るように(電車止まれ!?)見ておりましたが、7時ごろあきらめ会社に向かいました。
このブログは今までOpenStackのプログラミングを取り上げてきましたが、
環境設定のところでiptablesの設定を色々と変更致しました。
「iptablesとはなんぞや?」という人とか
「iptables?知ってるよ!でもちゃんと書いたことは無いけどね!」という人も
「LPICで勉強したよ!」という方もう一度おさらいしてみませんか?
iptablesの概要図をご覧ください。ここではfilterとNATテーブルの内容を中心に記載しています。
iptablesは大きく4つのテーブル(役割)に分けられており、iptablesで一番代表的なファイアーウォールの機能はfilterテーブル内で行われています。
他にIPアドレスなどの変換はNATテーブルで行っています。
このようにiptablesは役割別に大きくテーブルの区分けがされており、テーブル内の動作毎にチェーン(Chain)が設定されていると考えると判りやすいと思います。
なお、Chainはその中の細かなルールです。
さて先日OpenStackのプログラム環境の作成時に以下のiptablesの設定を入れましたね。
設定内容を分解してみましょう。
--------------------------------
-A INPUT -s 172.16.0.22/32 -p tcp -m multiport --dports 9292 -m comment --comment "002 glance incoming glance_172.16.0.22" -j ACCEPT
--------------------------------
・「-A」はこのルールを追加することを意味しています。
・次にテーブル名を意味する「-t filter」が入るはずなのですが、filterの場合のみ省略可能です。
NATの場合は「-t NAT」が入ります。
・「INPUT」はパケットの入力するチェーンを指定しています。
・「-s」は送信元のIPアドレスです。
・「-p」はプロトコルです。
・「-m」は特別で、カーネルモジュールをロードして様々なパケットマッチを行うことができます。
・「--dports」は送信先ポートです。
・ 「-j」は条件に合ったときのアクション
iptablesの内容は「iptables -L」コマンドで確認する事ができます。
-----------------------------------------------------
# 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
-----------------------------------------------------
INPUT、FORWARD、OUTPUTのChainがあることがわかります。
Chain横の括弧内に書かれているのはデフォルトのポリシーといって、Chain内にある全てに該当しない場合に適用されます。
iptablesはコマンドで「/etc/sysconfig/iptables」に書き込みができます。
以下のようにすると追加したルールはチェーンの一番下に追加されます。
# iptables -A INPUT -s 172.16.0.22/32 -p tcp -m multiport --dports 9292 -j ACCEPT
ルールは上部からマッチしたところで解釈されてしまうため、チェーンの一番最後に追加されると不都合が生じることがあります。
追加する行番号を指定する場合は以下のようにすればよいでしょう
# iptables -I INPUT 3 -s 172.16.0.22/32 -p tcp -m multiport --dports 9292 -j ACCEPT
不要なルールを削除するときは「-D」を入れて実行します。
# iptables -D INPUT -s 172.16.0.22/32 -p tcp -m multiport --dports 9292 -j ACCEPT
完了したら保存し、サービスを再起動します。
/etc/init.d/iptables save
service iptables restart
OpenStackのようにiptablesが書き込まれているときはエディタで「/etc/sysconfig/iptables」を直接編集した方が早いし楽かもしれません。
保存したらiptablesのサービス再起動です。