プロキシ自動構成(Proxy Auto-Configuration)ファイル

Proxy Auto-Configuration

プロキシPAC(馬から落ちて落馬した的な?)をいまさらながら作ってみた。

内部サーバの名前解決の関係や自宅から実家のアドレスを利用して外にでたいときなどブラウザのプロキシ設定を変更したい時がある。これをそれぞれのPCのそれぞれのブラウザでやってしまうとどんな変更を行ったか忘れてしまうので一元管理を行う意味でプロキシ自動構成ファイルを設定してみる。

apacheの設定

AddType application/x-ns-proxy-autoconfig .pac .pa .pace .dat .da

PACファイルの作成

ここの例3をそのまま使わせてもらう。プロキシのアドレスとポート番号は実際のものに変更する。
ちなみに、PACのファイル名には拡張子pacが必要。今回はproxy.pacとする。

function FindProxyForURL(url, host)
 {
 if (isResolvable(host))
 return "DIRECT";
 else
 return "PROXY proxy:80";
 }

テストツール

作成したPACファイルをテストするツールがあったので使ってみた。

テストツールpactesterのインストール

pacparserというパッケージの中のpactesterコマンドを利用する。fedora用パッケージは作成されていないようなので自分でビルドする必要がある。

# python3 -m pip install pacparser

でいけるはずだが、当方の環境ではうまくできなかったのでgit上のソースから作成した。

ソースの入手。

# wget https://github.com/manugarg/pacparser/archive/refs/tags/v1.4.3.zip

展開。

# unzip v1.4.3.zip

ビルド。

# make -C src

インストール。これでpactesterコマンドがインストールされる。

# make -C src install

pythonモジュールのインストール

必要な人は以下のコマンドを実行してpython用のモジュールをインストールする。

ただし、私の環境ではビルドするために以下のコマンドを実行しておく必要があった。

# cd /usr/bin
# ln -s python3 python

ビルド。

# make -C src pymod

インストール。これでpactesterコマンドがインストールされる。

# make -C src install-pymod

pactesterの使い方

# pactester
pactester.c: You didn't specify the PAC file

Usage:  pactester <-p pacfile> <-u url> [-h host] [-c client_ip] [-e]
        pactester <-p pacfile> <-f urlslist> [-c client_ip] [-e]

Options:
  -p pacfile   : PAC file to test (specify '-' to read from standard input)
  -u url       : URL to test for
  -h host      : Host part of the URL
  -c client_ip : client IP address (as returned by myIpAddres() function
                 in PAC files), defaults to IP address on which it is running.
  -e           : Deprecated: IPv6 extensions are enabledby default now.
  -f urlslist  : a file containing list of URLs to be tested.
  -v           : print version and exit
#

さきほどのPACで試してみる。

# pactester -p proxy.pac -u https://www.google.co.jp/
DIRECT
# pactester -p proxy.pac -u https://aaa.bbb/
PROXY proxy:80
#

コメント

タイトルとURLをコピーしました