WPAD - Proxy im Browser einstellen

Achtung:
Ein Windows 2008 DNS Server hat eine Globale DNS Query Block List, die eine Abfrage auf WPAD eventuell verhindert.
Removing WPAD from DNS block list http://technet.microsoft.com/en-us/library/cc995158.aspx
DNS Server Global Query Block List
http://download.microsoft.com/download/5/3/c/53cdc0bf-6609-4841-a7b9-cae98cc2e4a3/dns_server_global_%20query_block%20list.doc

HTTP ist ohne Zweifel sein sehr häufig eingesetztes Protokoll und wird nicht nur von Millionen von "Surfern" täglich unbemerkt genutzt, sondern auch für die Kommunikation mit Diensten.

HTTP im Einsatz

Solange Anwender mit einem PC in der Firma waren und es einen zentralen Übergang zum Internet mit einem Proxy gegeben hat, war die Welt einfach. Per Gruppenrichtlinie oder manuell wurde der Proxy Server und die wenigen Ausnahmen eingetragen. Mittlerweile ist dieser Ansatz aber bei weitem nicht mehr ausreichend.

  • "unmanagedClients
    Die Zeiten, dass alle Clients zwangsweise Mitglied der Domäne waren und per Gruppenrichtlinien und Anmeldeskript verwaltet wurden, nimmt stetig ab. Es sind nicht nur die iPads und andere Tablets, die im Firmennetzwerk eingebunden sind. Auch Unix und Apples OS-X sind durchaus übliche Clients, die auch konfiguriert werden sollten.
  • Mehrere Browser
    Es ist keineswegs mehr so, dass nur der Internet Explorer zum Einsatz kommt. Chrome, Firefox, Opera, Safari aber auch direkter Programme benötigen Internet Zugriff. Es ist aufwändig für jeden Client die Konfiguration getrennt zu verwalten.
  • Mobile und VPN
    Aber auch der Anteil an Notebooks nimmt immer mehr zu und so sind Anwender nicht mehr an einen Ort gebunden, sondern können an unterschiedlichen Stellen per Kabel oder WLAN oder vielleicht UMTS und VPN online sein. Die Proxy-Konfiguration muss sich also dynamisch und schnell an die Netzwerke anpassen. Ein statischer Proxy wird den Vertriebler unterwegs blockieren.
  • Proxy-Ausnahmen
    Immer mehr Firmen nutzen über private Leitungen Dienste in einer Cloud, die nicht über "das Internet" erreichbar sein sollen aber dennoch HTTP nutzen. Das werden immer mehr Ausnahmen auf dem Client, die schwer zu pflegen sind. Auch diese Liste der Ausnahmen sollte dynamische zu pflegen sein
  • 1..n Proxies
    Überlegungen der Lastverteilung aber auch mit mehreren Proxy-Servern in verschiedenen Standorten oder für bestimmte Ziele sind für statische Konfigurationen nicht länger abbildbar. Hier muss eine Logik etabliert werden, bei der der Client möglichst den passenden Proxy anhand der Ziel-URL oder Zieldomäne nutzt. So könnten z.B. bestimmte allgemein zugängliche Seiten (Reiseplanung, Hotelplanung etc.) über einen Proxy ohne Authentifizierung und Logging geleitet werden.

Es gibt also mehr als nur einen Grund die Konfiguration eines Proxy Servers auf den Clients nicht länger statisch in der Konfiguration zu hinterlegen. Und genau dazu ist WPAD gedacht.

Hinweis:
WPAD ist nicht dazu, Berechtigungen zu steuern. Ein Anwender kann WPAD immer umgehen. Wer also sicherstellen will, dass nur bestimme Personen bestimmte Ziele im Internet erreichen dürfen, muss dies über AccessListen auf Proxy und Firewall steuern.

HTTP mit Exchange, Outlook, Office 365 u.a.

Mit Exchange ist HTTP ebenfalls wichtig da es gleich an mehreren Stellen eingesetzt wird

  • Outlook Webzugriff
  • Der Zugriff auf ihr Postfach mit einem beliebigen Browser nutzt HTTP oder besser HTTPS
  • MAPI over HTTP
    Seit Exchange 2013 kann Outlook 2010 und höher auch direkt MAPI/HTTP sprechen
  • RPC over HTTP
    Outlook 2003 kann seine RPC-Daten auch in HTTP "einpacken"
  • Exchange ActiveSync Server
    Die Verbindung von mobilen Endgeräten über ActiveSync
  • Exchange System Manager
    Wenn Sie öffentliche Ordner verwalten, dann wird auch dies über HTTP durchgeführt.
  • PFDavAdmin
    Auch das Hilfsprogramm PFDavAdmin greift per WebDAV (HTTP) auf die Schnittstelle zu.

