・内部アドレス→外部アドレス・内部アドレスやプライベートアドレスが外部に漏れないようにブロック市販のブロードバンドルータと同じような働きをするLinuxルータを作ります。Linuxサーバに2枚のNICを組み込み、一方にはプロバイダなどから与えられたグローバルアドレス、もう一方にはプライベートアドレスを設定します(以下、グローバルアドレス側を外部ネット、プライベートアドレス側を内部ネットとします)。外部から内部ネットへの接続は一切許可しませんが、内部ネットから外部ネットへの接続に制限は設けません。忘れがちなサーバ自身のフィルタ設定は、第1回のテンプレート5からHTTPサービスを削除したものを利用します。テンプレート6の表示(別ウィンドウ)テンプレート6の解説3〜7行目で環境に合わせた値を設定します。Linuxルータの内部ネット側アドレスです。メンテナンスホストが外部ネット側にある場合は、テンプレートの修正が必要になるので注意が必要です。その方法は後述します。Linuxをルータとして機能させるには、IPパケットをフォワード(転送)する必要があります。そこで、9行目の処理をLinux起動時に1度だけ実行します。/proc/sys/net/ipv4/ip_forward14〜16行目でiptablesの初期化を行います。前回の処理に15行目を追加しています。nat」でnatテーブルを指定し、「-F」で初期化を行います。このように、テーブルの指定には「-t」オプションを使用します。21〜28行目でデフォルトルールを設定します。ESTABLISHED,RELATED」となっているものに通過許可(ACCEPT)を与えます。ACCEPT今回は、Linuxルータ自身が処理するパケットだけではなく、フォワードするパケットについてもデフォルトルールを設ける必要があります。今回は内部ネットから外部ネットへの接続つまり「eth1から入ってeth0へ出ていくパケット」は制限なしとし、27行目を追加します。それに合わせて、28行目で「eth0からeth1へ出ていくパケット」もステートフル性を確認できたものを許可するようにします。ここからがテンプレート6の要、IPマスカレードの設定です。IPマスカレードを行う内部ネット発のパケットが外部ネットでルーティングされるには、出ていくパケットのソースアドレスをプライベートアドレスからLinuxルータの外部ネット側(eth0)のアドレスに書き換える必要があります(SNAT)。MASQUERADE」を指定し、複数のパケットが1つの外部アドレスを共有できるようにIPマスカレードを使用します。この1行でブロードバンドルータの役割のほとんどをこなしています。POSTROUTINGはnatテーブルでしか使用できません。MASQUERADE」もPOSTROUTINGチェインと一緒に用いる必要があります。MASQUERADE」を指定した場合、すなわちDNATとIPマスカレードを使用する場合はエラーを出力します。iptablesのテーブル/チェインの概念は、こうしたオプション指定ミスを減少させる働きもあります。60〜63行目では、「内部アドレスやプライベートアドレスが外部ネットワークに漏れないようにブロックする」を実施しています。DROPマナーとしてプライベートアドレスを外部に漏出しないのは当然として、最近ではIPスプーフィングでソースIPにプライベートアドレスを使用するケースもあるため、そうしたパケットと同一視されないようにします。68〜72行目までが、テンプレート5と同じく破棄されるパケットのロギングです。FORWARDチェインに対してもロギングを設定しています。LOGGINGshスクリプトが用意できたら、前回のようにshスクリプトを実行して確認します。市販のブロードバンドルータと同じというには、可用性やセキュリティ面で物足りなさが残ります。これらの機能についてはおいおい紹介していくことにします。改造のヒント:メンテナンスホストが外部ネット側にある場合33〜50行目はテンプレート5と同じですが、環境によっては見直しが必要になります。前述した、「メンテナンスホストが外部ネット側にある場合」のことです。メンテナンスホストからのssh接続を許可している48〜50行目を見てみましょう。ACCEPTメンテナンスホストのアドレス変数である$trusthostに対して、サーバのインターフェイスIPに使用されているのは内部ネット側のアドレス$my_internal_ipになっています。メンテナンスホストを外部ネットに設ける場合、$trusthostを単に書き換えても内部ネット側のアドレス$my_internal_ipには到達しません。そのような場合は、$my_internal_ipを$my_internet_ipに置き換え、Linuxルータの外部ネット側アドレスを参照するようにします。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。