Automatische Browserkonfiguration mit WPAD

Einleitung

Oft ist es in Firmennetzwerken unerwünscht, den Client-PCs direkten Internetzugang zu erlauben. Meistens beschränkt sich der Internetzugang zudem auf das WWW und wird über einen sogenannten Proxyserver ermöglicht.

Die meisten Netzwerkeinstellungen der Clients können via DHCP mit übergeben werden. Für die automatische Einstellung des Webbrowsers hingegen wurde WPAD eingeführt, das Web Proxy Autodiscovery Protocol eingeführt. Damit werden alte Lösungen wie das Verwenden einer proxy.pac-Datei abgelöst.

« zurück (Gesammelte Anleitungen)

Inhalt

« zurück (Gesammelte Anleitungen)

WPAD - Wie es funktioniert

Je nach verwendetem Browser findet eine Suche der Verbindungseinstellungen via WPAD immer dann statt, wenn die Einstellung "Automatische Ermittlung der Einstellungen" (o. s. ä.) in den Browsereinstellungen angehakt ist.

Der Browser sucht in mehreren Schritten nach dem unten beschriebenen Verfahren nach seiner Konfigurationsdatei. Dahinter verbirgt sich eine ECMA-Script Datei, die eine spezielle Funktionsschnittstelle implementieren muss. Je nachdem, wie eine aufzurufende URL im Browser lautet, kann entschieden werden, ob der Zugang direkt oder über den Proxyserver erfolgen soll.

« nach oben

Voraussetzungen für den Einsatz von WPAD

WPAD im DNS registrieren

Bei der DNS-basierten Methode baut der Browser eine Reihe von sogenannten "wohlbekannten" (engl.: well-known) URLs zusammen, die er der Reihe nach abfrägt. Hierbei geht der Browser vom vollen primären Domännamen des PCs ohne das erste Label. In jedem weiteren Schritt wird eine Subdomain nach der anderen gekürzt, bis der Browser entweder seine Konfiguration findet, oder enttäuscht ;-) aufgibt.

Sei der vollständige Name des PCs nun workstation.division.country.example.com, so sucht er in den folgenden Schritten nach der Datei wpad.dat:

  • http://wpad.division.country.example.com/wpad.dat
  • http://wpad.country.example.com/wpad.dat
  • http://wpad.example.com/wpad.dat

In kleineren Netzwerken ohne Subdomänen findet diese Suche erst beim dritten Schritt an und dort sollte die Datei auch hinterlegt werden. Damit dort die Datei wpad.dat gefunden wird, muss also der Hostname wpad.example.com bekannt sein und auf einen internen (ohne Proxyserver) erreichbaren Webserver verweisen.

Konfiguration des Webservers

Damit der Webserver die Datei korrekt ausliefert, so dass der Browser sie als Konfigurationsdatei akzeptiert, muss der mitgelieferte MIME-Type wie folgt auf dem Webserver konfiguriert werden:

Apache

Um dem Apache die Dateiendung .dat oder .pac bekannt zu machen, editiert man die Konfigurationsdatei httpd.conf und fügt die folgenden Zeilen in den globalen Bereich ein:

AddType application/x-ns-proxy-autoconfig .dat
AddType application/x-ns-proxy-autoconfig .pac

Hinweis: Bei debian wird die Konfigurationsdatei httpd.conf in viele Einzeldateien unterhalb des Verzeichnisses /etc/apache2/conf.d augeteilt.

Außerdem muss man noch die folgenden Zeilen in die Datei mime.types eintragen:

application/x-ns-proxy-autoconfig dat
application/x-ns-proxy-autoconfig pac
Internet Information Server

Man kann den Dateityp für den gesammten Webserver bekannt machen unter

IIS Verwaltung > Eigenschaften des Servers > MIME-Typen > Hinzufügen

oder nur für die Webseite

IIS Verwaltung > Eigenschaften der Seite > HTTP-Header > MIME-Typen > Hinzufügen

Und dann den Dateityp hinzufügen:

Erweiterung: application/x-ns-proxy-autoconfig
MIME-Typ: .dat