All das funktioniert natürlich immer dann sehr einfach, wenn die Verbindung von Client zu Server direkt erfolgt. Allerdings ist das nur im LAN der Fall. Sobald Firewall dazwischen sind, können Sie davon ausgehen, dass ein HTTP-Proxy zwischen den Systemen sitzt und ihre Verbindung mehr oder minder gut umsetzt.

ACHTUNG:
Bei der Konfiguration der WPAD-Datei im Betriebssystem können Sie mit Outlook und jedem anderen WINHTTP-Client auf den Fehler laufen, dass die WPAD-Datei nicht genutzt wird. Dies ist immer dann der Fall, wenn die WPAD-Datei nicht per HTTP von einem Webserver gezogen wird, sondern statisch als Datei angegeben wird. Beim "Download" von einer "file://"-URL kommt kein Contenttype mit.

„In order to fix the previous problems (caused by a known Outlook bug) we had to move from manual proxy settings to using Auto Detect with a wpad.dat file. Therefore the next step was to try doing the polar opposite and set it to manual instead, which worked successfully. That would be the end of the story but as mentioned above we need auto configuration für Outlook so more detailed investigation was required to find a fix that worked with the auto detect proxy method.“
Quelle https://gshaw0.wordpress.com/2014/12/01/solving-office-365-office-2013-proxy-sign-in-errors/

“Also note that Outlook uses WinHTTP. Meaning in the proxy configurations, you should use http:// für he proxy script file. File:// will cause different types of issues.
WinHTTP itself has no support für file:// URL’s (you can’t access a file:// URL with WinHTTP regardless of whether it’s a PAC file or normal file).
So, file:// URL’s für a PAC file will not work für use with Outlook or ANY WinHTTP  client (there are many others).
Quelle https://social.technet.microsoft.com/Forums/office/en-US/ef29b9ff-55ac-4d4e-a03d-66dddd122bde/outlook-and-wpad-proxy-configuration

Nutzen Sie daher bitte eine HTTP-Urls oder gleich die Konfiguration per DNS oder DHCP.

Proxy Konfiguration

Da sich auch im internen LAN natürlich sowohl interne Systeme ohne Proxy aber auch das Internet über einen Proxy erreichen wollen, muss dies konfiguriert werden. Wenn Sie sich dazu die Einstellungen des Internet Explorers anschauen, dann haben sie hier gleich mehrere Wege:

Diese Dialoge sind natürlich alles andere als übersichtlich und einfach. Allerdings erkennen Sie im mittleren Fenster auch eine "automatische Suche der Einstellungen". Wenn ein Browser schon eine automatische Konfiguration anbietet, dann sollte ein Administrator zumindest wissen wie dies funktioniert um dieses Funktion eventuell zu nutzen. Denn die manuelle Konfiguration ist sehr unflexibel und statisch. Das bedeutet im schlimmsten Fall, dass Sie diese Einstellungen für jedes Betriebssystem (Windows, Linux, Mac etc.) und für jedes Produkt (Internet Explorer, Firefox, Mozilla, Safari etc.) konfigurieren müssen. Zwar können Sie die Einstellungen im Internet Explorer anhand einer Gruppenrichtlinie zentral vorgeben, aber dies funktioniert eben nicht mit Firefox und auch nur mit Systemen ab Windows 2000 die zudem Mitglied ihrer Domäne sind.

Wer übrigens "schnell" den Proxy umschalten will, kann dies mit Proxy Switcher tun. Alternativ kann man natürlich einfach einen "lokalen Proxy" wie Proxomitron einsetzen.

WPAD Funktionsweise

Hinter der automatischen Konfiguration verbirgt sich das Prinzip "WPAD", was soviel wie "Web Proxy Auto Detection" bedeutet und ca. 1996 von NetScape (http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html) initiiert wurde. Über verschiedene Wege kann damit ein Browser die Information erhalten, wie er ein Script erhalten kann, welches die Antwort auf die Frage "Welchen Proxy soll ich nutzen ?" geben kann. Ein Skript könnte wie folgt aussehen:

function FindProxyForURL(URL, host)

