WPAD - Web Proxy Autodiscovery Protocol

WPAD ist dazu da, die Proxyeinstellungen der Webbrowser für den Administrator einfach zu verwalten.
In Unternehmen gibt es oft verschiedene Clients die auf das Internet zugreifen wollen.
z.B. Windowsdomänenrechner, WindowsStandalonerechner, Gästerechner, Mac-Rechner, Linuxrechner.
Windowsdomänenrechner können über GPOs konfiguriert werden. Was macht man aber mit den anderen Clients?
Allen ist die Möglichkeit gemein, Proxyeinstellungen der Firma selbständig zu erkennen und zu benutzen.
Dazu müssen die Proxyeinstellungen der Webbrowser nur auf „für dieses Netz automatisch erkennen“ oder „automatische Suche der Einstellungen“
eingestellt sein.


Jetzt suchen die Clients in Ihrer DNS-Domäne nach einem Server, der WPAD heißt.
Das kann leicht mit einem Alias im DNS-Manager konfiguriert werden der wiederum auf einen realen Server verweist.
Auf diesem realen Server muss ein Web-Server auf Port 80 laufen. Ganz egal ob APACHE, lighthttp oder IIS.
Hat der Client diesen Servernamen aufgelöst versucht er die Datei wpad.dat auf diesem Server zu finden.
Also sucht er nach einer URL: http://wpad/wpad.dat .
Diese Datei ist eine Javascriptdatei, in der der Proxy hinterlegt ist.
Hat er diese gefunden lädt er diese, führt sie aus und konfiguriert sich dadurch selbsttätig und geht dann zu dem darin enthaltenen Proxyserver.
Beispiel einer wpad.dat:

wpad.dat
/*****************************************************************************
*       wpad.dat Beispiel für zwei Standorte und ein paar extraserver:       *
*       lokale domain: my.dom.ain                                            *
*       hauptproxy -> Zentrale -> Netz: 192.168.0.0                          *
*       nebenproxy -> Filiale -> Netz: 172.19.100.0                          *
*       Author:         Richard Borwinius                                    *
*       E-Mail:         richard@borwinius                                    *
*                                                                            *
*****************************************************************************/
function FindProxyForURL(url, host)
{
	if (isPlainHostName(host) || dnsDomainIs(host,".my.dom.ain")) {return "DIRECT";}
	if (shExpMatch(url,"http://192.168.*"))		{return "DIRECT";}
	if (shExpMatch(url,"http://srv*")) 		{return "DIRECT";}
	if (shExpMatch(url,"http://sharep*")) 		{return "DIRECT";}
	if (isInNet(host, "172.19.10.0", "255.255.255.0")) {return "PROXY nebenproxy.my.dom.ain:8080";}
	else
        { return "PROXY hauptproxy.my.dom.ain:8080";}
}

Der Client wird über die wpad.dat angewiesen:

  • gehe direkt zu dem Server wenn die URL ein *.my.dom.ain enthält.
  • gehe direkt zu dem Server wenn die URL eine lokale IP enthält.
  • gehe direkt zu dem Server wenn die URL ein „srv*“ enthält.
  • gehe über den nebenproxy wenn die Client-IP aus dem Netz der Filiale stammt.
  • wenn nichts davon zutrifft, gehe über den hauptproxy der Zentrale.

Damit können auch Clients die in beiden Netzen unterwegs sind erkennen, welchen Proxy sie benutzen sollen.
Der WPAD-Server kann, muss aber nicht auch der Proxy sein sondern nur einen WEB-Server mit der Datei wpad.dat beherbergen.
Wenn auf dem DNS beispielsweise zwei Proxy mit dem selben Namen WPAD geführt werden, so bekommt der Client anhand seiner IP-Adresse den richtigen zugeteilt.
Beispiel:

Aliaseintrag wpad 192.168.0.100
Aliaseintrag wpad 172.19.10.100

Beide WPADs hosten die selbe Datei wpad.dat

Es sind aber noch weitere filigrane Konfigurationen für Subdomänen mit WPAD möglich.
Wer es nur einfach braucht, für den reicht eine einfache WPAD.DAT:

wpad.dat
/*****************************************************************************
*       Author:         Richard Borwinius                                    *
*       E-Mail:         richard@borwinius                                    *
*****************************************************************************/
function FindProxyForURL(url, host)
{
        return "PROXY hauptproxy.my.dom.ain:8080";
}


Achtung!: Entgegen anders lautender Seiten sind keine DHCP-Server-Einstellungen zu ändern.
Der Server WPAD wird beim Start des Webbrowsers automatisch gesucht.

Wer einen DNS-Server auf Windows 2008-Server Basis nutzt wird feststellen dass der Alias WPAD nicht gefunden wird.
Microsoft hat wegen Virenproblemen den Namen auf eine Blacklist gesetzt und löst diesen nicht auf.
Abhilfe auf allen DCs ausführen:

dnscmd /config /enableglobalqueryblocklist 0


siehe auch : https://github.com/manugarg/pacparser