Поиск по сайту:

Использование 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 и добавьте новый тип:

  • Расширение имени файла:

    .dat
  • MIME-тип:

    application/x-ns-proxy-autoconfig

Перезапустите IIS.

Настройка записей WPAD в DHCP или DNS

Теперь вам нужно настроить DHCP-серверы или записи DNS, чтобы клиенты могли обнаруживать PAC-файл.

Если вы используете DHCP-сервер, вы можете установить адрес WPAD для клиентов, используя опцию 252. В этом примере для DHCP, работающего на Windows Server:

  1. Откройте консоль DHCP (

    dhcpmgmt.msc

    ), щелкните раздел IPv4 и выберите Задать предопределенные параметры;

  2. Нажмите Добавить и добавьте запись со следующими параметрами:
    Имя:

    WPAD

    Тип данных:

    string

    Код:

    252
  3. Нажмите ОК и укажите адрес вашего хоста WPAD (

    http://wpad.active-directory.ru

    ).

  4. Затем откройте Параметры области и включите для него параметр 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):

  1. Откройте браузер и перейдите на

    chrome://net-export/
  2. Выберите Удалить личную информацию и нажмите Начать запись на диск;

  3. Затем укажите имя файла JSON для сохранения данных;

  4. Нажмите Остановить ведение журнала;

  5. Откройте файл 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 и других операционных системах, а также на мобильных устройствах.

Статьи по данной тематике