Hebikuzure's Tech Memo

2013年12月22日

Internet Explorer のプロキシ設定覚書

Filed under: Yet Another Internet Explorer Advent Calendar 2013 — hebikuzure @ 11:01 午後

この記事は “Yet Another Internet Explorer Advent Calendar 2013” の 22 日目です。


Internet Explorer でのプロキシ設定についての覚書です。

Internet Explorer のプロキシ設定は「システム プロキシ設定」

Internet Explorer の Web アクセス機能は、Windows のシステム モジュールでもある wininet.dll が担っており、プロキシの設定もこの wininet.dll の動作に対する設定となり、「システム プロキシ」と呼ばれます。そしてこの wininet.dll の機能は WIN32 API の WinInet API として公開されています。そのためこの AIP を利用するアプリケーションは Internet Explorer のプロキシ設定と同じプロキシ設定を利用する事になります。
また Web アクセスに WinInet API を利用しないアプリケーションでも、WinInet の設定を読み取って同じ設定を利用できるようになっている事があります。

プロキシ設定は「インターネット オプション」から

Internet Explorer のプロキシ設定は「インターネット オプション」から行います。[接続] タブで [LAN の設定] をクリックすると、設定画面が表示されます。
自動構成を行う場合は [設定を自動的に検出する] (WPAD を利用する場合) または [自動構成スクリプトを使用する] (自動構成スクリプト ファイル、.pac ファイルの URL を指定する場合) の何れかにチェックを入れます。手動構成の場合は [LAN にプロキシ サーバーを使用する] にチェックを入れ、プロキシ サーバーのアドレスとポートを入力します。プロトコルごとに異なるプロキシ サーバーを利用するなどの設定をする場合は、[詳細設定] をクリックして画面を開きます。

なおプロキシが無いネットワークを利用する場合、自動構成のチェックを外すと (WPAD の検出などの動作が省略されるため) Internet Explorer を起動してページが表示されるまでの時間が少し短縮できます。

image

※ 上記ダイアログで [詳細設定] をクリックするとこの画面が開きます
image

手動構成と自動構成は排他では無い

ダイアログボックスにも書かれている通り、自動構成と手動構成は排他的ではなく、両方を指定する事が可能です。両方を有効にした場合は、手動構成の設定が自動構成の設定で上書きされます。動作が分かりにくくなるため、両方ともに指定するのは止めた方が良いでしょう。

自動検出の仕組み

自動構成で [設定を自動的に検出する] を有効にした場合、Internet Explorer はWPAD (Web プロキシ自動発見) に基づいて自動構成スクリプト ファイルを検出し、利用します。WPAD は以下のような方法で機能します

  1. Internet Explorer は起動後最初に Web アクセスする際、利用しているネットワーク接続が DHCP を利用しているか確認します
  2. ネットワーク接続が DHCP を利用している場合、DHCP サーバーに DHCPINFORM メッセージを送信し、自動構成スクリプトのアドレスを要求します
  3. DHCP サーバーがオプション 252 で自動構成スクリプトの URL を返信すると、Internet Explorer はその URL にアクセスして自動構成スクリプト ファイルを取得します
  4. Internet Explorer はファイルが取得でき、そのファイルが自動構成スクリプトとして有効であれば、その内容に基づいてプロキシを構成します
  5. DHCP サーバーが利用できない場合、あるいは DHCP サーバーが DHCPINFORM メッセージをサポートしていない、オプション 252 を構成していないなどの理由で自動構成スクリプト ファイルの URL を返さない場合、Internet Explorer は “WPAD” というホスト名を DNS サーバーに問い合わせます
    ※ 実際には「WPAD というホスト名 + 利用しているネットワーク接続の DNS サフィックスのドメイン名」が問い合わせされます
  6. WAPD というホスト名が名前解決できると、そのホストのルートにある “wpad.dat” という名前のファイルを HTTP プロトコルでリクエストします
    ※ 例えばクライアントの FQDN が pc.hebikuzure.lochal であれば、http://wpad.hebikuzure.lochal/wpad.dat がリクエストされます
  7. “wpad.dat” ファイルが取得でき、そのファイルが自動構成スクリプトとして有効であれば、その内容に基づいてプロキシを構成します

参考 : 自動検出 (http://technet.microsoft.com/ja-jp/library/gg699445.aspx)

なお、他のブラウザーの自動検出の動作はこれと異なる場合があるため、クロス ブラウザーで自動構成を行うためには、以下のような設定をしておくことが良いようです。

  1. Web サーバーで “http://wpad.(ドメイン名)/” というサイト (ドメイン名はそのネットワークのドメイン名) を作成しておき、そのルートに同じ内容の “wapd.dat” と “proxy.pac” という二つの自動構成スクリプトファイルを配置する
    ※ ブラウザーによって優先して取得するファイル名が異なるためです
  2. DNS で “wpad.(ドメイン名)” が正しく名前解決できるよう構成する
  3. DHCP を利用していて DHCP サーバーが DHCPINFORM をサポートしている場合は、オプション 252 で自動構成スクリプトの URL として上記の “http://wpad.(ドメイン名)/proxy.pac” を設定する

自動検出、自動構成は標準化されていない

上記でブラウザーによって動作が異なる事を説明しているように、プロキシ自動構成と自動検出の方法は標準化された仕様がありません。そのためブラウザーやサーバーが準拠すべき明確な規格はありません。

WPAD についてははるか昔に「Web Proxy Auto-Discovery Protocol」というドラフトが IETF に提案されていたのですが、そのまま標準化される事なく現在に至っています。また自動構成スクリプト ファイルの書式も標準化されていません。

自動構成スクリプトの書式

自動構成スクリプトは JavaScript の文法で記述する事になっていますが、この書式は元々 Netscape Navigator で利用されていた物が現在でもそのまま使われています。以前は Netscape 社の Web サイトにリファレンスがあったのですが、現在はページが無くなっているのでアーカイブを見るか、“FindProxyForURL” の Web サイトにあるリファレンス、The Practical Proxy PAC File Guide にあるリファレンスなどが参考になると思います。

また IE6 リソースキットの記事「Chapter 26 – Using Automatic Configuration, Automatic Proxy, and Automatic Detection」や Internet Explorer 8 展開ガイドの「付録 B : 自動プロキシ構成スクリプトの例」も参考になると思います。

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

WordPress.com Blog.