プロキシ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 #
コメント