2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プロキシ自動構成ファイル(PAC ファイル)の配置場所を作成する

Last updated at Posted at 2026-01-12

はじめに

プロキシを自動構成するために、PAC ファイル という仕組みがあります。
従来は この PAC ファイルを共有フォルダに保存して社内へ提供することができたようなのですが、現在では これができません。Web サイトを用意して配置する必要があるため、そのためのノウハウを記事にしました。

公開情報:Windows 10 では、ファイル プロトコルによって参照される PAC ファイルが読み取られません
https://learn.microsoft.com/ja-jp/previous-versions/troubleshoot/browsers/administration/cannot-read-pac-file
(上記の記事より抜粋)
image.png

Support Blog:PAC ファイルについて
https://microsoft.github.io/jpbrowsers/internet-explorer-microsoft-edge/pac/
(上記の記事より抜粋)
image.png

ポイント
上記の説明に準拠した Web サーバーを用意する必要があります。


構築手順

1. IIS で PAC ファイルのダウンロード場所を準備する

以下の段取りで進めて行きます。

1-1. 運用する予定の 全クライアント PC がアクセス可能な場所に Web サーバー を配置する
1-2. PAC ファイルを用意する
1-3. IIS をインストールして PAC ファイルを公開する
1-4. IIS 設定を PAC ファイル用にカスタマイズする
1-5. 単体テスト

1-1. 運用する予定の 全クライアント PC がアクセス可能な場所に Web サーバー を配置する

この表題の要件を満たすために、本記事では Azure 上の VM で、Windows Server 2022 を使っています。

OS を日本語化する場合は、以下の記事も参考にしてください(2022 も同じ手順です)

1-2. PAC ファイルを用意する

(前章で展開した VM 上で作業します)

本記事では、以下の内容をテキストエディタで作成し、TESTPROXY.pac というファイル名で保存した想定で手順を進めます。

サンプル PAC ファイル

function FindProxyForURL(url, host)
{
    var direct = "DIRECT";
    var proxyServer = "PROXY 127.0.0.1:8080";
 
    if(shExpMatch(host, "*.qiita.com")
|| shExpMatch(host, "*.msn.com")
|| shExpMatch(host, "*.bing.com"))
    {
        return direct;
    }
 
    return proxyServer;
}

上記のサンプルでは、Qiita , MSN , bing のサイトの場合のみ、プロキシを経由せずにダイレクトに通信させています。その他のサイトは 127.0.0.1:8080 のプロキシが採用されます。

さらに、本格的な PAC ファイルについても、以下の私の記事で紹介しています。
サンプルでの動作が確認できたら、以下の記事の PAC ファイルの採用も検討してみてください。

[GSA] Microsoft 365 の ローカルブレイクアウト用 PACファイル の検討
https://qiita.com/carol0226/items/f5e69ad6926c4e528916


1-3. IIS をインストールして PAC ファイルを Web 公開する

1.以下の記事を参考に VM に IIS をインストールします。

2.Azure Portal を使い、Azure VM の DNS を編集して 名前解決できるようにします。

(1) 以下の 赤枠 を参照すると 未構成 になっているので、この箇所をクリックします。
image.png

(2) 以下の画面で、DNS 名ラベルに任意の名前を入力して 保存 を押します。
なお、この名前は インターネット上でユニークである必要があるので、エラーにならない名前を考えてください。
image.png

(3) VM に 名前が付与されて、以下のような表示になっていれば OK です。
この DNS 名 で、世界中から アクセスできるようになりました。
image.png

3.ネットワークセキュリティグループ (NSG) を編集し HTTP (Port:80) の受信を許可します。
image.png

以下の行が追加されていれば OK です。
image.png

注意
1行目の RDP は、リモートデスクトップでメンテナンスをするためのルールです。
ソース IP を、会社 や 自宅 のアドレスのみ 等に制限しておかないと簡単にハッキングされてしまいますので、注意しましょう。

4.以上の作業によって、IIS の Web サイトが 任意のインターネット上の PC から参照できるようになっていれば OK です。Azure VM を 使わない場合も、同様のレベルまで構成されていれば OK です。
image.png

おまけ:HTTPS (443) で公開したい場合
PAC ファイルは、HTTP(80) 経由でも公開できますが、もし HTTPS (443) で公開したい場合は、以下の追加手順も実施してください。

HTTPS (443) のための追加手順を見るには、"ココ" をクリック

(1) 自己署名証明書を使う場合は、以下の記事を参考に作業を行います。
公的証明書を使う場合は、(1) は SKIP して (2) へ進みます。

コマンドで Web サービス用の 自己署名証明書 を発行する手順
https://qiita.com/carol0226/items/8663842e2c7422de7e55

ポイント
上記の記事の中で、サーバー証明書 作成時の 以下の箇所 は、以下を参考に 前章で付与した DNS 名 に置き換えてください。

