Использование WPAD (протокол автоматического обнаружения веб-прокси) в Windows
Протокол WPAD (автоматическое обнаружение веб-прокси) позволяет легко настраивать параметры прокси-сервера на клиентах в вашей сети. Идея WPAD заключается в том, что клиент может использовать DHCP и/или DNS для поиска веб-сервера в вашей сети, на котором есть файл конфигурации PAC с настройками прокси-сервера (
http://yourdomain/wpad.dat).
Создать файл автоматического обнаружения прокси-сервера (wpad.dat)
Специальный файл PAC (автоматическая настройка прокси) описывает правила использования прокси. Предопределенное имя PAC-файла — wpad.dat. Этот файл содержит правила, определяющие, должен ли клиент использовать прокси-сервер при подключении к определенному ресурсу (HTTP, HTTPS или FTP) или обращаться к нему напрямую.
Синтаксис Javascript используется в файле wpad.dat. Вы можете установить адрес прокси-сервера по умолчанию, а также различные исключения и правила, определяющие, когда клиент должен (или не должен) использовать прокси для подключений.
Давайте посмотрим на простой пример синтаксиса wpad.dat:
function FindProxyForURL(url, host)
{
if (shExpMatch(host, "127.0.0.1" )) {return "DIRECT";}
if (shExpMatch(host, "*/localhost*" )) {return "DIRECT";}
if (isInNet(host, "192.0.0.0", "255.0.0.0")) {return "DIRECT";}
if (isInNet(host, "10.0.0.0", "255.0.0.0")) {return "DIRECT";}
// Dedicated proxy for a specific IP network
if (isInNet(myIpAddress(), "172.15.1.0", "255.255.255.0"))
{return "PROXY prx2.active-directory.ru:8080";}
if (dnsDomainIs(host, "*.corp.active-directory.ru")) {return "DIRECT";}
// Local addresses to be accessed directly
if (
shExpMatch(url,"http://*.active-directory.ru") ||
shExpMatch(url,"https://*.active-directory.ru") ||
shExpMatch(url,"ftp://*.active-directory.ru")
)
return "DIRECT";
// If the URL does not contain dots in the address, the client should access it directly.
if (isPlainHostName(host)) {return "DIRECT";}
if (shExpMatch(host,"bank.example.com")) {return "DIRECT";}
// Use a separate proxy server to access a specific wildcard domain
if (shExpMatch(url,"*.microsoft.com*")){return "PROXY prx2.active-directory.ru:8080";}
//a default proxy server address
return "PROXY proxy.active-directory.ru:3128";
}
Файл PAC обычно состоит из одной функции FindProxyForURL, которая возвращает клиенту адрес прокси-сервера на основе запрошенного URL-адреса. В этом случае возвращаемая директива «DIRECT» указывает, что для доступа к этим IP-адресам и доменам следует использовать прямое соединение (без прокси-сервера). Если веб-сайт, к которому обращается клиент, не соответствует ни одному из правил в файле WPAD, прокси-сервер по умолчанию (
PROXY proxy.active-directory.ru:3128) используется для доступа к нему.
Вы можете использовать любой из популярных прокси-серверов, например, squid или 3proxy.
Вы можете использовать файл PAC как простое средство фильтрации контента, чтобы запретить доступ к определенным веб-сайтам или запретить доступ к доменам с рекламой.
proxy_empty = "PROXY 127.0.0.1:3128"; // a link to an non-existing proxy
if ( shExpMatch(url,"*://twitter.com/*")) { return proxy_empty; }
if ( shExpMatch(url,"*://spam.*")) { return proxy_empty; }
if ( shExpMatch(url,"*doubleclick.net/*")) { return proxy_empty; }В разных версиях ОС есть ограничения на максимальный размер PAC-файла. Для Windows размер файла wpad.dat не должен превышать 1 МБ.
Поместите wpad.dat на веб-сервер HTTP в вашей локальной сети и разрешите всем пользователям читать его. Вы можете использовать веб-сервер на базе Linux (nginx, apache, Lighttpd) или Windows (IIS или простой HTTP-сервер на базе PowerShell).
В этом примере я опубликую wpad.dat на веб-сервере IIS на контроллере домена. Скопируйте wpad.dat в C:\inetpub\wwwroot.
Если в вашей сети есть клиенты, не являющиеся доменами, предоставьте IUSR и IIS APPPOOL\DefaultAppPool разрешения только на чтение для папки IIS.
Откройте диспетчер IIS (
inetmgr
), выберите Типы MIME в настройках веб-сайта IIS и добавьте новый тип:
Расширение имени файла:
.datMIME-тип:
application/x-ns-proxy-autoconfig
Перезапустите IIS.
Настройка записей WPAD в DHCP или DNS
Теперь вам нужно настроить DHCP-серверы или записи DNS, чтобы клиенты могли обнаруживать PAC-файл.
Если вы используете DHCP-сервер, вы можете установить адрес WPAD для клиентов, используя опцию 252. В этом примере для DHCP, работающего на Windows Server:
Откройте консоль DHCP (
dhcpmgmt.msc), щелкните раздел IPv4 и выберите Задать предопределенные параметры;
Нажмите Добавить и добавьте запись со следующими параметрами:
Имя:WPADТип данных:
stringКод:
252Нажмите ОК и укажите адрес вашего хоста WPAD (
http://wpad.active-directory.ru).
Затем откройте Параметры области и включите для него параметр 252 WPAD (или настройте этот параметр в разделе Параметры сервера).
Затем создайте DNS-записи A или CNAME для имени wpad в своем домене.
Если вы используете Active Directory, обратите внимание, что по умолчанию DNS-сервер Microsoft блокирует использование имен wpad и isatap. Проверить это можно выполнив команду::
dnscmd mun-dc02 /info /globalqueryblocklistЧтобы разрешить использование этих имен в DNS, выполните следующую команду:
dnscmd mun-dc02 /config /enableglobalqueryblocklist 0Вы можете очистить список:
dnscmd /config /globalqueryblocklistИ добавьте запись для isatap:
dnscmd /config /globalqueryblocklist isatapВнесите одинаковые изменения на все DNS-серверы.
Затем создайте запись A с именем wpad, которая указывает на ваш веб-сервер, на котором расположен файл WPAD. Вы можете создать запись A вручную в диспетчере DNS (
dnsmgmt.msc) или с помощью командлета PowerShell Add-DnsServerResourceRecordA:
Add-DnsServerResourceRecordA -Name wpad -IPv4Address 192.168.13.10 -ZoneName active-directory.loc -TimeToLive 01:00:00Как настроить браузеры для WPAD
Теперь вам нужно настроить браузеры на автоматическое получение PAC-файла при запуске. Для этого включите параметр Настройки автоматического обнаружения (Инструменты > Свойства обозревателя > Подключения > Настройки локальной сети) в настройках IE или в настройках прокси-сервера Windows в Настройках (быстрая команда URI MS-Settings:
ms-settings:network-proxy).
Эту опцию можно включить централизованно с помощью параметра Групповая политика Конфигурация пользователя -> Настройки -> Настройки панели управления -> Настройки Интернета -> Новый -> Internet Explorer 10. .
Узнайте больше о том, как настроить параметры прокси-сервера с помощью объекта групповой политики.
Теперь браузеры на клиентских устройствах будут искать запись wpad в DNS (или получать ее от DHCP) при загрузке. Если в сети обнаружен хост с WPAD, клиент скачает файл
http://wpad.%domain%/wpad.dat, запустите код JavaScript и примените правила прокси-сервера из файла PAC.
Например, Windows сначала ищет имя wpad в DNS, затем с помощью разрешения многоадресных имен локального канала (LLMNR), а затем с помощью NetBIOS (NBNS). Если протоколы LLMNR и NetBIOS отключены, используется только поиск DNS.
Вы можете проверить, использует ли браузер PAC-файл при выходе в Интернет (для веб-браузеров на базе Chromium: Google Chrome, Opera, Microsoft Edge):
Откройте браузер и перейдите на
chrome://net-export/Выберите Удалить личную информацию и нажмите Начать запись на диск;
Затем укажите имя файла JSON для сохранения данных;
Нажмите Остановить ведение журнала;
Откройте файл JSON в любом текстовом редакторе и найдите
proxySettings. В этом примере вы можете видеть, что браузер использует настройки прокси из wpad.dat:
"proxySettings":{"effective":{"pac_url":"http://wpad/wpad.dat"},"original":{"auto_detect":true,"from_system":true}}
Если вы хотите запретить использование WPAD на компьютере Windows, создайте параметр DWORD с именем DisableWpad со значением 1 в разделе реестра HKLM\SOFTWARE\Microsoft\Windows. \CurrentVersion\Настройки Интернета\WinHttp\.
Настройка параметров прокси-сервера с помощью файла WPAD (PAC) обеспечивает дополнительную гибкость, которую невозможно достичь при настройке прокси-сервера через объект групповой политики Windows. WPAD также поддерживается в Windows, Linux, MacOS и других операционных системах, а также на мобильных устройствах.









