!!!ネットワーク構成 さて、オフィス(もしくは自宅の仕事場)などで 複数のサーバを使ってネットワーク環境を構築する場合は 数台のマシンをつなげることになると思います。 また、Webサーバを立ち上げて外から(インターネットから)サイトを見ることが できるようにする、という場合はローカル(LAN内)とは区別した場所にサーバを 配置する必要が出てきます。 ネットワーク環境構築にあたっては大きく、「グローバル」「DMZ」「LAN」3つのエリアに分かれます。それぞれがグループ化されていると思ってください。 {{ref_image network_20041106.png}} これは構成例のほんの1例で、その他にも組み合わせはあります。これは後ほど。 !!グローバル グローバルネットワーク、といってもぶっちゃけて言うと「インターネットから見えるネットワーク領域」です。 ここは、外部(インターネット)から見える必要がありますので「グローバルアドレス」という プロバイダから提供されている固定IPアドレスにて認識されます。 これは、世界にたった1つだけの自分自身のアドレスとなります。 ここの外部と直接触れるマシンにて、ファイアウォール(上図のルータマシン)を実装します。ルータマシン内では外部とのデータのやりとりを監視・制御することになります。 !!DMZ DMZ(DeMilitarized Zone)とは、ネットワークで言うと「グレーゾーン」で外部からも アクセスできてLAN(内部ネットワーク)からもアクセスできる領域です。 ここには何を置くのかというと、Webサーバやメールサーバなど、外部からのアクセスを許可するものを置きます。 代表的なモノとして以下のが考えられます。 *Webサーバ(http/https) *メールサーバ(sendmail/pop3) *FTPサーバ *DNSサーバ ちなみに「サーバ」とは、物理的なマシンを指す単語でもありますが、 サービス(プログラム)1つ1つのことをサーバと呼ぶこともあります。 1台のマシンにてWebサーバ・メールサーバ・FTPサーバをまとめることもできますし、 別々のサーバマシンに分離することもできます。 さて話を戻して「DMZ」は、 外部から進入された場合でもLAN環境までは汚染されないように、といった 切り離しができるネットワーク領域でもあります。 上図のルータマシンを境にした右半分は自身が管理するネットワーク領域になりますが、 それぞれの領域は独立しており、ルータサーバのファイアウォールによって 「どの情報が通過してよいのか」というのが制御されています。 勝手にLAN領域からDMZ領域に入ったりその逆を行ったり、はできないようになっています。 この交通整理もルータ(ファイアウォール)にて行います。 !!LAN LAN(Local Area Network)は、マシン同士が自由に管理できるネットワーク領域です。 この中では(基本的に)自由に行き来することができ、ファイアウォールのおかげで 外部からの進入も防いでいる「安全圏内」となります。 オフィスなどでは「社内ネットワーク」として「イントラネット」という単語を耳にしたりします。 「イントラネット」は、LAN内のプチネットワーク環境にてサーバを立ち上げて、 そこで情報管理をする、といったことを行う概念です。 外部からはその情報を見ることができないため、「守られている」となるわけです。 しかし、上記はあくまでも理想であり完璧・万全なものではありません。 セキュリティホールを見つけることができたとするなら、 もしかしたら外部からの進入を許してしまうかもしれませんし。 ですので、ネットワーク環境に関しては疑ってかかりましょう。常に全否定で(すべての通信は拒否)考えて、必要な情報(パケット)だけを許可する、といった考え方が 大切のように思います。 !!ゲートウェイとは 上記では3つのネットワーク領域に分かれている、と説明しました。 そのネットワークごとの「関所」として存在するサーバのことを'''「ゲートウェイ」'''と 呼びます。外部のインターネットに直接つながるマシンは「ルータ」兼「ゲートウェイ」とすることが多いような気がします(もちろん分けることも可能)。 ゲートウェイに関してはマシンのIPアドレスと関連付けたほうがわかりやすいので、 一度仮想的なIPアドレスを振ってみて考えてみることにします。 {{ref_image network_20041106_2.png}} 例えば外部に出すIPアドレスを「11.22.33.44」とし(これはプロバイダからもらえるIPアドレスを指定します。決して、適当にIP振っての実験はやらないでください。もし、該当するIPがすでに他の方が使っている場合は迷惑になりますので)、 ルータサーバに3つのNIC(LANカード)を挿したとします。 NIC1枚に対して1つのIPアドレスが割り振られる、というのがミソです。 「なぜ3枚も挿すの?」というのがあるかもしれませんが、ルータ・ゲートウェイは「関所」の 役割をはたします。ですので、それぞれの領域にアクセスできる必要があります。 eth0/eth1/eth2のようなのがLinuxで言うネットワーク識別IDになります。 それぞれがNIC1枚1枚を表しており、それぞれのデータ(パケット)をどのネットワーク領域(もしくはマシン)に送るか、というのを制御するのが「'''ルータ'''」の役割になります。 ルータマシンの3枚のNICのIPアドレスは以下のように定義しているとします。 ,NICのID,IPアドレス,ネットマスク,ネットワークアドレス,役目 ,eth0,11.22.33.44,---,---,グローバルネットワークに直接つながっている ,eth1,192.168.10.1,255.255.255.0,192.168.10.0,DMZ領域 ,eth2,192.168.0.1,255.255.255.0,192.168.0.0,LAN領域 ルータマシンのそれぞれに対してグローバル「11.22.33.44」、DMZ「192.168.10.x」、LAN「192.168.0.x」でネットワーク領域を分けています。上の表のネットワークアドレス(IPアドレスの末尾が0になっているもの)ごとにグループ化されているのが分かりますでしょうか。 異なるネットワーク領域の場合は「ネットワークアドレスを分ける」ようにしてください。同じネットワークアドレスを使っているのに実際は別のエリア(関所であるルータサーバで挿している複数のNICのネットワークアドレスにて同じものがある)、としてしまうと ネットワークの挙動が妖しくなります。 !ネットワークアドレスとは? ちょっと脇道にそれますが、「ネットワークアドレス」というのが出てきました。 これは、IPアドレスの末尾が0のものを表すことが多いです(そうでな場合もある)。 「192.168.0.0」というネットワークアドレスを与えられたとしたら、 自分を含む仲間のマシンは192.168.0.1〜192.168.0.254に存在することになります。 これらに当てはまるマシンへは同じネットワークと見なして自由に行き来が可能です。 このIPアドレスの先頭は「192.168.0.0」となり、これがネットワークアドレス となります。逆に末尾の「192.168.0.255」のアドレスは「ブロードキャストアドレス」と 呼ばれ、「192.168.0.0」に属するネットワーク全部に同じ情報を送る場合に使用される 予約のアドレスとなります。 つまりはIPアドレスの末尾での0と255は予約されていて使えないよ、ということになります。 !ネットマスクとは? 「ネットマスク」で「255.255.255.0」と記述した場合、これはIPアドレスをAND条件で マスクしたものが同じネットワーク内では普遍になる、ということを表します。 例えば「192.168.0.x」のアドレスを持つ場合のIPアドレスの 先頭から3ケタ分(192.168.0)は255.255.255.0にてマスクされます。 結果、「192.168.0.0〜192.168.0.255」までが使用可能となります。 このネットマスクの表現は省略して表されることもあり「192.168.0.0/255.255.255.0」を 「192.168.0.0/24」みたいに記述することがあります。 これは、IPアドレスの先頭から24ビット分(つまり先頭から3バイト分)をマスクする、 という意味になります。 「192.168.0.0/28」とした場合は「192.168.0.0〜192.168.0.15」が 使用できることになります。 この場合(/28)はネットワークアドレスは「192.168.0.0」となり、 ブロードキャストアドレスは「192.168.0.15」となります。 では「192.168.0.1/32」だとどうでしょうか?この場合はフルにマスクされており、 「192.168.0.1」以外は存在しません。単体のIPを指定する場合は「xx.xx.xx.xx」の 指定は「xx.xx.xx.xx/32」と省略されているものと考えることができます。 このルータマシンは1台のマシンですので、それぞれのネットワークを「192.168.10.1」および「192.168.0.1」を経由して自由に行き来できます。 この入り口(または出口)になる部分を「ゲートウェイ」と呼びます。 運用時でのゲートウェイは1台のマシンの事を示すのではなくて、「グローバルのゲートウェイ(11.22.33.44)」「DMZでのゲートウェイ(192.168.10.1)」「LANでのゲートウェイ(192.168.0.1)」のようにNICごとに存在することになります。 総称して1台のマシンがゲートウェイになっているわけですね。 ネットワークアドレス192.168.10.0に属する192.168.10.1〜192.168.10.254のマシンは、 ゲートウェイは「192.168.10.1」となり、 ネットワークアドレス192.168.0.0に属する192.168.0.1〜192.168.0.254のマシンは、 ゲートウェイは「192.168.0.1」となります。 そして、外部(インターネット)に接続するためのグローバルなゲートウェイは「11.22.33.44」となります。 ネットワーク領域によって指定するゲートウェイは違いますので(けど同じマシン上)ご注意ください。 !!ファイアウォールとは? では、ちょくちょく耳にする「ファイアウォール」とは何を表すのでしょうか? これは、「フィルタリング」と「IPアドレス変換」を行うサービスと見ることができます。 ルータ内で動くサービスになります。ここでは概念だけ説明します。 「フィルタリング」とは、特定のIPアドレスまたはポート番号のアクセスを許可するかどうか、 といった情報です。これにより、HTTPでのWebアクセスだけ許したり特定のIPアドレスからしかサーバにアクセスできないようにしたりできます。 また、どのNICからの受信を許し、どのNICへ送信するかといった経路も指定することができます(DMZにだけ送信を許可するとか)。 「IPアドレス変換」は'''NAT'''(Network Address Translation)と呼ばれるもので、 IPアドレスを相互変換を行う機能です。 ポート番号の変換まで拡張したものを'''NAPT'''(Network Address Port Translation) と言います。 これは、例えば外部から「11.22.33.44」宛てに来たアクセスを内部的に「192.168.10.2」 に変換して、「ルータにアクセスしたのに実は内部のDMZ内のサーバにアクセスしている」 といった細工を施すことができます。 当然ながら、外部からは実はDMZ内にアクセスしているといったことは見えませんので セキュリティを高めるのには有効です。 また、ポート80番(HTTP)のアクセスは「192.168.10.2」へ、ポート20/21番(FTP)の アクセスは「192.168.10.3」へ、みたいな交通整理を行うこともできるようになります。 「フィルタリング」「IPアドレス変換」を総合して管理するのが「ファイアウォール」の 役割であり、Linuxでは「[[iptables]]」にて制御を行うことになります。 実際はルータサーバだけでなく、DMZ内のサーバにもファイアウォール設定を行う、 さらに言えばLAN内のサーバ・クライアントにもファイアウォール(パーソナルファイアウォール)を導入するのが安全のためには良いかもしれません。 !!ネットワーク構成のバリエーション さて、上記では1つのルータマシンにて3つのNICを挿して3つの領域を行き来する例を 示しました。 しかし、もしDMZ内のマシンが乗っ取られた場合は、DMZ上のマシンを踏み台にしてLAN内に入ってこられるかもしれません。 ちょっと経路としては面倒ですが、ファイアウォールマシン2つにてDMZ領域を 挟んでしまう、とすると多少はマシになります。 {{ref_image network_20041106_3.png}} LANに進入するためには「ファイアウォール1」と「ファイアウォール2」の2つを 通らないとLAN内には入れないようにします。 また、DMZからLANへのアクセスは必要なもの以外(Webサーバの応答・メールでのやりとり・DNSのやりとりなど以外)はすべてはじく、とします。 物理的に分けてしまうわけですね。 ですが、これで万全というのはありません。なので、定期的なメンテナンスは必須になるかと 思われます。