運用

Windows 2000 LAN防衛術
ISA Server 2000によるWeb Proxy&ファイアウォール実践構築テクニック

第3回 ISA ServerのWeb Proxy機能

デジタルアドバンテージ
2002/03/21


 前回まででISA Serverの基本的な機能や概要、インストール方法について述べたので、今回はWeb Proxy機能について詳しくみていくことにする。

 Proxyサーバを利用する第一の目的は、インターネット上のWebサーバへのアクセスの高速化であろう。これを実現するためにISA Serverでは、いったんアクセスされたWebサーバ上のオブジェクト(ISA Serverでは「HTTPオブジェクト」などと呼んでいる)をクライアントに返すとともに、ローカルのディスク(キャッシュ)上にも保存しておき、以後同じ要求があればキャッシュから返すようにしている(「Web Proxyキャッシング」機能という)。これによってインターネットへの実際のアクセスを抑制するとともに、クライアントから見たWebアクセスの高速化が可能になる。Proxyサーバを利用するユーザーが増えれば増えるほどキャッシュが有効に機能することになり、狭帯域のインターネット・アクセス回線でも多くのユーザー間で効率よく共有することが可能になる。

 しかしこのようなオブジェクトのキャッシュを行う場合、オブジェクトをいつまでキャッシュしておけばよいかというのは、Proxyサーバのパフォーマンスやユーザーの使い勝手を決める上で大きな問題となる。一度アクセスしたオブジェクトがいつまでも有効であるとみなすと、Webサーバ上のデータが更新されても、クライアント側の画面は更新されないことになる。例えば新聞社のニュース・サイトの内容が、いつ見ても同じになってしまったりする。もちろんこのような場合でも、例えばInternet ExplorerならばCtrl+[更新]ボタンを押して強制的に再ロードさせ、最新のWebページの内容を表示させることができるが、これではユーザーにとっては不便であろう。オブジェクトの有効期限を適切に管理し、なるべく最新のWebページ情報を提供しつつも、インターネット・アクセス回線のトラフィックを抑えることは、Proxyサーバにとっては重要な機能である。

 ユーザーのインターネット・アクセス回線の特性やWebの利用状態になどに応じて、最適なHTTPオブジェクトのキャッシングが可能なように、ISA ServerではProxyサービスに関するいくつかのパラメータを管理者が設定できるようになっている。アクセス回線が高速(広帯域)ならばキャッシュの有効時間を短くしてでもオブジェクトの頻繁な更新を実現し、逆に、回線が遅ければ(狭帯域ならば)トラフィックを抑えるために更新頻度を低くする、などのカスタマイズが可能である。

