• ИТ Вестник №12.2017

    Представляем вашему вниманию очередной небольшой обзорный материал об интересных, на наш взгляд, информационных обновлениях в ИТ-сфере за прошедший месяц, а также информацию об обновлениях нашего Вики-сайта. За помощь в подготовке выпуска благодарю Евгения Лейтана.

    Читать далее...

  • Повышаем доступность веб-сервера Apache с помощью UCARP с балансировкой нагрузки между двумя виртуальными серверами на базе Ubuntu Server 14.04.2

    imageC помощью описанной в предыдущей заметке конфигурации UCARP можно повысить доступность не только Squid, но и других приложений, например того же веб-сервера Apache, который отвечает у нас за раздачу пользователям файла авто-конфигурации прокси wpad.dat, как это было описано ранее.

    Читать далее...

  • Медленная работа Internet Explorer 11 через прокси-сервер Squid с использованием Proxy Auto Configuration (WPAD)

    imageПосле перехода с Forefront TMG на Squid мне не давала покоя одна проблема, разобраться с которой “с наскоку” никак не получалось. При использовании браузера Internet Explorer 11 в связке с прокси-сервером Squid наблюдались задержки при открытии веб-страниц Интернет-ресурсов, и особенно это было ощутимо на https-ресурсах. При этом те же самые веб-страницы открывались в других браузерах без подобных проблем. Так уж получилось, что изначально изучение этой проблемы пошло в неверном направлении и было ориентировано на связку IE11/HTTPS/Squid. Попытка разобрать трафик между клиентом IE11 и прокси-сервером Squid не дала ничего интересного. В ходе поиска возможной причины использовались всевозможные варианты начиная с таких, как например изменение client_persistent_connections в конфигурационном файле Squid и заканчивая такими глупостями, как например, отключение SPDY/3 и HTTP 1.1 в IE11 или даже использование режима предприятия. По пути наткнулся на довольно занятную статью об IE на “Хабре”. В общем перебор возможных вариантов решения дошёл до экспериментов с авто-конфигурацией прокси, где тоже появились интересные подробности. В частности выяснилось, что IE может давать ощутимые задержки в открытии страниц, если в файле автоконфигурации прокси (WPAD) присутствует вызов функций вида isInNet(host,,), как описано, например, здесь - MSDN Blog - AsiaTech: Microsoft APGC Internet Developer Support Team - IE hang when access some web sites with Proxy.pac.

    Читать далее...

  • Настройка прокси сервера Squid 3.3 на Ubuntu Server 14.04 LTS. Часть 6. Настройка Proxy Auto Configuration (WPAD)

    imageИмея уже сконфигурированный и работающий сервер Squid3 у нас встаёт вопрос об автоматической настройке клиентов локальной сети на использование этого прокси-сервера. Сразу перенаправлять всех клиентов на только что запущенный прокси-сервер не совсем правильно, и поэтому нам сначала потребуется выполнить предварительное тестирование на отдельной группе клиентов, а уже по результатам этого тестирования выполнить плавный перевод всех оставшихся клиентов со старого прокси-сервера на базе Forefront TMG на новый на базе Squid3. Правила того, каких клиентов на какой прокси-сервер направлять мы настроим в файле wpad.dat используемом браузерами и другими приложениями на клиентских компьютерах в рамках технологии Web Proxy Automatic Discovery (WPAD). А так как файл wpad.dat нужно сделать для всех клиентов локальной сети доступным по протоколу HTTP без аутентификации, развернём для этой цели на нашем Linux-сервере веб-сервер Apache2.

    Читать далее...

  • 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 будут игнорироваться, по крайней мере это показывают практические тесты.

  • Настраиваем 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