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
- WPAD - Wie es funktioniert
- Voraussetzungen für den Einsatz von WPAD
- Aufbau der WPAD-Datei
- Abschließende Bemerkung
- Fallstricke
- Weiterführende Links
« 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.
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.
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 dieselbewpad.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.
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.