HTTPオブジェクトの最終変更時刻と有効期限

 ISA Serverで管理されるオブジェクト(HTTPオブジェクト)には、時間に関する属性として、「最終変更時刻」と「有効期限」という2つの属性がある。

 「最終変更時刻(last modified)」は、Webサーバ側でオブジェクトに対して与えられた時間属性で、例えばWebサーバ上にアップロードされた時間や、コンテンツの制作者がそのファイルを作成・変更した時刻などを表している。静的なHTMLファイルや画像ファイルでは、ファイルの最終書き込み時刻がそのまま「最終変更時刻」となるのが一般的である。この属性が省略されている場合は、サーバがら取得した時刻をもって代用する(最近のWebページはページ要求時に動的に作成されることも多く、この属性を持たないことがある)。

 「有効期限」は、そのオブジェクトがいつまで有効であるかを表す情報である。Webサーバ側で設定することもあるが(例えばオブジェクト取得後1時間だけ有効である、など)、なければオブジェクトを取得した側で適当な期間を設定する(例:取得後1時間は有効である、など)。

 この2つの属性はWeb Proxyのキャッシング動作を決める上で重要なので、簡単に説明しておく。ただしProxyサーバでもWebブラウザでも事情は同じなので、Webブラウザの例で示そう。

 コンテンツ制作者がHTMLファイルを作成して、それを例えば3月1日にWebサーバにアップロードしたとする(時分秒は省略)。それをあるユーザーがWebブラウザで、3月2日に最初にブラウズしたとする。ブラウザでは、WebサーバからHTMLファイルを取得して画面に表示するとともに、ローカルのディスクにもキャッシュして、以後は高速にアクセスできるように備えておく。ただし有効期限は3日間と仮定する(よってキャッシュ中のオブジェクトの有効期限は3月5日となる)。

 すると3月5日までは、クライアント側で何回ブラウザを起動しても、Webサーバへのアクセスは『まったく』発生しない。これがキャッシュによる高速化である。

 次に3月6日にブラウザを起動してみる。するとキャッシュ内のオブジェクトの有効期限が切れているので、Webサーバに対して「最終変更時刻」を問い合わせる要求が出される。これはHTMLファイルそのものを要求しているわけではなく、オブジェクト(HTMLファイル)が変更されていないかどうかを調べているだけである(正確には、キャッシュしているオブジェクトの最終変更時刻をサーバに渡して、それよりも新しくなっていないかどうかを問い合わせている)。問い合わせの結果、以前取得したオブジェクトよりも新しいものがなければ(つまりファイルが変更されていなければ)、ローカルのキャッシュからオブジェクトが取り出されて表示されることになる。この場合のトラフィックは、『オブジェクトが変更されていないかどうかの問い合わせ』だけなので、そう多くない。これもキャッシュによる高速化の恩恵である。

 だがもしファイルが変更されていれば、今度はHTMLファイルそのものを取得し直して、ローカルのキャッシュの内容も更新する。いずれも場合でも有効期限はまた延長され、さらに3日間は外部へのアクセスが抑えられることになる。ただしその3日の間にWebサーバ側のファイルが更新されていてもクライアント側では知ることができず、古いWebページを参照することになる。強制的な再ロード(例えばInternet ExplorerならばCtrl+[更新]ボタンを押す)を行えば、最新のWebページを参照することができるが、ユーザーによっては気が付かないかもしれない。このように有効期限を長くすれば、ネットワークのトラフィックを抑えることはできるが、情報が最新ではないという可能性が高くなってくる。といって有効期間を短くすると、ユーザーは常に最新のWebページを参照することはできるが、逆にトラフィックは増加する(この場合でも、最終変更時刻が変更されていない限りWebサーバからHTMLファイルそのものを取得することはないので、まったくキャッシュが役に立たないということではない)。

 ISA Serverでは、オブジェクトの有効期限などのパラメータを適切に制御することにより、ネットワーク・トラフィックと最新オブジェクトの取得頻度のバランスを取ることができる。

 またISA Serverでは、(過去のアクセス履歴から)高頻度のアクセスが予想されるオブジェクトを見つけ出し、それを自動的に取得しておくことによって、キャッシュの内容を常に最新に保っておくという機能も持っている。これを「アクティブ・キャッシング」という。またスケジュールに基づいて、指定されたコンテンツを(明示的に)キャッシングすることもできる。ユーザーがよく参照するWebページを深夜にあらかじめダウンロードしておけば、昼間のネットワーク・トラフィックを抑えながらも、最新のWebページを閲覧することが可能になる。

Web Proxyキャッシュの設定

 Web Proxyキャッシュの基本的な動作を設定するには、ISA管理ツールの[キャッシュの構成]の[プロパティ]メニューを起動する。

Web Proxyのキャッシュ機能の設定
Webキャッシュの設定を行うには、ISA管理ツールで[キャッシュの構成]を選択し、[プロパティ]メニューを起動する。
  [プロパティ]メニューを使ってWeb Proxyの基本的な動作を設定する。

キャッシュの構成

 [全般]メニューでは、現在のWeb Proxyで管理されているキャッシュのサイズが表示される。Web ProxyのキャッシュはNTFSファイル・システム上に確保されることになっているが、ここでは各ドライブ上に置かれたキャッシュ・ファイルの合計サイズが表示される。Internet Explorerのインターネット一時ファイル領域と違って、ISA Serverでは1つのファイルにすべてのHTTPオブジェクトが(インデックス付けされて)格納されている。そのためキャッシュ・ファイルのサイズは非常に巨大になり、ファイル内のランダム・アクセスも頻繁に起こることになる。パフォーマンスを最大限に生かすためには、高速なドライブ上に、フラグメントのない状態でキャッシュ・ファイルを確保するようにしたい。

キャッシュ構成の表示
[全般]メニューでは、現在のWebキャッシュのサイズが表示される。
  全般メニューでは稼動中のWeb Proxyのキャッシュ・サイズが表示されるだけである。
  現在のWeb Proxyのキャッシュ・サイズ。全ドライブの合計で、ここでは10GBytesに設定されている。

