【ブラウザのプロキシ設定】ローカルアドレス,例外,自動構成スクリプト,WPAD,グループポリシー

プロキシの設定は OS で1つの設定するわけではなく、アプリケーションごとに設定が必要です。最近では Windows の IE の設定を流用するものも増えていますが、例えばブラウザでも IE と Firefox は (IE の流用もできますが)異なる設定ができますし、ウィルス対策ソフト等もアプリによっては個別に設定する必要があります。

インターネットは通信できるけど同じ端末で他のアプリケーションの http 通信ができない、といった場合はプロキシ設定が疑わしいでしょう。

PC でのプロキシの設定パターン

PC でのプロキシの設定パターンは 4 種類あります。

  1. プロキシサーバの IP アドレス、ポートを指定する
  2. 自動構成スクリプトを使用する (スクリプトの URL を指定し、そこからダウンロードし実行)
  3. 設定を自動的に検出する (DHCP からスクリプト URL 情報を取得する仕組み。WPAD と呼ばれる。)
  4. Active Directory のグループポリシーで設定する

1. プロキシサーバの IP アドレス、ポートを指定する場合

InternetExplorer での設定の場合を以下に示します。

i. メニューバーの「ツール」をクリック(Alt + X でも表示可能)し、「インターネットオプション」をクリック

ii. 「接続」タブをクリックし、さらに「LANの設定」をクリック

iii. 「LAN にプロキシサーバーを使用する(これらの設定は~~)にチェックを入れ、「アドレス」と「ポート」に プロキシサーバの IP アドレス、および待ち受けポート番号を入力する (図の例では 192.0.2.1:8080)

なお、「ローカルアドレスにはプロキシサーバーを使用しない」というのは、『(FQDN ではなく) ホスト名のみを指定した場合には プロキシサーバを経由せず直接通信をする』という設定です。これは abc.example.co.jp という FQDN 形式ではなく、 abc という.(ドット)のない NetBIOS 形式のことです。この NetBIOS 形式のホスト名は通常、WINS での名前解決や、DNS の GlobalNames での名前解決が為されます。

プロキシの例外設定の書き方

特定サイトだけプロキシサーバを経由したくない場合は「詳細設定」をクリックし、「次で始まるアドレスにはプロキシを使用しない」でサイトのドメイン名や IP アドレスを記載します。その際、"0 文字以上の任意の文字列" を意味する * (アスタリスク) が利用できます。複数並べるときはセミコロン(;)で区切ります。

図の例では goo.ne.jp のサブドメインの Web サーバ、yahoo.co.jp のサブドメインの Web サーバ、 192.168.0.0/16 の範囲の Web サーバはプロキシサーバを経由しません。

2. 自動構成スクリプトを使用する (スクリプトの URL を指定し、そこからダウンロードし実行)

プロキシサーバが複数台あり、負荷分散のために条件によって利用するプロキシサーバを変えたい場合、 プロキシサーバのメンテナンス時にエンドユーザの負荷なくプロキシサーバの変更をしたい場合などに 効果的な設定です。

pac とは Proxy Auto Configuration のことで、その正体は javascript の FindProxyForURL 関数です。

同じく InternetExplorer 側での設定ですが、i, ii までは前回と同じ手順で、iii の画面で 「自動構成スクリプトを使用する」にチェックを入れるのみです。

クライアントの設定は以上ですが、当然ながら、URL にスクリプトを配置する作業が必要になります。

上図の例では、192.0.2.2 の Web サーバを設置し、トップディレクトリに proxy.pac という名前のスクリプトファイルを配置します。

自動構成スクリプトのサンプル例

以下の pac ファイルにより以下のプロキシ接続が可能になります。

    1. 宛先 FQDN が.example.com で終わる、もしくは宛先IPアドレスが10.1.1.0/24 の場合はプロキシを使わず直接接続
    2. 宛先 URL が https://www.google.com/の任意のページの場合は 172.16.1.1 TCP:8080のプロキシサーバを利用
    3. 自分のIPアドレスが 192.168. で始まるアドレスの場合は 172.16.1.2 TCP:8080のプロキシサーバを利用
    4. それ以外の場合は proxy.example.com TCP:8080 のプロキシサーバを利用

------- proxy.pac -------

function FindProxyForURL(url, host) {

if ( dnsDomainIs (host, ".example.com")
|| isInNet (host, "10.1.1.0", "255.255.255.0"))
return "DIRECT";

else if ( shExpMatch (url, "https://www.google.com/*"))
return "PROXY 172.16.1.1:8080";

else if ( shExpMatch (myIpAddress(),"192.168.*"))
return "PROXY 172.16.1.2:8080";

else
return "PROXY proxy.example.com:8080";

}

その他の書き方の例は MS のサイトに載っていますのでご参照下さい。

3. 設定を自動的に検出する(DHCPから情報を取得)

WPAD (Web Proxy Auto-Discovery) という機能を使います。条件として、そのクライアントが DHCP により NW 情報を取得できる必要があります。

同じく InternetExplorer での設定ですが、i ,ii までは前回と同じ手順で、iii の画面で 「設定を自動的に検出する」にチェックを入れるのみです。

また、事前準備として 2. と同様 Web サーバとスクリプトの配置が必要で、それに加え、DHCP サーバ側に そのクライアントが NW 情報を受け取るスコープの「オプション番号:252」にスクリプトを配置した URL を設定します。

4. Active Directory のグループポリシーで設定する

Windows の Active Directory の機能により設定します。条件としては Active Directory に参加している Windows 端末で、 かつ InternetExplorer /Edge のみに有効です。

プロキシの設定の全部、もしくは一部が『変更できない』だとか『消せない』だとか『チェックが外れない』だとか『グレーアウトしてる』だとか『設定が保存されない』ということがあれば、ほぼ間違いなくこのグループポリシーによって制限されてますので、その端末での設定変更は諦めるしかないでしょう。

設定されているProxyサーバのIPアドレスの確認

コマンドプロンプトにて、以下コマンドで確認できます。

netsh winhttp show proxy