WPAD

WPAD(Web Proxy Auto-Discovery Protocol)とは、WEBブラウザが使うproxyの設定を自動でやってしまおうと言うもの。
IEのプロキシの設定を見ると、「設定を自動的に検出する」と言うチェックボックスがある。これがずっと謎だったのだが、WPADと言うプロトコルで検出すると言うことがわかった。
WPADの説明を読むと、以下のようなことを行うらしい。
  1. DHCPを利用している場合、DHCPのDHCPINFORMを用いて設定ファイルのURLを取得する。
  2. DHCPから情報が得られない場合は、DNSから自分が所属するドメインのwpadと言う名前のホストから設定ファイルを取得する。(host1.wizard-limit.netと言うホストの場合、http://wpad.wizard-limit.net/wpad.dat を設定ファイルとして読み込む)
wizard-limit.netでは、DHCPを利用しているので、DHCPを使うことにする。 まずは、isc-dhcpdのバージョンを上げる。portsの最新から、isc-dhcp-3.0.1.r11 をインストール。
以前の設定のままで使おうとしたら、ddns-update-style ad-hoc; の行でエラーが出る。ここでは DDNSは使っていないので、ddns-update-style none; にする。
続いて、以下をdhcpd.conf に追加する。
authoritative;
option wpad code 252 = string;
option wpad "http://gw.wizard-limit.net/wpad.dat"
最後の行は、対象の subnet セクションの中。gw.wizard-limit.net は、内部LAN向けのWEBサーバのアドレスだ。
続いて、gw.wizard-limit.netに、wpad.datを置く。
function FindProxyForURL(url, host) {
  if (isInNet(host, "192.168.0.0", "255.255.255.0")) {
    return "DIRECT";
  }
  return "PROXY gw.wizard-limit.net:3128";
}
書式は、通常のproxy.pacと同じ。この設定は、内部LANは直接見に行き、それ以外はproxyを通す設定。
さらに、WindowsのIEにはバグがあり、URLの最後の1文字を消してしまうらしいので、wpad.datからwpad.da にリンクを貼る。
この状態で、LAN内のPCのIEの設定を「設定を自動的に検出する」にしてアクセスしてみると、httpのアクセスログに /wpad.da へのアクセスが確認され、期待通りに動いているようだ。
false@wizard-limit.net