Москва: проверенные б/у ноутбуки с гарантией и проверкой перед оплатой
+7 906 722-94-45

Главная → Статьи → Корпоративный прокси: PAC, WPAD и почему netsh winhttp не видит настройки браузера

Корпоративный прокси: PAC, WPAD и почему netsh winhttp не видит настройки браузера

WinINET и WinHTTP — две разные подсистемы прокси в Windows. Разбираем, почему браузер работает, а службы и обновления — нет, как проверить PAC/WPAD и что изменилось с netsh winhttp.

Корпоративный прокси: PAC, WPAD и почему netsh winhttp не видит настройки браузера

Очень частая картина в корпоративной сети: браузер открывает сайты (через прокси), а Windows Update, Microsoft Store и служебные компоненты — нет. Или наоборот. Причина в том, что в Windows две независимые подсистемы прокси, и они не синхронизируются автоматически.

Две подсистемы

WinINET WinHTTP
Кто использует браузеры (Edge/Chrome через системные настройки), приложения с UI службы, Windows Update, служебные компоненты, часть установщиков
Область профиль пользователя машина
Где настраивается Параметры → Сеть и Интернет → Прокси; реестр HKCU\...\Internet Settings netsh winhttp / advproxy
PAC/WPAD поддерживается поддерживается (через AutoProxySvc)
SOCKS5 да (в браузере) нет

Отсюда классика: пользователь настроил прокси в браузере, но служба, работающая от SYSTEM, этих настроек не видит.

Как проверить обе подсистемы

WinINET (пользователь):

Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" |
  Select-Object ProxyEnable, ProxyServer, ProxyOverride, AutoConfigURL

WinHTTP (машина):

netsh winhttp show proxy

Если первая команда показывает прокси, а вторая — «Direct access (no proxy server)», вы нашли причину.

Что изменилось с netsh winhttp

Microsoft переводит настройку прокси WinHTTP на новые командлеты/утилиту advproxy. Старые команды netsh winhttp set proxy и netsh winhttp show proxy помечены как устаревшие (deprecated) — они продолжают работать, но в новых сборках и документации рекомендуется advproxy.

Практический совет: в скриптах и инструкциях проверяйте, какая утилита доступна в вашей версии Windows, и фиксируйте это в документации.

PAC и WPAD

PAC (Proxy Auto-Config) — это JavaScript-файл с функцией FindProxyForURL(url, host), которая возвращает строку вида PROXY proxy.corp.local:8080; DIRECT. Браузер (и WinHTTP, если настроено) загружает его и решает, куда отправлять каждый запрос.

WPAD (Web Proxy Auto-Discovery) — автоматический поиск PAC-файла: через DHCP-опцию 252 или DNS-имя wpad.<домен>. Уязвим к подмене, поэтому в современных сетях часто отключён.

Проверка:

