При работе с прокси-сервером Squid вы можете столкнуться с ситуацией, когда служба Windows Update или WSUS перестанут получать обновления. Ситуация действительно неприятная и проявляется она чаще всего уже "по факту", когда клиентские машины перестают получать обновления и нужно срочно принимать меры. Однако такое поведение службы обновления давно известно и отражено в документации. Сегодня мы разберем подробно причину возникновения ошибки и покажем возможные действия по ее устранению.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Внешнее проявление неисправности сводится к тому, что служба Windows Update не может загрузить обновления и сопровождается одним из кодов ошибки:
- 0x80244017
- 0x80244018
- 0x80244019
- 0x8024401B
- 0x80244021
Для ее возникновения требуется сочетание нескольких факторов: наличия в сети прокси-сервера с аутентификацией пользователей и службы WPAD. Неподготовленного администратора данная ошибка застает врасплох, однако существует статья KB896226, которая подробно проливает свет на проблему и способы ее решения:
Чтобы устранить эту проблему, убедитесь, что прокси-сервер или брандмауэр настроены для анонимного доступа к веб-сайту Центра обновления Windows.
Если коротко, то суть происходящих событий следующая: для доступа к серверам Центра обновлений система использует службу Windows HTTP (WinHTTP), которая в свою очередь поддерживает автоматическое получение настроек прокси через WPAD. Т.е. все запросы к серверам обновлений будут автоматически направлены на прокси, это не доставляет проблем до тех пор, пока прокси-сервер не начинает требовать аутентификации клиентов. Службы Windows Update не могут пройти аутентификацию и возникает проблема с получением обновлений.
Чтобы избавиться от этой ошибки следует выполнить рекомендации Microsoft и обеспечить анонимный доступ к серверам обновлений. Сделать это можно достаточно просто и несколькими способами. Рассмотрим их подробнее.
Squid
Система контроля доступа Squid дает в руки администратора мощный инструмент управления и этим следует пользоваться. Тем более что стоящая перед нами задача ничем не отличается от URL-фильтрации по спискам, о которой мы рассказывали ранее.
Создадим отдельный список для служб Windows Update:
touch /etc/squid3/wu
и внесем в него следующие записи:
update\.microsoft\.com
windowsupdate\.microsoft\.com
download\.microsoft\.com
ntservicepack\.microsoft\.com
c\.microsoft\.com
crl\.microsoft\.com
productactivation\.one\.microsoft\.com
За его основу мы взяли список из KB896226 который актуализировали и дополнили исходя из собственного опыта и наработок коллег.
Теперь создадим элемент ACL для работы со списком:
acl wu url_regex -i "/etc/squid/wu"
Для того, чтобы обеспечить анонимный доступ к указанным ресурсам следует создать список доступа и разместить его раньше списков, требующих аутентификацию или производящих авторизацию, лучше всего сделать его одним из первых.
http_access allow wu
После чего перезапустите прокси-сервер и проверьте доступ к серверам обновлений, он должен восстановиться.
WPAD
Существует также еще один вариант - направить трафик к серверам обновлений минуя прокси-сервер. В этом нам поможет протокол WPAD, точнее специальные правила в PAC-файле. На наш взгляд этот метод менее предпочтителен, но вполне имеет право на существование.
Для его реализации добавьте в файл wpad.dat следующие инструкции:
if (dnsDomainIs(host, "update.microsoft.com")) {return "DIRECT";}
if (dnsDomainIs(host, "windowsupdate.microsoft.com")) {return "DIRECT";}
if (dnsDomainIs(host, "download.microsoft.com")) {return "DIRECT";}
if (dnsDomainIs(host, "ntservicepack.microsoft.com")) {return "DIRECT";}
if (dnsDomainIs(host, "c.microsoft.com")) {return "DIRECT";}
if (dnsDomainIs(host, "crl.microsoft.com")) {return "DIRECT";}
if (dnsDomainIs(host, "productactivation.one.microsoft.com")) {return "DIRECT";}
Изменения вступают в силу сразу, перезапускать службы не требуется.
При использовании данного метода следует принять во внимание еще один момент - если вы принимали меры по запрету обхода прокси, например, при помощи iptables, то следует явно разрешить соединения к серверам обновлений. На текущий момент указанным серверам соответствуют следующие IP-адреса:
23.78.92.229
80.68.78.155
80.68.78.146
94.245.126.128
134.170.58.221
134.170.58.222
134.170.185.126
191.232.80.55
207.46.22.245
Собственно, поэтому не рекомендуем данный способ, так как поддерживать один список доменных имен для Squid проще, чем два, тем более что соответствие доменных имен IP-адресам может меняться. В любом случае теперь вы понимаете источник проблемы и можете самостоятельно выбрать наиболее предпочтительный способ ее решения.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Последние комментарии