Proxy Auto Configuration (PAC)
Автор: Raven2000.
Оригинал: http://www.lissyara.su/articles/freebsd/trivia/proxy_auto_configuration/
Возникла необходимость автоматически настраивать прокси для всех компьютеров и не бегать к ним, если, например, поменялось что-то на прокси сервере. Для этого существует технология Proxy Auto Configuration (PAC).
Создание файла автоконфигурации прокси
Большинство браузеров можно автоматически сконфигурировать для использование прокси. Данная возможность реализуется при помощи Proxy Auto Configuration (PAC). PAC - файл, в котором содержится только одна функция JavaScript - FindProxyForURL ().
Создадим файл будущего скрипта:# touch wpad.dat
И немного ознакомимся с основными понятиями:Переменная Описание
DIRECT Загрузить обьект непосредственно через указанный URL
PROXY name:port Загрузить обьект через указанный прокси сервер и порт
SOCKS name:port Загрузить обьект через SOCKS сервер по указанному имени сервера и порту
Теперь необходимо указать нужные настройки для браузеров. Возможен выбор из двух вариантов, используйте тот, который вам удобнее, например, я использую второй вариант.
Первый вариантfunction FindProxyForURL(url, host) {
// Local/Internal Websites (.e.g Intranet)
if (shExpMatch(url,"*.example1.com/*")) {return "DIRECT";}
if (shExpMatch(url,"*.example2.com:*/*")) {return "DIRECT";}
// If client machine is on company network
// return proxy otherwise go direct
if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0"))
{return "PROXY 10.10.1.100:8080";} else return {"DIRECT";}
}
Второй вариантfunction FindProxyForURL(url, host)
{
if (isInNet(host, "192.168.1.0", "255.255.255.0")) {
return "DIRECT";
} else {
if (shExpMatch(url, "http:*"))
return "PROXY IP_proxy:3128; DIRECT";
if (shExpMatch(url, "https:*"))
return "PROXY IP_proxy:3128; DIRECT";
if (shExpMatch(url, "ftp:*"))
return "PROXY IP_proxy:2121; DIRECT";
if (shExpMatch(url, "socks:*"))
return "SOCKS IP_proxy:1080; DIRECT";
return "DIRECT";
}
}
Web Proxy Auto-Discovery protocol
Подготовка Apache
Необходимо, чтобы Apache выдавал скрипт при запросе. Для этого надо разрешить обращаться к файлам типа .dat:
1. Добавим в httpd.conf дерективуAddType application/x-ns-proxy-autoconfig .dat
WPAD метод основанный на DNS
Механизм WPAD просто строит цепочку известных URL, начинающихся с доменного имени машины и оканчивающего коротким суффиксом wpad.
Например, доменое имя было example.com., то URL будет следующий:http://wpad.example.com./wpad.dat
Таким образом, браузер будет пытатся загрузить PAC скрипт известного доменного URL.
Для реализации данного метода сделаем следующее:
1. Создим в DNS имя и присвоим ему IP
Например, создаем запись wpad.example.com с IP адресом 192.168.1.12 или создаем alias на существующий хост (что удобнее).
2. Создадим в Apache виртуальный хост с именем wpad.example.com
3. Скопируем скрипт wpad.dat в директорию виртуального хоста
Второй метод WPAD, основанный на DHCP
WPAD просто выдает PAC скрипт с выбранный номером 252 в "аренду" запросившему IP. Браузер получает URL скрипта и просто качает его по ссылке.
1. Добавим в /etc/dhcp/dhcpd.conf следующие строчки.option local-pac-server code 252 = text ;
option local-pac-server "http://wpad.example.com:80/wpad.dat\000" ;
2. Перезапустите DHCP сервер.
Небольшой нюанс - у DHCP приоритет выше, чем у DNS, как следствие - гораздо быстрее. И можно вместо имени сайта указать его IP, в этом случае отсутствуют расходы времени на преобразование адреса в имя, что добавляет скорости.
Настройка браузеров
Теперь настроим браузер. В параметрах программы нужно указать определение прокси-сервера:
1) В браузере Explorer
Сервис -> Свойства обозревателя -> Подключения -> Настройка сети
поставим галочку напротив опции "Автоматическое определение параметров"
или поставим галочку напротив опции "Использовать сценарий автоматической настройки" и в поле "Адрес" напишем http://wpad.example.com:80/wpad.dat
2) В браузере Opera
Настройки -> Дополнительно -> Сеть -> Прокси-серверы
поставим галочку напротив опции "Автоматическая конфигурация прокси-сервера" и в поле "Адрес" написать http://wpad.example.com:80/wpad.dat
3) В браузере Firefox
Инструменты->Настройки->Дополнительно->Сеть->Соединение(Настроить)
выберем опции "Автоматически определять настройки прокси для этой сети"
или выберем опцию "URL автоматической настройки сервиса прокси" и в поле "Адрес" напишем http://wpad.example.com:80/wpad.dat
Нажмите кнопку Обновить, чтобы загрузить настройки.
В версии 3.0.1 нормально не работает "Автоматически определять настройки прокси для этой сети" или нужно дополнительно по гуглить =).