WPAD: Automatische Proxy Konfiguration

By Marc

Update (24.10.2018): Eine sehr gute Quelle für das Troubleshooting von WPAD und PAC findet sich hier.

Im Unternehmensumfeld wird der Internetzugang von Mitarbeitern meist nicht uneingeschränkt freigegeben. Meist wird der Zugriff auf externe Inhalte über einen Proxy Server im internen Netzwerk geleitet, so dass dort eine Prüfung auf Schadcode, unangemessene Inhalte, Verbreitung vertraulicher Daten usw. vorgenommen werden kann. Per Gruppenrichtlinie kann der Proxy Server leicht konfiguriert werden, interessant wird es allerdings bei Laptops, die außerhalb der Firma auch ohne Proxy surfen können sollten.

Eine sehr flexible Art, die Proxy Konfiguration an die Clients zu verteilen, ist WPAD (Web Proxy AutoDiscovery Protocol). Dadurch kann über die DHCP Option 252 die URL zum Abruf der Proxy Konfigurationsdatei an die Clients weitergegeben werden. Der Clients selbst muss dann nur minimal angepasst werden.

Die WPAD Datei

Die WPAD Datei wpad.dat enthält eine JavaScript Definition, wie der Client mit Webanfragen umgeht, ob er direkt darauf zugreifen kann, oder über welchen Proxy er sein Ziel erreicht. Die Syntax findet man im Internet auch unter dem Schlüsselwort “proxy.pac“. Eine fast allgemeingültige Version einer wpad.dat könnte so aussehen (nur der Proxy muss hier an Eure Umgebung angepasst werden):

function FindProxyForURL(url, host) {

// If the requested website is hosted within the internal network, send direct.
    if (isPlainHostName(host) ||
        shExpMatch(host, "*.demo.intra") ||
        isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
        isInNet(dnsResolve(host), "172.16.0.0",  "255.240.0.0") ||
        isInNet(dnsResolve(host), "192.168.0.0",  "255.255.0.0") ||
        isInNet(dnsResolve(host), "127.0.0.0", "255.255.255.0"))
        return "DIRECT";

// DEFAULT RULE: All other traffic, use below proxies, in fail-over order.
    return "PROXY 172.16.0.1:8080";

}

Hier handelt es sich um eine angepasste Version einer Beispieldatei von findproxyforurl.com, dort gibt es auch sehr gute Referenzen zur Anpassung der Datei. Hat man keinen Webserver im Intranet zur Hand, kann das von einem Windows IIS mit übernommen werden (z.B. benutzt WSUS auch einen IIS). Dort sollte die Dateiendung .dat noch mit dem MIME-Typ application/x-ns-proxy-autoconfig registriert werden. Dazu einfach im Internet Information Service den folgenden Eintrag vornehmen:

wpad_mime1

wpad_mime2

wpad_iis

 

Die DHCP Konfiguration

Die Konfigurationsoption für WPAD ist in Windows DHCP Servern nicht automatisch konfiguriert. D.h. diese muss erst im DHCP Server definiert werden. Das funktioniert entweder per Power Shell …

Add-DhcpServerv4OptionDefinition -ComputerName dc2012r2 -OptionId 252 -Name WPAD -Type String -Description "WPAD URL for proxy configuration"

oder aber über die GUI:

wpad_dhcp1

Nun ist die Option in den Server-, Scope- und Reservierungsoptionen verwendet werden, um die URL zur eben erstellten wpad.dat an die DHCP Clients weiterzugeben. Wieder über Power Shell …

Set-DhcpServerv4OptionValue -ComputerName dc2012r2 -Wpad http://dc2012r2.demo.intra/wpad.dat

oder über die GUI:

wpad_dhcp2

Natürlich müsst ihr meine Demo-URL durch die richtige URL in eurem Netz ersetzen. Damit ist die serverseitige Konfiguration abgeschlossen, nun muss der Client noch richtig konfiguriert sein.

Der Client (Internet Explorer)

In der Standardeinstellung steht der Internet Explorer schon auf der richtigen Option:

wpad_ie

Diese Einstellung kann ohne Probleme auch per GPO gesetzt werden, ohne dass Außendienstmitarbeiter mit ihren Laptops an anderen Standorten (zu Hause, im Hotel, in der Partner Firma, …) Probleme mit dem Internetzugang bekommen.

Die Ausnahmen

Leider unterstützt nicht jedes Programm die automatische Suche nach den Proxy Einstellungen – etwa Firefox muss explizit mit der WPAD Datei konfiguriert werden. Hier muss ein Kompromiss zwischen Funktionalität und Flexibilität gefunden werden, welche Programme denn überhaupt eingesetzt werden und welche auch außerhalb der Firma eine Internetverbindung aufbauen dürfen.

Loading