Настраиваем Web Proxy Automatic Discovery (WPAD)

imageЕсли вы настраиваете параметры прокси сервера в веб-браузере Internet Explorer (IE) с помощью групповых политик, и тем более делаете это с запретом изменений настроек для пользователя, то рано или поздно может возникнуть ситуация, когда пользователь выехавший в командировку не сможет воспользоваться на служебном ноутбуке браузером для доступа в интернет где-нибудь в гостинице или аэропорте из-за невозможности отключения этих самых жёстко заданных настроек прокси.

Чтобы избежать подобной проблемы можно воспользоваться механизмом авто-настройки параметров прокси в браузере - Web Proxy Automatic Discovery (WPAD). С точки зрения клиентского браузера суть механизма WPAD в том, что при попытке доступа в интернет, браузер будет находить (через DNS/DHCP) сервер, на котором размещён настроечный файл http://wpad.holding.com/wpad.dat 

Файл Wpad.dat это файл Java-script в котором задаются настройки параметров расположения имени и порта прокси сервера, а также список исключений для обхода прокси. В случае недоступности данного файла браузер будет выполнять попытку прямого подключения к Интернет-ресурсам через настроенный в свойствах сетевого адаптера шлюз по умолчанию. При этом в настройках самого браузера в явном виде параметры прокси не указываются, а включается соответствующая опция авто-обнаружения. Механизм WPAD поддерживают браузеры Internet Explorer, Mozilla Firefox, с некоторыми ограничениями Opera и др.

Для того чтобы клиентский браузер узнал о том, где в локальной сети расположен сервер с опубликованным файлом wpad.dat, может использоваться механизм обращения в DNS или получения настроек с сервера DHCP. Эти оба метода можно применять как раздельно, так и совместно и каждый из этих методов имеет свои достоинства и недостатки.


WPAD и DHCP

Метод настройки сервера DHCP для использования WPAD можно найти здесь: TechNet Library - Creating a WPAD entry in DHCP

Его основа сводится к добавлению на сервер DHCP дополнительной опции 252, в которой указывается URL файла авто-настройки. Эта опция назначается на сервер или отдельную область и передается клиентам DHCP вместе с основными настройками IP.

Итак, для настройки сервера DHCP на Windows Server 2008 R2 откроем консоль управления этой ролью (Start -> Programs -> Administrator Tools -> DHCP) и в свойствах сервера выберем пункт управления опциями - Set Predefined Options.

В окне опций, чтобы добавить новую опцию нажмём Add и затем укажем параметры опции:

Name – WPAD
Code – 252
Data Type – String
Description - 
Web Proxy Automatic Discovery
image

После этого зададим в поле String значение URL по умолчанию и сохраним параметр.

image

В документации встречается отдельное замечание о том, что имя файла wpad.dat должно быть написано в данном случае в нижнем регистре.

После того как опция создана мы можем сконфигурировать её как для отдельной области так и глобально для всего сервера DHCP:

image Как видно, при задании URL размещения файла авто-настройки можно указывать нестандартный порт вместо 80, что является преимуществом в сравнении с методом настройки через DNS где при публикации файла может использоваться только 80 порт. С другой стороны метод настройки через DHCP не поможет нам на системах где используется статическая IP адресация (DHCP клиент не запущен) и при этом требуется настройка браузера, например на терминальных серверах. Более того, по имеющейся информации обрабатывать опцию с DHCP способен только Internet Explorer, то есть говорить об альтернативных браузерах в данном случае не приходится вообще. 

WPAD и DNS

В нашем практическом примере мы будем использовать метод с использованием DNS, так как, на мой взгляд, он является наиболее универсальным, хотя и не лишён некоторых недостатков (некритичных в нашей ситуации).

Суть метода настройки клиентов WPAD с использованием DNS заключается в том, что в основной зоне DNS (DNS Suffix) создается запись формата wpad.domain.com которая ссылается на сервер где опубликован файл wpad.dat. Тип этой записи может быть как A так и CNAME.

В нашем примере все клиенты находятся в DNS домене holding.com. В зоне прямого просмотра holding.com мы создаём запись CNAME - tmgcluster.holding.com. Эта запись ссылается на имя массива из двух серверов Forefront TMG находящихся в NLB кластере.