HTTPオブジェクトの有効期限の設定

 すでに述べたようにキャッシュ上に格納されるHTTPオブジェクトには有効期限があり、それに基づいてインターネットへアクセスするかどうかを決めているが、その有効期限に対する扱いを設定するのが[キャッシュの構成]の[HTTP]タブである。

 オブジェクトに対して、もともとWebサーバ側で有効期限が指定されている場合は(これを明示的な有効期限という)、それをそのままキャッシュ内に格納したオブジェクトの有効期限として使う。

 しかし有効期限がない場合は、管理者が設定したキャッシュの運用ポリシーに応じて、ISA Server側で適当な有効期限を設定する。ISA Serverでは以下の4つのキャッシュ・ポリシーが用意されているので、ユーザーの要求や許容されるネットワーク・トラフィックなどに応じて設定することができる。これを見れば分かるように、ISA Serverでは、オブジェクトの最終変更時刻(これは一般的にはファイルの更新時刻になっている)から、オブジェクトを取得してキャッシュに書き込んだ時点までの経過時間のうち、20%とか40%を有効期限であるとみなすようになっている。ただし短かすぎると更新が頻繁になるし、長すぎると古いデータを参照してしまう可能性があるため、最小値と最大値で制限をかけている。

ポリシー 意味
頻繁に更新する 明示的な有効期限の指定のないオブジェクトに対しては、有効期限を0に設定する。この結果オブジェクトは、キャッシュはされるがすぐに期限切れとなる。クライアントからのアクセス要求があると、すぐにWebサーバへ最終変更時刻の問い合わせが行われるので、常に最新のWebコンテンツを入手することができる。ただしその分、トラフィックは最大になる。
標準 オブジェクトの最終変更時刻からオブジェクトを取得した時間までの経過時間のうち、20%の時間を有効期限として設定する。ただし最小は15分、最大は1日となるように修正する。つまり明示的な指定がなければ有効期間は15分以上となるので、これよりも頻繁に更新されるようなサイトでは、ユーザー側で強制的な再ロードなどの操作が必要になることがある。これはISA Serverのデフォルト設定値。
頻繁に更新しない 「標準」よりも有効期限を長く確保し、トラフィックを抑える設定。オブジェクトの最終変更時刻からの経過時間のうち、40%を有効期限とする。そして最小値が30分、最大値が2日になるように設定する。
ユーザー設定 ユーザーが自由に決めることができる設定。オブジェクトの最終変更時刻からの経過時間のうち、何%を有効期限とするか、そしてその最小値と最大値はいくつにするかを数値で設定する。
HTTPオブジェクトの有効期限設定ポリシー
HTTPプロトコルでやり取りされるオブジェクト(HTMLファイルや画像ファイルなど)の有効期限を決めるための設定ポリシー。明示的な有効期限が設定されていなオブジェクトに対しては(一般的には有効期限の設定はないことが多い)、この表で示すいずれかの方法を使って有効期限を設定することができる。Webページの更新頻度とネットワーク・トラフィックなどのバランスを考えて管理者が決定しなければならない。デフォルトの[標準]設定では15分から1日の範囲になるように設定される。

 以上のような有効期限に関するポリシーは、[キャッシュの構成]ダイアログの[HTTP]タブで設定する。

HTTPオブジェクトの有効期限の設定
HTTPオブジェクトに対する有効期限の設定方法によって、ネットワークのトラフィックや最新オブジェクトの更新方法などに関する挙動が変わってくる。
  HTTPオブジェクトの有効期限の設定。
  HTTPオブジェクトのキャッシュ機能を有効にするかどうかの設定。デフォルトでは有効になっている。HTTPオブジェクトに有効期限が付いていればその指定に従うが、そうでなければ以下の選択に基づいて適切な有効期限を設定する。
  有効期限のデフォルト値を0にして、常に最新のオブジェクトが取得できるようにする。ただしネットワーク・トラフィックは多くなる。
  標準設定(デフォルト)。オブジェクトの有効期限は最終変更時刻からの経過時間の20%、ただし最小15分、最大1日。
  標準設定に比べて、すべてのしきい値を2倍に延ばしたもの。オブジェクトの有効期限は最終変更時刻からの経過時間の40%、ただし最小30分、最大2日。トラフィックを抑えることを優先した設定。
  すべてのしきい値をユーザーが設定するモード。
 
 

 INDEX
  [運用]Windows 2000 LAN防衛術
第3回 ISA ServerのWeb Proxy機能
    1.アクティブ・キャッシング
    2.自動的なコンテンツのダウンロード
    3.特定サイトへアクセスの許可/禁止
 
 運用


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間