{ URL=URL.toLowerCase();
host=host.toLowerCase();

if (isPlainHostName(host))      // URLs ohne Domainsuffix
  return "DIRECT";

else if (dnsDomainIs(host, "msxfaq.de") ||   // lokale Domäne
         dnsDomainIs(host, "msxfaq.net"))
  return "DIRECT";

else if (isInNet(host, "10.0.0.0","255.0.0.0"))    // Local IP
  return "DIRECT";

else if (shExpMatch(host, "*.bahn.de") ||     // freie Seiten ueber Proxy1
         shExpMatch(host, "*.dasoertliche.de") ||
         isInNet(host, "192.168.0.0","255.255.0.0"))
  return "PROXY proxy1.msxfaq.net:3128";

else
  return "PROXY proxy2.msxfaq.net:8080"; //www Zugriff über Proxy mit Anmeldung
}

Achtung UNICODE
Programme wie Notepad können Dateien auch im UNICODE-Format abspeichern. Mit einer solchen eine PAD-Datei können die wenigsten Clients umgehen.

Der Browser benötigt einfach diese Script, und ruft  die Funktion "FindProxyForURL" mit den Parametern der URL und dem Hostnamen auf. Das Script gibt dem Browser dann als Antwort den Proxy oder "DIRECT" zurück. Dieses Beispiel nutzt nur einen Teil der verfügbaren Funktionen zur Auswertung von URL und HOST. Der Browser muss natürlich das Script selbst erst einmal erhalten. Zwar können die meisten Browser hier auf eine lokale Datei zugreifen, aber viel interessanter ist eine zentrale Bereitstellung z.B.: auf einem Webserver, den der Browser natürlich ohne Proxy erreichen können muss.

Die URL zu diesem Script findet der Browser auf einen der folgenden Wege:

  • DHCP Option 252
    Der Client erfragt vom DHCP-Server den Inhalte der Option 252. Das funktioniert auch, wenn der Client selbst eine statisch konfigurierte Adresse hat, denn setzen Sie DHCP nicht nur mit "vergeben von IP-Adressen" gleich. DHCP stet für "Dynamic Host Configuration Protocol" und kann viel mehr als nur IP-Adressen zu verteilen.
    Damit Sie unter Windows die Option 252 überhaupt pflegen können, müssen Sie diese im DHCP-Server erst eintragen.
  • DNS Hostname "wpad"
    Auch über DNS kann ein Server gefunden werden, der auf Port 80 eine WPAD.DAT hinterlegt. So sicht der Client u.A: nach "wpad" oder nach "wpad.meindomainsuffix" nach A- SRV und TXT-Einträge, um über einen HTTP-Zugriff von dort die Datei wpad.dat zu laden.

Es gibt noch einige weitere Wege, die in den weiterführenden Dokumentationen beschrieben sind. Nicht jeder Client muss dazu alle Funktionen unterstützen. WPAD selbst unterscheidet die Fähigkeiten in drei Gruppen

  • WPAD Minimal
    Diese Clients nutzen einfach nur DNS
  • WPAD Standard
    Diese Clients nutzen erst DHCP und dann DNS
  • WPAD Erweitert
    Diese Clients nutzen alle verschiedenen Wege

DHCP gewinnt
Clients, die DHCP und DNS nutzen, fragen zuerst die DHCP-Optionen ab.

Da aber nur wenige Clients DHCP nutzen, sollten sie immer die DNS-Option konfigurieren, auch wenn Sie hierüber dann nicht pro Subnetz andere WPAD-URLs angeben können. Das können Sie über die Flexibilität der Skriptdatei aber mehr als wett machen. Bei allen mir bekannten Browsern können Sie z.B. nur genau einen Proxy Server eintragen. Die Skriptdatei erlaubt ihnen aber abhängig von IP-Adressen, Namen etc. Unterschiedliche Proxyserver zurück zu geben. Das ist z.B. interessant, wenn Benutzer für bestimmte Zielen oder aus anderen Subnetzen einen anderen Proxy verwenden sollen.

WPAD und die Browser

So schön ein Standard ist, so unterschiedlich ist die Umsetzung bei den verschiedenen Browsern. Nur der Internet Explorer scheint die Konfiguration per DHCP zu unterstützen. Alle anderen Produkte beschränken sich auf die Nutzung von DNS oder gar nur auf die Angabe eines Scripts.

Browser Einstellungen DHCP DNS Manuelles Script
Internet Explorer
(6 SP1)
JA Ja Ja
Firefox
(1.5.0.4)
NEIN Ja Ja
Firefox
(2.5)
Firefox 2 Proxyeinstellungen Nein Ja Ja
Opera
(8.5.2)
Nein ? Nein ? Ja
NetScape
(8.1)
NEIN Ja Ja
Safari

oder

Anscheinend ist diese Einstellung ähnlich wie beim Internet Explorer eine Systemeinstellung, von der alle Programme profitieren können. (Aber nicht müssen)