Прежде чем начать использовать наш DNS сервер для WPAD, мы должны убедиться в том, что он не настроен на блокировку обновления/разрешения имён wpad. Такая блокировка по умолчанию защищает сервер от атак по регистрации фальшивых узлов wpad. Во времена Windows Server 2003 такая защита обеспечивалась тем, что в зонах DNS создавалась специальная запись-заглушка с типом TXT. Подробней об этом можно почитать в статье KB934864 - How to configure Microsoft DNS and WINS to reserve WPAD registration. С приходом Windows Server 2008 в роли DNS Server появился встроенный механизм глобальных листов блокировки. В нашем примере используется сервер DNS на базе Windows Server 2008 R2, и для того, чтобы посмотреть задействован ли в данный момент механизм глобальных блокировок выполним команду:

dnscmd /info /enableglobalqueryblocklist

Чтобы получить содержимое блок-листа выполним:

dnscmd /info /globalqueryblocklist

В конфигурации по умолчанию в блок-лист как раз таки включены записи wpad и isatap. Чтобы переписать содержимое блок-листа, исключив оттуда интересующий нас wpad, выполним команду:

dnscmd /config /globalqueryblocklist isatap

image

По сути в данном случае утилита dnscmd оперирует с параметрами реестра описанными в статье TechNet Library - Remove ISATAP from the DNS Global Query Block List

В ветке реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDNSParameters

блок-лист хранится в параметре GlobalQueryBlockList

Если есть желание отключить использование блок-листа совсем, можно выполнить:

dnscmd /config /enableglobalqueryblocklist 0

или же в изменить соответствующий параметр реестра EnableGlobalQueryBlockList

После сделанных изменений нужно перезапустить службу DNS

net stop dns & net start dns


WPAD сервер

Используя TechNet Library - Configuring a WPAD server рассмотрим настройки на стороне сервера Forefront TMG, который будет у нас выполнять роль сервера WPAD с опубликованным файлом авто-конфигурации wpad.dat

В консоли Forefront TMG Management в дереве навигации перейдём в ветку Networking на закладку Networks и выберем сеть, для которой нам нужно создать прослушиватель WPAD (обычно это внутренняя сеть – Internal). Откроем свойства этой сети

image

На закладке Auto Discovery включим опцию публикации файла wpad.dat -  Publish automatic discovery information for this network

В поле где указан номер порта устанавливаем 80 порт. Как уже отмечалось ранее, в силу того, что мы используем связку WPAD/DNS, мы должны использовать именно этот порт.

image

Переключаемся на закладку Web Browser и настраиваем список исключений для узлов и доменов к которым клиенты должны ходить напрямую минуя прокси.

image

Сохраняем настройки конфигурации TMG и после этого через веб браузер TMG должен отдавать нам скрипт авто-настройки по адресу http://tmgcluster.holding.com/wpad.dat

Открыв этот файл, мы сможем проверить попали ли в него данные списка обхода прокси. Изучив содержимое этого файла можно заметить то, что по умолчанию в этот файл адреса прокси-серверов попадают в виде IP адресов

...

DirectNames=new MakeNames();

cDirectNames = 10;

HttpPort = "8080";

cNodes = 2;

function MakeProxies(){

this[0] = new Node("192.168.0.11",2531460408,1.000000);

this[1] = new Node("192.168.0.12",3457248957,1.000000);

}

Proxies = new MakeProxies();

...

В некоторых случаях, например если требуется авторизация Kerberos, это может вызвать некоторые сложности. Есть хороший пост на эту тему Forefront TMG (ISA Server) Product Team Blog > Understanding By-Design Behavior of ISA Server 2006: Using Kerberos Authentication for Web Proxy Requests on ISA Server 2006 with NLB.

Для того чтобы изменить адреса прокси попадающие в wpad с IP на FQDN можно воспользоваться подключением к COM-объекту TMG через Powershell и свойством CarpNameSystem. Чтобы получить текущее значение этого свойства, выполним скрипт:

$ServerName = "TMGCLUSTER"

$FPCRoot = New-Object -comObject "FPC.Root"

$TMGObj = $FPCRoot.Arrays.Connect($ServerName)

$TMGObj.ArrayPolicy.WebProxy.CarpNameSystem

Установленное по умолчанию значение "2" нам нужно будет заменить на значение "0" следующим образом:

$ServerName = "TMGCLUSTER"

$FPCRoot = New-Object -comObject "FPC.Root"

$TMGObj = $FPCRoot.Arrays.Connect($ServerName)

$TMGObj.ArrayPolicy.WebProxy.CarpNameSystem = 0

