Q 質問 プロキシ・サーバーの追加変更のたびに,社内のすべてのWWWブラウザを設定し直すのは大変です。変更を指示しても,設定方法が分からないユーザーも少なくありません。何か良い方法はありますか。

A 回答 PAC(Proxy Auto-Config)と呼ぶ自動設定スクリプトを使えば,実現は容易です


写真1●WWWブラウザのプロキシの自動設定
Netscape Navigatorは[編集]メニューの[設定]で,Internet Explorerは[ツール]メニューの[インターネット オプション]で設定できる。設定ファイルのある場所(URL)を入力しておけば,自動的に読み込み,反映される仕組みになっている
 プロキシ・サーバーを追加変更するたびに,社内にある一台一台のマシンの設定を変更するのは大変です。WWWブラウザが備えるプロキシの自動設定機能を使うのが便利です。

 例えばInternet Explorer(IE)やNetscape Navigator(NN)では,PAC(Proxy Auto-Config)と呼ぶスクリプトを使ってプロキシを自動設定できます。PACファイルの場所をWWWブラウザに設定しておけば,起動後,最初にURLを入力した際に読み込まれ,自動的に設定されます。

 PACファイルの場所は「http://192.168.0.5/proxy.pac」といったURLで指定することができます。PACファイルを部門のWWWサーバーなどに置いておけば設定を一元管理することが可能です(写真1[拡大表示])。プロキシの変更などはサーバー側のPACファイルを書き換えるだけで対応できるので,エンドユーザーは上記のようなURLを1回設定するだけで済みます。ただ,NNの場合はWWWサーバー側でPACファイルのMIMEタイプをapplication/x-ns-proxy-autoconfigに設定しておく必要があります。

障害対応や負荷分散も可能

図1●自動設定スクリプトの例
プロキシ・サーバーがダウンした場合に他のサーバーにアクセスさせる,アクセス先に応じてプロキシ・サーバーへの接続方法を変える,クライアントのIPアドレスに応じてプロキシ・サーバーを変える,といった使い方が可能

 PACを使うメリットは,設定の自動化や一元管理だけではありません。設定ファイルはJavaScriptで記述できるので,サーバーの障害対応や負荷分散などにも応用可能です。具体的な記述方法を見てみましょう(図1[拡大表示])。

 PACの書き方は簡単で,FindProxyForURL(url,host)と呼ぶ関数を記述するだけです。この関数の戻り値がプロキシの設定になります。戻り値は「return PROXY サーバー名(またはIPアドレス):ポート番号」のように記述します。FindProxyForURL()の引き数にあるurlはアクセスするURL,hostはURLの://から,最初の:または/までの間にあるホスト名になります。

 戻り値で複数のプロキシ・サーバーを;で区切って記述した場合は,左端から順にアクセスを試みます。例えば図1(1)のように記述すれば,proxy1がダウンした場合はproxy2にアクセスを試み,proxy2がダウンしていた場合はプロキシを経由せずに直接接続(DIRECT)します。

 プロキシ・サーバーの負荷分散も可能です。トラフィックの均等な分散は難しいですが,図1(2)のように記述すれば,httpやftpといったプロトコルの違い,comやorgといったドメインの違い,などに応じてアクセスするプロキシ・サーバーを分けることが可能です。

 このほか,場所や日時に応じてプロキシ・サーバーの設定を変更することもできます。図1(3)のように,myIpAddress()と呼ぶ関数を使えばクライアントのIPアドレスに応じてアクセスするプロキシ・サーバーを変更できます。出先や自宅などでパソコンを持ち歩いて使うユーザーの場合はIPアドレスを見て会社かどうかを判別するようなPACファイルをローカル・ディスクに置いておけば(NNはfile:///C|/proxy.pac,IEはfile://C:/proxy.pacのように設定),設定変更の手間を省くことが可能です。

 PACの記述方法に関しては,米Netscape Communications(http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html)やマイクロソフト(http://www.microsoft.com/windows2000/ja/advanced/help/corpexjs.htm)が公開しているドキュメントが参考になります。

(本誌)