(記事の内容)
 Subject = 'CN=vpnnogu.japaneast.cloudapp.azure.com'
 DnsName = 'vpnnogu.japaneast.cloudapp.azure.com'
(置き換える)
 Subject = 'CN=officeiis.japaneast.cloudapp.azure.com'
 DnsName = 'officeiis.japaneast.cloudapp.azure.com'

以下は、今回作成した DNS 名 で 自己署名証明書 を作成したところです。
image.png

(2) 以下の記事を参考に IIS に 証明書をバインドします。
この記事で ドメインと証明書を購入して IIS にバインドし、外部公開する手順を説明していますが、自己署名証明書 を使う場合は、ドメインと証明書の購入箇所は SKIP してください。

IIS に公的証明書をバインドして 外部公開する
https://qiita.com/carol0226/items/97488c72035214e7868f

自己署名証明書 をバインドする場合
今回の検証のために、自己署名証明書 をバインドしたときの画面キャプチャです。
image.png

(3) ネットワークセキュリティグループ (NSG) で HTTPS (443) のポートを公開してください。
image.png

(4) 任意の PC から HTTPS でサイトにアクセスして 鍵マークを押した際に、セキュリティ保護 の状態が確認できれば OK です。
image.png

5.続いて 前章で用意した PAC ファイルを IIS のサイト配下にコピーします。

(1) エクスプローラーを使って、C:\Inetpub\wwwroot というフォルダを開き、その配下に 任意のフォルダを作成します。

(2) 作成したフォルダへ移動し、この場所に 用意した PAC ファイルをコピーします。
以下のように配置されていれば OK です。
image.png

1-4. IIS 設定を PAC ファイル用にカスタマイズする

本章が 目的を達成するために、最重要となるノウハウとなります。

前章でコピーした PAC ファイルをダウンロードしようとすると、以下のようなエラーが発生します。

(拡張子 .pac で 404 エラーが発生)
image.png

以下は、pac ファイルをダウンロードした際の IIS ログの抜粋です。
testproxy.pac は 404 エラーが出ています。

ログの場所 (C:\inetpub\logs\LogFiles\W3SVC1)
image.png

拡張子 (.pac) が 404 エラーとなる原因と対策
原因は、IIS の既定の設定では、拡張子 (.pac) が登録されていないため、Web 公開されない状態になっているためです。

対策として IIS マネージャー を使って、MIME の種類 として 拡張子 (.pac) を登録することで解決できます。

(1) IIS マネージャーを起動します。
image.png

(2) IIS マネージャーで、Default Web Site を開き MIME の種類 をダブルクリックして開きます。
image.png

(3) 以下の画面にて 拡張子 (.pac) を探しても 初めはありません。
そのため、右上の 追加 ボタンを押して作業を行った結果、緑枠 のように .pac が追加された状態になれば OK です。
image.png

追加時には、以下のように MIME の種類を application/x-ns-proxy-autoconfig に設定して OK を押します。
image.png

(4) 設定変更後に、クライアントから ブラウザで資材のパスを直接指定した際に、以下のように .pac がダウンロードできるようになっているはずです。
image.png

ここまで構成ができていれば、PAC ファイルを IIS 経由で導入する準備が終わりました。

テスト

作成した環境をテストするには、検証用の PC で、以下の設定を行います。
自動構成スクリプトを使用する にチェックを入れる。
アドレス 欄には、PAC ファイル のダウンロードに成功した際の URL を入力します。

正常に PAC ファイルを読み込めていれば、サンプルの PAC のファイルの場合は Qiita , MSN , bing のサイトであればダイレクトに表示されることを確認できます。
https://qiita.com
https://www.bing.com
https://www.msn.com

※その他のサイトはプロキシ経由となりますが、そのプロキシのアドレスに疎通ができない場合は、以下のようなエラーになります。
この状態まで確認できれば、PAC ファイルの配置場所としては、正常に機能していることが判ります。
image.png
※プロキシサーバーがあるのであれば、プロキシのログを見て 確認した方が良いでしょう。

もし、PAC ファイルが壊れている場合は、設定が無視されて すべてのサイトが ダイレクトに通信されるようになります。PAC ファイル内の記述を再確認してください。

PAC ファイルは、ブラウザにキャッシュされて利用されます。
そのため、テストのために PAC ファイルを編集した場合の確認の際は、キャッシュをクリアすることを忘れないようにしましょう。

以下のとおり、自動構成スクリプトを使用する を ① → ② → ③ → ④ の順に オフ / オン することで、最新の PAC ファイルが読み込まれます。

さいごに

以上の構成で PAC ファイルの置き場所を用意することができました。
私自身も、この置き場所を用意する前に 共有フォルダ上に PAC ファイルを保存して うまく動作せずにハマっていましたので、同じような境遇の方のお役に立てれば幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?