概要
社内ネットワークなどでプロキシサーバーを利用している場合、PACファイル(Proxy Auto-Configuration)を使用して、アクセス先に応じたプロキシの振り分けを行うことがあります。
PACファイルの設定を変更する際、いきなり本番環境に反映するのではなく、事前に動作を確認しておきたいことがあります。
今回は、Windows上に保存したPACファイルを使用して、プロキシ設定を検証する方法を紹介します。
Windows標準のプロキシ設定からPACファイルを指定するため、特別なツールをインストールする必要はありません。
なお、ブラウザの仕様や会社のセキュリティポリシーなど、利用環境によってはローカルのPACファイルを読み込めない場合がありますので、ご注意ください。
サンプルコード
今回は、以下のようなPACファイルを使用します。
function FindProxyForURL(url, host) {
// 社内ドメインは直接接続
if (dnsDomainIs(host, ".example.local")) {
return "DIRECT";
}
// 特定のサイトは直接接続
if (host === "example.com") {
return "DIRECT";
}
// その他の通信はプロキシを経由
return "PROXY 192.0.2.10:8080";
}
このサンプルでは、アクセス先によって以下のように通信経路を振り分けています。
| アクセス先 | 接続方法 |
|---|---|
*.example.local | 直接接続 |
example.com | 直接接続 |
| その他のサイト | 192.0.2.10:8080 を経由 |
DIRECT はプロキシを使用せずに直接接続する指定です。
PROXY は、指定したプロキシサーバーを経由する指定です。
※ 192.0.2.10 は説明用のIPアドレスです。実際にプロキシ経由の通信を確認する場合は、利用可能なプロキシサーバーのIPアドレスとポート番号に変更してください。
詳細
1. PACファイルとは
PACファイルは、アクセス先のURLやホスト名などをもとに、プロキシサーバーを利用するかどうかを自動的に判断するためのJavaScriptファイルです。
PACファイルには、FindProxyForURL() という関数を記述します。
function FindProxyForURL(url, host) {
return "DIRECT";
}
この関数は、アクセス先のURLとホスト名を受け取り、利用するプロキシサーバーや直接接続の指定を返します。
なお、PACファイルとWPADは厳密には異なります。
- PAC:プロキシの振り分けルールを記述したファイル
- WPAD:PACファイルの場所を自動検出する仕組み
今回はWPADによる自動検出ではなく、ローカルに保存したPACファイルを直接指定して検証します。
2. PACファイルを作成する
まず、Windows上にPACファイルを保存するフォルダーを作成します。
今回は以下のフォルダーを使用します。
C:\wpadtest
続いて、メモ帳などのテキストエディターでサンプルコードを記述し、以下のファイル名で保存します。
C:\wpadtest\wpad.dat
PACファイルは .pac という拡張子でも利用されますが、今回は wpad.dat としています。
ファイルを保存する際は、拡張子が .txt にならないように注意してください。
3. Windowsのプロキシ設定を変更する
続いて、Windowsのプロキシ設定からPACファイルを指定します。
Windows 11の「設定」を開き、以下の順番で移動します。
設定 → ネットワークとインターネット → プロキシ
【画像挿入:Windows 11のプロキシ設定画面】
「自動プロキシセットアップ」にある「セットアップ スクリプトを使う」の「セットアップ」をクリックします。
表示された画面で「セットアップ スクリプトを使う」をオンにし、スクリプトのアドレスに以下を入力します。
file:///C:/wpadtest/wpad.dat
【画像挿入:セットアップスクリプトの設定画面】
Windowsのファイルパスでは \ を使用しますが、URLとして指定する場合は / を使用します。
設定後、「保存」をクリックします。
これで、Windowsのプロキシ設定にローカルのPACファイルが指定されます。
ただし、設定が保存できても、利用するアプリケーションがローカルPACファイルを正常に読み込めるとは限りません。
4. PACファイルの動作を確認する
設定が完了したら、ブラウザなどでWebサイトにアクセスし、プロキシの振り分けが想定どおりに行われるか確認します。
今回のサンプルコードでは、以下の条件で接続方法が切り替わります。
if (host === "example.com") {
return "DIRECT";
}
example.com へのアクセスは、プロキシを経由せずに直接接続します。
一方、それ以外のサイトについては、以下の設定が適用されます。
return "PROXY 192.0.2.10:8080";
こちらは指定したプロキシサーバーを経由する設定です。
実際の検証では、PACファイルに設定した接続先やプロキシサーバーに合わせて、通信が想定どおりに振り分けられているかを確認してください。
なお、Webサイトが正常に表示されたことだけでは、想定した経路で通信しているとは限りません。
必要に応じて、プロキシサーバーのアクセスログなども確認すると確実です。
5. PACファイルを修正した場合
PACファイルの振り分け条件を変更した場合は、ファイルを上書き保存します。
ただし、PACファイルの内容がキャッシュされている場合、変更がすぐに反映されないことがあります。
その場合は、プロキシ設定を再設定するか、検証に使用しているアプリケーションを再起動して、改めて動作を確認してください。
6. 利用時の注意事項
今回の方法では、Windowsのプロキシ設定からローカルのPACファイルを指定しています。
ただし、ブラウザの仕様や会社のセキュリティポリシーなど、利用環境によってはローカルのPACファイルを読み込めない場合がありますので、ご注意ください。
また、Windowsのプロキシ設定を変更すると、同じ設定を参照するほかのアプリケーションにも影響する可能性があります。
検証は、可能であればテスト用の端末や検証環境で実施してください。
7. 検証後は設定を戻す
検証が完了したら、Windowsのプロキシ設定を元に戻します。
「設定 → ネットワークとインターネット → プロキシ」を開き、「セットアップ スクリプトを使う」を検証前の設定に戻してください。
もともと別のPACファイルを利用していた場合は、元のスクリプトアドレスを再設定します。
検証用のPACファイルを指定したままにすると、通常のWebアクセスに影響する可能性があるため、忘れずに戻しておきましょう。
おわりに
今回は、Windows上に保存したPACファイルを使用して、プロキシ設定を検証する方法を紹介しました。
PACファイルの設定変更を行う場合、本番環境に反映する前に動作を確認しておくことで、想定外の通信影響を防ぎやすくなります。
Windows標準のプロキシ設定からPACファイルを指定できるため、検証用のWebサーバーなどを用意せずに設定を試すことができます。
ただし、ローカルPACファイルの読み込み可否は利用環境によって異なるため、設定後は実際の通信経路まで確認することをおすすめします。
