Automatická detekce proxy serveru v Internet Exploreru, Firefox, Chrome a další

Ondřej Výšek
5 minuty, 17 sekundy
2

Pokud přemýšlíte jak v organizaci zajistit automatickou detekci proxy serveru, například potřebujete v rámci organizace konfigurovat proxy, ale ponechat uživatelům volnost v nastavení proxy mimo organizaci. Na první pohled se tato situace může zdát jasná, ale pokud se ponoříte do problematiky hlouběji, zjistíte, že je nutné konfigurovat hned několik komponent. Pokud chcete mít nastavení proxy pevně pod kontrolou a nechcete dát uživateli možnost k její změně, je konfigurace přímočará a nastavení je součástí Group Policy. Jakmile se však dostanete do situace a například i více různých proxy na různých lokalitách, celá situace se komplikuje. Ponechání nastavení proxy na uživateli může značně komplikovat veškerý provoz a uživatel si například může stěžovat “nemohu na internet”, ale obvykle problém spočívá v tom, že uživatel nemá nastavenu proxy z důvodů předchozí konfigurace mimo firemní síť a nastavení zapomněl provést pro firemní síť. Pojďme tedy na věc. Pro konfiguraci automatické detekce proxy v Internet Exploreru a Firefox (testováno), je zapotřebí nastavit několik komponent:

  • Proxy Auto-configuration file (PAC)

    • Web Proxy Automatic Discovery (WPAD)
    • nastavení DHCP a DNS
    • Interní web server
    • Group Policy v rámci Active Directory

    {reg}

    Proxy Auto-Configuration (PAC)

    Prvním krokem je vytvoření souboru Proxy Auto-Configuration, tento soubor využívá podobnou syntaxi jako je například JavaScript se sadou předdefinovaných proměnných, které jsou povoleny. Také jsou obsaženy některé funkce, které umožňují větvení kódu, podmínky atd. Díky tomuto je možné vytvořit například konfigurace dle odlišných subnetů apod. Tento soubor může být umístěný přímo k prohlížeči, anebo distribuován pomocí WPAD (viz níže). V níže uvedeném souboru jsou testovány veřejné subnety, pokud je detekována jedna ze sítí, provede se přímý přístup k internetu. Pokud není detekován jeden ze tří definovaných rozsahů, jsou následně kontrolovány další IP rozsahy. Při detekci specifických sítí jsou přiděleny odpovídající proxy servery. Tyto servery jsou přiděleny 2, kde se testuje konektivita. V případě, že připojení přes první server selže, prohlížeš se pokouší připojit před druhý uvedený proxy server. Podmínky mohou obsahovat více parametrů, například čas, den v týdnu, informace o DNS a další. Popis všech dostupných funkcí je uvedený zde http://findproxyforurl.com/pac_functions_explained.html. Ukázkový soubor:

       1: function FindProxyForURL(url, host)
       2:  {
       3:       if (
       4:            isInNet(host, "10.0.0.0", "255.0.0.0") ||
       5:            isInNet(host, "172.16.0.0", "255.240.0.0") ||
       6:            isInNet(host, "192.168.0.0", "255.255.0.0") ||
       7:            isPlainHostName(host) ||
       8:            localHostOrDomainIs(host, "127.0.0.1") ||
       9:            dnsDomainIs(host, ".firma.local")
      10:         )
      11:  
      12:          return "DIRECT";
      13:  
      14:      else if (
      15:            isInNet(myIpAddress(), "10.1.0.0", "255.255.0.0") ||
      16:            isInNet(myIpAddress(), "10.2.0.0", "255.255.0.0") ||
      17:            isInNet(myIpAddress(), "10.3.0.0", "255.255.0.0") ||
      18:            isInNet(myIpAddress(), "10.4.0.0", "255.255.0.0") ||
      19:            isInNet(myIpAddress(), "10.7.0.0", "255.255.0.0") ||
      20:            isInNet(myIpAddress(), "10.9.0.0", "255.255.0.0") ||
      21:            isInNet(myIpAddress(), "10.10.0.0", "255.255.0.0") ||
      22:            isInNet(myIpAddress(), "169.254.0.0", "255.255.0.0") ||
      23:            isInNet(myIpAddress(), "172.16.199.0", "255.255.255.0")
      24:       )
      25:  
      26:      return "PROXY proxy0.firma.local:8080;" + 
      27:             "PROXY proxy1.firma.local:8080";
      28:  
      29:      else return "DIRECT";
      30:  }