unbekannt was passiert, wenn keine URL angegeben wird unbekannt was passiert, wenn keine URL angegeben wird Ja

Die Konfigurationsfenster können sich natürlich von Version zu Version ändern. Browseraufsätze wie z.B. Maxthon oder Avant-Browser erlauben ein schnelles umschalten zwischen Proxy Servern.

WPAD einrichten

Da sie ja nun wissen, wie die Browser und Clients arbeiten, können Sie sich natürlich auch selbst die Einstellung herleiten. Hier die wesentlichen Schritte:

  • wpad.dat erstellen
    Zuerst müssen Sie natürlich die Skriptdatei für die Steuerung des Browsers mit einem Editor erstellen. Es handelt sich dabei um JavaScript und im Internet finden Sie sehr viele Beispiele
  • Webserver mit wpad.dat
    Diese Datei könnte natürlich auch auf dem Webserver per Script individuell, d.h. abhängig von der IP-Adresse des Clients, dem angemeldeten Benutzernamen etc. erstellt werden. Aber das würde den Artikel hier übersteigen. Achten Sie beim Webserver darauf, dass die Erweiterung ":DAT" auf "application/x-ns-proxy-autoconfig” zugeordnet ist.
  • Optional URL in DHCP veröffentlichen
    Sie können URL im DHCP-Server für alle Clients bekannt geben. Interessant ist auch hier, das Sie dies pro DHCP-Bereich natürlich abweichend eintragen können. So könnten Sie bestimmte Subnetze einen anderen Proxy zuweisen.
    Create an option 252 entry in DHCP
    http://www.Microsoft.com/technet/prodtechnol/isa/2004/help/SRSP1_H_Create252.mspx
  • DNS-Einträge
    Da nicht alle Browser die Ermittlung per DHCP unterstützen, sollten Sie einen Alias "WPAD" in ihren DNS-Zonen pflegen, die auf den Webserver mit der WPAD.DAT verweisen.
    Create a WPAD entry in DNS
    http://www.Microsoft.com/technet/prodtechnol/isa/2004/help/SRSP1_H_WPADentry.mspx

Wenn Sie an verschiedenen Stellen auch eine Datei "wspad.dat" lesen,  dann handelt es sich hierbei um ein ähnliches Prinzip um den Microsoft "Winsock Client/Firewall-Client" des ISA-Servers zu konfigurieren.

TMG/ISA und WPAD

Übrigens unterstützt der ISA-Server die Funktion WPAD von Hause aus. Wenn Sie die Option auf dem ISA einfach aktivieren, dann läuft auf dem ISA-Server ein kleiner DHCP-Server mit, welcher nur die Option 252 an Clients sendet und ein kleiner Webserver, der auf Port 80 eine wpad.dat-Datei bereitstellt, die aus der ISA-Konfiguration dynamisch erstellt wird.

Sie müssen diese Funktion je Netzwerkkarte aktivieren. Sinnvoll ist hier natürlich nur die interne Netzwerkkarte. Gehen Sie dazu in der ISA-Konfiguration auf die Netzwerkverbindung und aktivieren Sie die Einstellung:

Beachten Sie, dass hier ein Portkonflikt mit einem bestehenden Webserver auf dem ISA-Server auftreten kann. Den Eintrag im DNS-Server müssen Sie aber manuell eintragen. Beim TMG 2010 sind die Einstellungen ähnlich. Im gleichen Fenster auf einer andere Karteikarte können Sie dann die Details weiter einstellen:

WPAD.DAT mit IIS

Wenn Sie keinen TMG oder ISA nutzen, können Sie natürlich auch einen beliebigen anderen Webserver nutzen. Sie müssen nur sicherstellen, dass er den Client die WPAD.DAT-Datei anonym und mit dem richtigen Application-Type zukommen lässt. Sie müssen dazu in den MIME-Typ die Zuordnung addieren:

dat = application/x-ns-proxy-autoconfig

WPAD und DNS

Wenn Sie den Eintrag "WPAD" in der DNS-Zone gemacht haben, aber der Client diesen Namen nicht findet, dann dürften Sie einen Windows DNS-Server nutzen, in dem die "Global Block List" noch nicht angepasst ist. Microsoft hat als Schutzmechanismus einige Namen im DNS per Default gesperrt. Stellen Sie sich mal vor, ein beliebiger PC würde per dynamischem DNS sich den Namen WPAD eintragen und so alle Clientzugriffe über sich leiten. Mit dem passenden Proxy könnte so ein Client ziemlich viel unfug anstellen. Daher ist dieser Name (wie auch ISATAP) per Default gesperrt.

Weitere Links