# адрес PAC в пользовательских настройках
(Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings").AutoConfigURL

# служба автопоиска
Get-Service WinHttpAutoProxySvc

Если WinHttpAutoProxySvc остановлена, WPAD и часть сценариев PAC для служб работать не будут.

Почему браузер работает, а обновления нет

  1. Прокси задан только в WinINET (пользователь).
  2. WinHTTP настроен напрямую.
  3. Служба обновлений выходит в интернет без прокси и получает таймаут.

Решение — настроить WinHTTP отдельно:

# пример: явный прокси для служб
netsh winhttp set proxy proxy.corp.local:8080 bypass-list="*.corp.local;<local>"

# или через PAC: в качестве proxy-server указывается полный адрес .dat-файла,
# который раздаёт ваш прокси-сервер (схема http, путь /wpad.dat)
netsh winhttp set proxy proxy-server="<адрес-PAC-файла>"

Обратите внимание на синтаксис: параметр называется proxy-server, но принимает и адрес PAC-файла — Windows отличает его по расширению. После смены настроек службы, уже держащие соединение, могут продолжать работать по-старому: перезапустите затронутую службу или компьютер.

Проверка:

netsh winhttp show proxy

Обратный случай: VPN и прокси конфликтуют

При подключении VPN внутренние ресурсы могут быть доступны напрямую, но системный прокси продолжает отправлять запросы на внешний прокси-сервер, который из туннеля недоступен. Симптомы: таймауты, «сайт не отвечает».

Что проверить:

  • ProxyOverride / bypass-list — содержит ли внутренние домены;
  • PAC-файл — учитывает ли он адреса, доступные через VPN;
  • не задан ли прокси с внешним IP, недоступным из корпоративной сети.

Bypass-список: что в него кладут

Bypass-list (в WinINET — ProxyOverride) перечисляет адреса, которые идут напрямую. Минимальный рабочий набор для корпоративной машины:

  • *.corp.local — внутренние домены;
  • 10.*, 192.168.*, 172.16.* — внутренние подсети (в PAC это описывают через isInNet);
  • <local> — имена без точки (принтеры, NAS по NetBIOS/mDNS);
  • адреса серверов обновлений и антивирусного ПО, если они доступны напрямую.

Два подводных камня:

  1. Слишком широкий bypass — трафик уходит мимо прокси, и компания теряет логирование/фильтрацию. Это нарушение политики, а не оптимизация.
  2. Пустой bypass — внутренние адреса начинают ходить через прокси, который из корпоративной сети может быть недоступен; получаются таймауты на каждом локальном запросе.

Правило: bypass-список должен совпадать с тем, что описано в политике прокси, и обновляться вместе с ней.

Другие подсистемы, которые путают с системным прокси

  • Браузер Chromium берёт настройки из WinINET, но может иметь свои расширения-прокси и флаги запуска.
  • .NET-приложения читают defaultProxy из machine.config/app.config или переменные окружения.
  • Java использует -Dhttp.proxyHost и java.net.useSystemProxies.
  • WSL и контейнеры имеют собственные сетевые пространства; системный прокси Windows им не передаётся автоматически.
  • Приложения Electron часто используют Chromium-стек напрямую.

Если «не работает только одно приложение», проверяйте не netsh winhttp, а конфигурацию самого приложения.

Типичные ошибки

  • Считать, что настройка браузера = настройка системы. Это разные подсистемы.
  • Использовать SOCKS5 для WinHTTP. WinHTTP его не поддерживает — нужен HTTP-прокси или PAC.
  • Оставлять WPAD включённым в незащищённой сети. Риск подмены PAC.
  • Жёстко прописывать прокси-IP. При смене инфраструктуры всё ломается; PAC удобнее.
  • Забыть про bypass-список. Внутренние адреса начнут ходить через прокси и тормозить.

Диагностика

# проверка доступности прокси
Test-NetConnection proxy.corp.local -Port 8080

# какие настройки видит служба
netsh winhttp show proxy

# журнал AutoProxySvc
Get-WinEvent -LogName System -MaxEvents 50 |
  Where-Object ProviderName -like "*WinHttp*"

Ограничения

  • Часть приложений (Java, .NET, Electron) использует свои настройки прокси и игнорирует системные.
  • Поведение netsh winhttp и advproxy зависит от версии Windows.
  • WPAD в современных сетях часто отключён политикой.
  • PAC-файл может содержать ошибки JavaScript — тогда автоконфигурация молча не работает.

FAQ

Почему браузер открывает сайты, а Windows Update — нет? Прокси задан только для WinINET (пользователь). Для служб нужна отдельная настройка WinHTTP.

Поддерживает ли WinHTTP SOCKS5? Нет. Нужен HTTP-прокси или PAC.

Что лучше: PAC или фиксированный прокси? PAC гибче: можно направлять разные адреса по-разному. Фиксированный проще, но ломается при изменении инфраструктуры.

Почему netsh winhttp показывает «Direct access»? Настройки WinHTTP не заданы, даже если в браузере прокси включён.

Нужен ли WPAD? В большинстве современных сетей — нет; используйте явный PAC-адрес.