Caution |
標準規格にならなかったというあたりが微妙なのですが、 それでもこれくらいしか PROXY 自動設定の規格がないので、 「これを使うしかない」という消極的な解。 本当は、みんなで Service Location Protocol 対応が正しいはず。 あんま進んでないけどな〜。 |
ここでは自分のドメインが example.org だとしましょう。
(1) wpad.example.org という WWW サーバを作成。
(2) wpad.dat を作成。場所は WWW サーバのルート。 つまり URL
http://wpad.example.org/wpad.datでアクセス可能なところへファイルを作成。
ブラウザの PROXY 設定を「自動設定」に変更。
Firefox (windows) の場合: ツール → オプション → 詳細 → ネットワーク → 接続設定 → 「このネットワークのプロキシ設定を自動検出する(W)」にチェック。
IE8 の場合: ツール → インターネットオプション → 接続 → LANの設定 → 「設定を自動的に検出する(A)」にチェック。 その下にある「プロキシサーバー」の項目のチェックを外すことを忘れずに。
起動時や設定変更時に wpad.dat を見に行くようですが、 それ以外にどのタイミングで再度読み込むのか分かりません。
wpad.dat を編集した場合、ブラウザを再起動して動作を確認してください。
なお、本来の規格では、ドメインを上に探索してくれるはず。 つまり pc.sub.example.org であれば、 「wpad.sub.example.org wpad.example.org wpad.org という順に探索する」 ことになっていたらしい。 ところが Firefox 3.0.x は wpad.sub.example.org しか探索しないらしい。 3.6.x がどう動くかは未確認。
wpad.dat は各ドメインごとに作るものなので、 細かいことは考えず、 このくらい大味な設定で良いのだと思います( プライベートアドレスなら PROXY 使え)。
function FindProxyForURL(url, host) { ip_addr = myIpAddress(); if (isInNet(ip_addr, "10.0.0.0", "255.0.0.0") || isInNet(ip_addr, "172.16.0.0", "255.240.0.0") || isInNet(ip_addr, "192.168.0.0", "255.255.0.0") ) { return "PROXY proxy.example.org:3128"; } return "DIRECT"; }
○ 適当な設定(固定 IP な設定)の Windows さんでは、 どのドメインをサーチしてよいかが分からないので うまく動作しないのではないかと思います。 正しく設定してある OS なら別に何の問題もないんですけどね。
○ Opera は wpad.dat ではなく proxy.pac という名前でないと駄目らしいです。 wpad.dat が完成したらコピーしておきましょう。
% cp -p wpad.dat proxy.pacと言われていますが、知るかぎり Opera で wpad は動作しません。
○ ウィルスチェッカの類は?というと、 たいていの Windows 用ソフトウエアは IE の設定を見ているので、 WPAD にしても問題なく追従してくるようです。 詳細は、よく分かりませんが、動くので大丈夫でしょう。
○ バグ: firefox 3.5.x は windows でも unix でも firefox ftp://xxx.example.org/ で起動すると WPAD を見ません。 firefox http://xxx.example.org/ で起動して、 途中から ftp:// へ飛ぶ場合は初回起動時に読み込んだ WPAD を使うので大丈夫。 コマンドラインから起動しない人たちには無関係な話ですが、BUG は BUG っす。
○ https: や ftp: に対しては、 明示的に PROXY を返さないとうまくいかない説があります。 とりあえず IE8 と Firefox 3.5.x では不要ですが…
例: function FindProxyForURL(url, host) { ip_addr = myIpAddress(); if (isInNet(ip_addr, "10.0.0.0", "255.0.0.0") || isInNet(ip_addr, "172.16.0.0", "255.240.0.0") || isInNet(ip_addr, "192.168.0.0", "255.255.0.0") ) { if (shExpMatch(url, "http:*") || shExpMatch(url, "https:*") || shExpMatch(url, "ftp:*") ) { return "PROXY proxy.example.org:3128"; } return "PROXY proxy.example.org:3128"; } return "DIRECT"; }
○ デバッグの仕方。そりゃ、tcpdump するに決まってますわ。
# tcpdump port 80 or port 443(GUI じゃなきゃだめなら wireshark でも使うよろし)
もう、そのまんまという URL findproxyforurl.com に必要十分な情報が載ってますな。 あとは、これを見てごにょごにょしてください。
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >