DHCPでWEBプロキシ設定を配布:WPAD
自分用の備忘録的な感じでまとめておきます。
DHCPサーバはIPアドレスはもちろん、デフォルトゲートウェイやDNSサーバなど、ネットワーク接続に必要な情報を配布するのですが、WEBプロキシに関してはなぜかあまりまともに標準化されなかったようです。マイクロソフトがIEに実装したことにより、WPAD(Web Proxy Auto-Discovery Protocol)というのがデファクト・スタンダードになっています。
WPADはJavaScriptでプロキシの設定を記述しておけば、それを解釈してOSがネットワーク設定を自動で行うようなものです。このファイルの取得先をDHCPで配布する仕組みもあります。
ISC(オープンソースのDHCPサーバ)のDHCPサーバであれば、下記のような感じで設定をすればWPADファイルの取得先をDHCPで配布することができます。私が作ったProDHCPも同じ記述で使えます。
host komata-wpad-test {
option wpad-curl code 252 = text;
option wpad-curl "http://www.ncad.co.jp/wpad.dat";
hardware ethernet 00:01:02:03:04:05;
}
DHCPのオプション252番を使ってURLを配布します。WPADファイルはHTTPで取得するのが標準的なようです。wpad.datというファイル名(名前は自由)でWEBサーバに下記のようなファイルを置いておきます。
function FindProxyForURL(url,host)
{
return "PROXY 192.168.0.211:8080";
}
この例では、全てのWEBアクセスは192.168.0.211で8080番で動くプロキシを使う感じになります。とりあえず、私の場合はそのホストで自作の負荷テストツールSADEE 2のプロキシを動かしておきました。
詳細はどこかを調べていただくとして、実際に使ってみた様子をまとめておきます。
Windowsの場合は、ネットワークの設定で「設定を自動的に検出する」をチェックしておくとWPADを使うようになります。
Windows7
Windows7の場合、DHCPDISCOVERやDHCPREQUESTで252番は要求しない感じです。
アドレス取得を終えてから、DHCPINFORMで252番を要求します。
その後、実際にWPADファイルをHTTPでGETしています。
なぜか、私の環境(VM配下)ではIE11がWPADを配布されると異常終了してしまいます。。Chromeは正しくプロキシを使って動きました。Firefoxはプロキシを使ってくれませんでした。
Windows8
Windows8は、DHCPDISCOVER、DHCPREQUESTで252番を要求し、DHCPINFORMは使わないようです。
アドレスを取得した後にWPADファイルをHTTPでGETします。Windows8だとIE11も正しくプロキシを使って動きました。
MacOSXの場合は、ネットワークのプロキシで、「自動プロキシ検出」をチェックするとWAPDを使うようになります。
MacOSXもDHCPDISCOVER、DHCPREQUESTで252番を要求し、DHCPINFORMは使いません。
IPアドレス取得後にWPADファイルをHTTPでGETします。
MacOSXでもFirefoxはプロキシを使ってくれませんでした(なにか設定が足りないのかも?)が、Safari、Chromeはプロキシを使って動きました。
なお、プロキシが動いていないと、Chromeの場合はプロキシを使わずに動く感じですが、IE11やSafariはエラーになりました。
ProDHCP採用のある案件でWPADを使うということで、一応自分で調べておいたのでした。。