Damit liefert der IIS die wpad.dat so aus, dass der Browser sie interpretiert statt nach einem Verzeichnis für die herunterzuladende Datei zu fragen.

Quelle: Gruppenrichtlinien.de: Proxykonfiguration: WPAD als Alternative

Aufbau der WPAD-Datei

Die eigentliche Entscheidung, für welche URL welcher Proxyserver zurückgegeben wird und welche Seiten direkt angesurft werden dürfen, wird in der Datei wpad.dat festgelegt. Die zu implementierende Skriptfunktion ist bereits aus der proprietären Netscape-Variante der proxy.pac (Wikipedia) bekannt.

Beispieldatei

function FindProxyForURL(url, host) {
    // Adressen, die auf example.com liegen, brauchen keinen Proxy:
    if (shExpMatch(url,"*.example.com/*"))    { return "DIRECT"; }
    if (shExpMatch(url, "*.example.com:*/*")) { return "DIRECT"; }

    // URLs innerhalb dieses Netzwerkes werden abgefragt ueber
    // Port 8080 auf fastproxy.example.com: (macht Nameserver Anfrage)
    if (isInNet(host, "10.0.0.0", "255.255.248.0")) {
       return "PROXY fastproxy.example.com:8080";
    }

    // Alle anderen Anfragen gehen ueber Port 8000 von proxy.example.com.
    // sollte das fehlschlagen, verbinde direkt ins Netz:
    return "PROXY proxy.example.com:8000; DIRECT";
}

(Quelle: Wikipedia)

Einschränkungen

Die Funktion isInNet (und weitere ähnliche Funktionen) führen eine DNS-Anfrage durch, die den Browser blockieren kann, falls der DNS-Server nicht antwortet.

« nach oben

Abschließende Bemerkung

Der Internet Explorer unterstützt drei Arten der Proxy-Konfiguration:

  • Automatische Ermittlung der Einstellungen (WPAD)
  • Angabe einer URL zu einer proxy.pac-Datei
    (Hinweis: Diese Datei kann durchaus dieselbe wpad.dat sein, die in der automatischen Konfiguration ermittelt und geladen werden soll)
  • Manuelle Konfiguration des Proxyservers

Alle Methoden können separat aktiviert werden und werden der Reihe nach abgearbeitet. Über Gruppenrichtlinien ist es möglich, diese Einstellungen zentral festzulegen.

Für den Webbrowser Firefox gibt es hierfür das Konzept Autoconfig, das in Autoconfig - Zentrale Kontrolle über den Webbrowser Firefox genauer beschrieben ist.

« nach oben

Fallstricke

Mit der neuen Servervariante Windows 2008 Server kommt ein neues Sicherheitsfeature, das sich "DNS block list" nennt. Hierbei handelt es sich um eine Liste von Namen, die nicht über den lokal installierten DNS-Server eines Windows 2008 Servers aufgelöst werden, auch wenn diese Einträge dort registriert sind.

Um WPAD auf einem Windows 2008 DNS-Server nutzen zu können, muss diese Blockliste angepasst werden. Hierfür gibt es die folgenden Befehle:

Zeigt, ob die Liste aktiviert ist

cmd> dnscmd /info /enableglobalqueryblocklist

Zeigt die Hostnamen, die auf der Blockliste stehen

cmd> dnscmd /info /globalqueryblocklist

Die Blockliste kann komplett deaktiviert werden mit

cmd> dnscmd /config /enableglobalqueryblocklist 0

Mit dem folgenden Befehl kann man alle Hostnamen auf der Blockliste entfernen

cmd> dnscmd /config /globalqueryblocklist

Oder man gibt eine eigene Liste mit Hostnamen vor. Diese Liste muss alle Namen enthalten, die in der Liste eingetragen sein sollen.

cmd> dnscmd /config /globalqueryblocklist name [name] ...

Quelle: Microsoft TechnNet: Removing WPAD from DNS block list

Damit klappt es dann auch mit Windows 2008. :-)

« nach oben

Weiterführende Links

« nach oben

« zurück (Gesammelte Anleitungen)