Задача:
Сделать так чтобы настройки прокси-сервера на переносимых за пределы корпоративной сети компьютерах автоматически выставлялись на использование прокси когда компьютер внутри сети, и прямое соединение с интернет когда компьютер вне ее.
Решение:
Исследование показывает что не все браузеры адекватно отрабатывают определение собственного ip-адреса при исполнении .pac файла. Написано серверное решение, cgi-скрипт на языке perl, который в зависимости от адреса узла определяет какую версию файла выдать. Файл автонастройки прописан в свойствах MacOS и в настройках Opera. В Firefox выставлена настройка "Автоматически определять настройки прокси для этой сети", в сети настроен wpad, как по dhcp, так и по dns. Поддержка в IE не проверялась, но теоретически должно работать.
Исходный код скрипта:
!/usr/bin/perl
print "Content-type: application/x-ns-proxy-autoconfig\n\n";
my $remote = $ENV{'REMOTE_ADDR'};
if ($remote =~ /^192\.168\./) {
print <<EOF;
function FindProxyForURL(url, host) {
if (shExpMatch(url, "*.mydomain.ru/*")) {return "DIRECT";}
if (shExpMatch(url, "*.mydomain.ru/*:*")) {return "DIRECT";}
return "PROXY 192.168.1.2:3128";
}
EOF
} else {
print <<EOF;
function FindProxyForURL(url, host) {
return "DIRECT";
}
EOF
}
Добавлено в настройка apache (не совсем верно с точки зрения MIME):
AddType proxy/pac .dat
AddType proxy/pac .da
...
Action proxy/pac /cgi-bin/pac.cgi
Созданы пустые файлы в корне http-сервера:
wpad.dat
wpad.da
Создана запись cname в DNS где wpad.ms45.edu.ru указывает на сервер отдающий wpad.dat.