Я брошу эту проблему на произвол судьбы.
Мы только начали использовать прокси для регистрации использования Интернета пользователями по именам пользователей. Это настроено на ISA Server 2004 (который находится на нашем сервере Интернет-шлюза). Включены интегрированные и базовые формы аутентификации, а также требуются все пользователи для аутентификации. Я поставил галочку и включил массив настроек на ISA, чтобы он игнорировал внутренние адреса и домены.
Чтобы направить наших пользователей на наш прокси-сервер, я использовал обнаружение с помощью DHCPINFORM на нашем DHCP-сервере, чтобы указать клиентам сетевое расположение файла proxy.pac (Описано здесь). Я также установил wpad.dat в той же области, что и proxy.pac (оба файла идентичны).
Текущий файл proxy.pac, с которым я играю:
function FindProxyForURL(url, host)
{
// Trying to save localhost
if (localHostOrDomainIs(host, "localhost")) return "DIRECT";
if shExpMatch (url, "http://localhost*") return "DIRECT";
// If specific URL needs to bypass proxy, send traffic direct.
var resolved_ip = dnsResolve(host);
if (isInNet(resolved_ip, "172.22.145.0", "255.255.255.0") ||
isInNet(resolved_ip, "192.168.1.0", "255.255.255.0") ||
isInNet(resolved_ip, "127.0.0.1", "255.255.255.255"))
return "DIRECT";
return "PROXY ^gatewaynamehere^.baytech.local:8080; DIRECT";
}
(Наш внутренний IP-адрес - это диапазон 172.22.145. *)
Теперь у меня возникают проблемы, связанные с тем, что файл proxy.pac заставляет браузер переходить на прокси-сервер всякий раз, когда запрашивается localhost или 127.0.0.1. Я могу видеть запросы на ISA-сервере, когда отслеживаю свой IP-адрес. Я могу запросить другие серверы в нашей интрасети, и это не касается прокси (что правильно). Но я подозреваю, что это из-за настроек на ISA Server, а не из-за файла proxy.pac (я мог ошибаться).
Побочная проблема заключается в том, что нам нужно вручную указать Firefox на файл proxy.pac, чтобы он работал в Firefox. Также меньшинство пользователей IE также необходимо указывать вручную. Лучше всего настроить наши браузеры на автоматическое обнаружение (как IE, так и FF), и все будет работать независимо от того, где находится пользователь.
Установка его вручную с помощью групповой политики или настроек браузера не идеальна, поскольку вызывает проблемы у людей, у которых есть ноутбуки, которые забирают домой.
Я также попытался отключить кеш прокси IE, как описано здесь: http://support.microsoft.com/kb/271361
Некоторые сайты с информацией о прокси, которые я просмотрел:
Заранее спасибо.
Хорошо, я думаю, у меня это сейчас работает ...
Моя настоящая проблема заключалась в том, что он вообще никогда не запускался. Также, если в файле proxy.pac есть ошибка, он решает молча умереть. Итак, я вернулся к основам и попытался запустить его локально на своей машине, используя действительно простой файл proxy.pac. (Я был потрясен, когда мои предупреждения начали появляться впервые).
Как только у меня была эта работа, я строил ее построчно, пока не получил что-то, что работало бы для моей сети.
Еще немного важной информации для всех будущих читателей этой ветки!
Затем я переместил его обратно на сервер, на котором он был изначально, а затем столкнулся с проблемами с автоматическим обнаружением как для FF, так и для IE. После небольшого исследования кажется, что IE7 и IE8 по-разному обрабатывают pac-файлы, когда включено автоматическое обнаружение. (Я использую метод подбора прокси-сервера - DHCP). Таким образом, IE8, похоже, требует ipconfig / обновить для приобретения нового, в то время как IE7 требует ipconfig / Renew и ipconfig / flushdns
Также: Firefox сообщал только о предупреждениях, которые были у меня в консоли ошибок (Ctrl + Shift + J), в то время как IE использовал всплывающее окно для предупреждений.
Через несколько дней опция DHCP 252 распространилась на все рабочие станции. Однако FF, похоже, все еще испытывает трудности с автоматическим обнаружением, поэтому я просто использую ручную точку или надстройку FoxyProxy в качестве решения.
Спасибо за вклад!
Совет: для отладки pac-файлов в firefox вы можете использовать alert("blah")
для отладки сообщений, а затем посмотрите в Консоль ошибок (меню Инструменты), где они будут напечатаны.
Я не пробовал, но, согласно документации sun.com, функция IsInNet принимает в качестве первого параметра хост, а не IP.
поэтому я думаю, что это:
if (isInNet(resolved_ip, "172.22.145.0", "255.255.255.0") ||
isInNet(resolved_ip, "192.168.1.0", "255.255.255.0") ||
isInNet(resolved_ip, "127.0.0.1", "255.255.255.255"))
return "DIRECT";
следует изменить на это:
if (isInNet(host, "172.22.145.0", "255.255.255.0") ||
isInNet(host, "192.168.1.0", "255.255.255.0") ||
isInNet(host, "127.0.0.1", "255.255.255.255"))
return "DIRECT";
Браузеры на основе Mozilla позволяют использовать URL-адрес file:, что значительно упрощает создание прототипа и тестирование файла .pac.
Я не пробовал этого в IE.