Web Proxy Automatic Discovery (WPAD)

Dalším krokem je zařízení distribuce nastavení koncovým klientům. Technologie WPAD zařizuje distribuci konfiguračního souboru (PAC) koncovým klientům. WPAD je plně dynamická technologie, tedy aniž by bylo notné restartovat počítač či prohlížeč, je možné soubor PAC aplikovat a nastavení dynamicky použít.

WPAD využívá několika mechanizmů, ale v základu primárně spolupracují s DHCP a DNS. Zjednodušeně řečeno, je nutné nastavit DHCP vlastní hodnotu 252 a v DNS konfigurovat odpovídající alias. Pro správnou funkci WPAD je nutné umístit PAC soubor na interní web server, ze kterého jej může následně prohlížeč stáhnout. Při rozšířené konfiguraci je možné nastavit i další konfiguraci, která zajistí vysokou dostupnost distribuce PAC souborů.

Pro hostování PAC souborů v rámci IIS je zapotřebí nastavit podporu dalších MIME pro IIS. MIME definice musí být v tomto tvaru:

Extension: .dat

MIME type: application/x-ns-proxy-autoconfig

V případě, že MIME není konfigurováno korektně, prohlížeč obdrží chybu 403 a nastavení nebude použito. Doporučuji umístit PAC soubor na stejný server, který je zároveň i proxy serverem, tím se sníží množství požadavků vedených v síti pro konfiguraci prohlížeče. V případě potřeby konfigurace více proxy serverů doporučuji umístit PAC soubor na nezávislý server, kde v PAC budou definovány všechny proxy, ke kterým se má klient připojovat. Pro detekci je možné využít pouze jednu z možností (DHCP nebo DNS), doporučuji však konfigurovat obě, různé prohlížeče pracují s konfigurací odlišně.

Nastavení DHCP

V DHCP je nutné konfigurovat možnost 252, se jménem WPAD, datový typ string. Hodnota přidělovaná DHCP pak bude “http://url:port/wpad.dat”. Pro práci s takovým nastavením je nejprve nutné hodnotu 252 definovat a teprve následně přidělit do DHCP scope. Toto nastavení není použito do chvíle, nežli je v prohlížeči povolena autodetekce proxy - viz níže.

Nastavení DNS

V rámci konfigurace DNS je nutné vytvořit záznam host (A), který bude pojmenovaný wpad a bude obsahovat IP adresu web serveru, kde je poskytovaný konfigurační soubor.

Internet Explorer

Pro nastavení konfigurace v rámci Internet Exploreru doporučuji použít nastavení pomocí Group Policy, je to přeci jenom pohodlnější. Tedy nastavíme v

User Configuration >> Windows Settings >>Internet Explorer Maintenance:

"Automatically detect configuration settings"- Enabled

"Automatic Browser Configuration" – Not configured

Pro vynucení a správné použití předchozího nastavení je dobré ještě konfigurovat

Computer Configuration >> Administrative Templates >> Syste/Group Policy:

"Internet Explorer Maintenance policy processing" – Enabled

"Allow processing across a slow network connection" – Enabled

"Do not apply during periodic background processing"- Disabled

"Process even if the Group Policy objects have not changed"- Enabled

Tímto nastavením zajistíme konzistentní nastavení i v případě pomalých WAN linek, připojení pomocí VPN atd.

Ostatní prohlížeče

Firefox, Chrome a další není nutné zvláště konfigurovat, nicméně je nutné, aby se soubor jmenoval wpad.dat.

{/reg}

Autor: Ondřej Výšek

Ondřej je Microsoft MVP od roku 2004, v roce 2008 založil komunitní web optimalizovane-it.cz. Za svou IT karieru, jenž započala v roce 1993 prošel celou řadou pozic, od konzultanta, přes architekt, až po vytváření vizí a strategií zákazníků. V prostředích, ve kterých pomáhal byly desítky, ale i stovky tisíc uživatelů a systémů. V posledních letech se zabývá především cloudovými technologiemi Microsoft 365 a Azure ve společnosti KPCS CZ.

Následující článek Předchozí článek