トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

ネットワーク構成

ネットワーク構成

さて、オフィス(もしくは自宅の仕事場)などで複数のサーバを使ってネットワーク環境を構築する場合は数台のマシンをつなげることになると思います。

また、Webサーバを立ち上げて外から(インターネットから)サイトを見ることができるようにする、という場合はローカル(LAN内)とは区別した場所にサーバを配置する必要が出てきます。

ネットワーク環境構築にあたっては大きく、「グローバル」「DMZ」「LAN」3つのエリアに分かれます。それぞれがグループ化されていると思ってください。

これは構成例のほんの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アドレスを振ってみて考えてみることにします。

例えば外部に出す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のIDIPアドレスネットマスクネットワークアドレス役目
eth011.22.33.44------グローバルネットワークに直接つながっている
eth1192.168.10.1255.255.255.0192.168.10.0DMZ領域
eth2192.168.0.1255.255.255.0192.168.0.0LAN領域

ルータマシンのそれぞれに対してグローバル「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領域を挟んでしまう、とすると多少はマシになります。

LANに進入するためには「ファイアウォール1」と「ファイアウォール2」の2つを通らないとLAN内には入れないようにします。また、DMZからLANへのアクセスは必要なもの以外(Webサーバの応答・メールでのやりとり・DNSのやりとりなど以外)はすべてはじく、とします。物理的に分けてしまうわけですね。

ですが、これで万全というのはありません。なので、定期的なメンテナンスは必須になるかと思われます。

Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.