$TMGObj.ApplyChanges()

Для вступления параметров в силу нужно перезапустить сервера TMG.

После перезагрузки снова проверяем содержимое файла wpad.dat и убеждаемся в том, что адреса прокси указаны в виде FQDN серверов.

...

function MakeProxies(){

this[0] = new Node("TMG01.holding.com",2531460408,1.000000);

this[1] = new Node("TMG02.holding.com",3457248957,1.000000);

}

...

WPAD клиенты

Дело осталось за малым – включить настройку WPAD в свойствах клиентских веб-браузеров. В Internet Explorer эта опция включена по умолчанию, и если ранее вы использовали групповые политики для явного задания настроек прокси, то возможно имеет смысл их же использовать для стирания старых настроек и включения авто-определения. image

В браузере Mozilla Firefox активация механизма WPAD делается аналогичным образом и работает без нареканий (проверено на текущей версии 12.0)

image

Дополнительная информация:

TechNet Library - Automatic Discovery for Firewall and Web Proxy Clients

Всего комментариев: 7 Комментировать

  1. itpadla /

    Reblogged this on Заметки IT Менеджера and commented:
    Очень полезная статья

  2. Алексей Максимов /

    Когда уже опубликовал пост и начал плотнее работать с WPAD наткнулся на такой интересный пост http://tmgblog.richardhicks.com/2012/02/13/wpad-considerations-for-kerberos-authentication-with-nlb-vip-on-forefront-tmg-2010/
    где говорится о том что по факту TMG генерирует файл wpad.dat таким образом что даже если сервера TMG в кластере NLB, то клиенты всё равно будут обращаться к нодам кластера как к отдельным серверам, то есть теряется приемущество использования виртуального IP NLB-кластера. В качестве возможного решения проблемы предлагается использовать кастомизированный файл wpad.dat и его публикацию на отдельном сервере или массиве серверов в кластере.
    Есть также информация о том как вручную подсунуть TMG кастомизированный файл автонастройки http://blogs.technet.com/b/isablog/archive/2011/11/16/use-isa-tmg-to-distribute-your-custom-wpad-configuration-file.aspx

  3. Павел /

    если имеем Configuration Server и Enterprise конфигурацию, приведенный в примере powershell скрипт не работает.
    Вот работающий вариант:

    $FPCRoot = New-Object -comObject "FPC.Root"
    $TMGObj = $FPCRoot.GetContainingArray()
    $TMGObj.ArrayPolicy.WebProxy.CarpNameSystem
    $TMGObj.ArrayPolicy.WebProxy.CarpNameSystem = 0
    $TMGObj.Save()

  4. Павел /

    Visual Basic вариант скрипта для изменения CARPNameSystem:

    =====
    Const fpcCarpNameSystem_DNS = 0
    Const fpcCarpNameSystem_WINS = 1
    Const fpcCarpNameSystem_IP = 2

    Dim oISA: Set oISA = CreateObject( “FPC.Root” )
    Dim oArray: Set oArray = oISA.GetContainingArray
    Dim oWebProxy: Set oWebProxy = oArray.ArrayPolicy.WebProxy

    If fpcCarpNameSystem_DNS = oWebProxy.CarpNameSystem Then
    WScript.Echo “ISA is already configured to provide DNS names in the WPAD script”
    WScript.Quit
    End If

    oWebProxy.CarpNameSystem = fpcCarpNameSystem_DNS
    oWebProxy.Save true

    WScript.Echo “ISA was configured to provide DNS names in the WPAD script…”
    =====

    взято отсюда: http://tmgblog.richardhicks.com/2012/02/13/wpad-considerations-for-kerberos-authentication-with-nlb-vip-on-forefront-tmg-2010/

  5. Вадим /

    Здравствуйте, может вы подскажите? После выполнения скрипта для смены IP на FQDN. Перестал нормально работать Google Chrome и Mozilla Firefox. Когда все галочки в настройках IE8 убраны в настройке сети, тогда все работает. Как только ставим какую либо галочку, например, "автоматическое определение параметров", то Chrome(Firefox) перестает работать, не открывается домашняя страница и т.д. Не знаете в чем может быть причина. IE8 работает без проблем.

  6. Вадим /

    Забыл написать...WPAD настроен через DHCP и DNS. Клиент TMG, что стоит, что нет, все равно не работает...

  7. Сергей /

    отличная статья! выручили меня со сменой IP на FQDN

Добавить комментарий