Forefront TMG и кастомизированный wpad.dat

imageПосле того как мы начали использовать для авто-настройки параметров прокси WPAD файл который генерируется Forefront TMG, заметили то, что попытка использовать в настройках сети Internal в списке исключений для обхода прокси комбинацию имён и IP диапазонов приводит к проблеме открытия некоторых локальных узлов. Похожая проблема была описана в статье KB920715, но не смотря на то, что речь там идёт про ISA 2004, схожие симптомы мы наблюдали и на TMG. Когда из списка исключений для обхода прокси убирались IP диапазоны – проблема устранялась. Ещё к большему желанию отказаться от использования генерируемого TMG файла wpad.dat привела статья Richard Hicks' Forefront TMG Blog - WPAD Considerations for Kerberos Authentication with NLB VIP on Forefront TMG 2010. По одной из ссылок в этой статье было найдено описание метода “скармливания” TMG самостоятельно сформированного кастомизированного файла wpad.dat -

Дело осталось за малым, корректно создать собственный файл параметров авто-настройки WPAD. В изучении вопроса оказались полезными ресурсы Wikipedia - Proxy auto-config и Penguins Joys - Wpad.dat

В итоге у меня получился такой вот файл wpad.dat:

function FindProxyForURL(url, host) {

 

if (shExpMatch(host, "127.0.0.1" ) ||

shExpMatch(host, "localhost" ) ||

isInNet(host, "10.0.0.0",  "255.0.0.0") ||

dnsDomainIs(host, ".holding.com" )||

dnsDomainIs(host, ".localdomain.ru" )||

dnsDomainIs(host, ".my.domain.local" )||

shExpMatch(url,"*.holding.com/*") ||

shExpMatch(url, "*.holding.com:*/*") ||

shExpMatch(url, "www.samedom1.ru") ||

shExpMatch(url, "app.samedom2.com") ||

isPlainHostName(host)) {return "DIRECT";}

 

return "PROXY KOM-AD01-TMGCL.holding.com:8080; DIRECT";

 

}

Для того чтобы заставить TMG использовать созданный нами wpad.dat воспользуемся набором скриптов, которые можно загрузить по ссылке указанной в статье Forefront TMG (ISA Server) Product Team Blog > Use ISA/TMG to distribute your custom WPAD configuration file

Распаковываем на TMG сервере архив KB953293.zip в отдельный каталог, например C:ToolsCustomWPADKB953293 и создаём два командных файла для установки кастомизированного файла wpad.dat и для удаления (возврату к генерируемому файлу TMG). В нашем случае соответственно файлы получились такие:

wpad-file-install.cmd:

cd /d C:ToolsCustomWPADKB953293

cscript kb953293.wsf /array:. /net:internal /script:C:ToolsCustomWPADwpad.dat

wpad-file-uninstall.cmd:

cd /d C:ToolsCustomWPADKB953293

cscript kb953293.wsf /array:. /net:internal /del

Обратите внимание на то что в переменной array в качестве значения имени массива TMG можно указать точку, чтобы использовать текущий массив.

Сама процедура установки первым командным файлом выглядит примерно так: 

image

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

После того, как наш файл авто-настройки успешно установлен в TMG, - очищаем кэш браузера с проверяем то, что по ссылке http://wpad.holding.com/wpad.dat нам возвращается именно наш файл. Проверяем работу браузеров с заданными нами настройками и убеждаемся в том, что комбинирование правил исключений для имён и IP работает успешно. Дополнительно собственным файлом авто-настройки мы решаем ещё одну проблему описанную Ричардом Хиксом - теперь клиенты будут обращаются на виртуальный IP нашего NLB кластера, а не на какую-то конкретную ноду, как это происходит в случае с использованием генерируемого TMG файла wpad.dat.

Установив кастомизированный файл авто-настройки следует помнить о том, что все последующие изменения, которые необходимо вносить в конфигурацию (например расширения списка обхода прокси) нужно производить путём корректировки созданного нами файла и повторной его установки командным файлом wpad-file-install.cmd. При этом изменения выполняемые на соответствующих закладках свойств сети Internal в консоли TMG будут игнорироваться, по крайней мере это показывают практические тесты.

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

  1. Денвер /

    Попробую использовать данный метод для случая использования динамического пула адресов впн (в wpad.dat в этом случае почему-то адресом прокси ставится первый попавшийся адрес из зарезервированных tmg для клиентов впн). Почему так происходит я так и не разобрался.

  2. Anton /

    При выполнении получаю ошибку. Пути все верные на мой взгляд

    C:KB953293>cscript kb953293.wsf /array:. /net:internal /script:C:KB953293wpad
    .dat
    Microsoft (R) Windows Script Host Version 5.8
    Copyright (C) Microsoft Corporation. All rights reserved.

    Using arguments '/array:. /net:internal /script:C:KB953293wpad.dat'
    Connected to CSS on XXXXXX.XXX.XX.
    Accessing the current array...
    **** Failed to access 'containing' array.
    Error 0x80070002; The system cannot find the file specified.

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

      Попробуйте вместо точки явно указать имя массива TMG.

  3. Mistique /

    как вариант, при наличии IIS или иного web-сервера в интренете, можно создавать CNAME->"IIS" + сайт.
    и править wpad.dat как файл без бубнов с запихиванием в TMG

  4. Sergey /

    После выполнения данных настроек необходимо еще что нибудь делать с DHCP и DNS???

  5. Sergey /

    Кроме как я понимаю настройки исключений на самом TMG?!
    А можно поменять параметры на дефолтном wpad.dat указав не VIP IP и применить его обратно?

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

      Если речь идёт о том чтобы вернуть TMG в исходное состояние, то насколько я помню достаточно изменить соответствующие настройки в консоли TMG и выполнить их сохранение для того чтобы кастомизированный файл настроек перетёрся файлом настроек который генерирует TMG

  6. Alexey /

    Подскажите а для руссифицированного TMG этот скрипт подходит? Выходит ошибка:

    Using arguments '/array:. /net:internal /script:C:\CustomWPAD\wpad.dat'
    Connected to CSS on SRV-TMG.elekt.local.
    Accessing the current array...
    Connected to array 'SRV-TMG'.
    **** Failed to access network 'internal'.

    1. Алексей Максимов / Автор записи

      Попробуйте поменять имя внутренней сети на то, которое используется у Вас.

      1. Alexey /

        Спасибо огромное, указал на русском без кавычек, все получилось! Очень полезная статья!

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