WPAD – Web Proxy Autodiscovery Protocol
Ich habe gerade mal wieder an meinem Netzwerk, genauer gesagt, an meiner Proxy-Konfiguration geschraubt und dachte mir, dass daraus ein hilfreicher Artikel werden könnte.
Preface:
Ich betreibe u.a. einen DHCP-Server, einen Proxy-Server und einen Webserver.
Was liegt also näher, als diese drei Dienste miteinander zu koppeln, mit dem Ziel, die Information “Proxy-Server” automatisch zu verteilen, anstatt jedem Browser und jedem System im Netzwerk manuell einen Proxy-Server einzutragen. Außerdem betreibe ich auf verschiedenen Systemen “netz-interne” Webserver, die ich direkt aufrufen möchte, ohne den Proxy zu verwenden.
Hier also die Beschreibung des Zusammenspiels:
Ich arbeite hier mit Diensten unter Linux. Das Ergebnis (die automatische Verteilung der Proxy-Konfiguration) funktioniert für Linux und Windows. Möglicherweise bzw. bestimmt funktioniert das auch für den Mac, aber ich mache hier keine Aussagen zu etwas, das ich nicht selbst getestet habe.
Ziel:
- Verwendung eines Proxy-Servers für alle oder ausgewählte Systeme/Browser
- Subnetz-abhängige Verwendung des Proxy-Servers
Voraussetzungen:
Wie diese Voraussetzungen geschaffen werden, ist nicht Teil dieser Anleitung. Ich gehe davon aus, dass diese Dienste eingerichtet sind und funktionieren. Mein Webserver heißt “wpad.mein.privates.netz.de” und der Proxy-Server läuft auf Port 3128 und trägt den Namen “proxy.mein.privates.netz.de”.
Erstellung der WPAD-Datei:
Diese Datei enthält einen “Fahrplan” für den Browser, damit er entscheiden kann, ob und wenn ja, welchen Proxy-Server er verwenden soll. Eine genaue Beschreibung des Aufbaus und der Funktionen einer WPAD-Datei findet sich hier.
Meine sieht folgendermaßen aus:
| function FindProxyForURL(url, host) { if(isPlainHostName(host) || localHostOrDomainIs(host, “localhost”) || localHostOrDomainIs(host, “127.0.0.1″) || isInNet(host, “10.0.0.0″, “255.255.0.0″)) { return “DIRECT”; }else { return “PROXY proxy.mein.privates.netz.de:3128; DIRECT”; } } |
Das bedeutet: kein Proxy für den eigenen Rechner und kein Proxy für Webserver im eigenen Subnetz.
Diese Datei unter dem Namen “wpad.dat” (case-sensitive) auf dem Webserver abgelegt. Wichtig ist an dieser Stelle, dass die Datei direkt im Web-Root und nicht in einem Unterverzeichnis liegt
Konfiguration des DHCP-Servers:
Ich verteile den Proxy-Verweis für das gesamte Subnet, wer möchte, kann das natürlich auch anders (z.B. pro Host) machen.
Hier die Auszüge aus der /etc/dhcpd.conf:
| option wpad code 252 = text;subnet 10.0.1.0 netmask 255.255.255.0 { … option wpad “http://wpad.mein.privates.netz.de/wpad.dat ”; … } |
Ganz besonders wichtig ist das Leerzeichen bei der Pfadangabe “…/wpad.dat ”.
Es existiert unter Umständen das Problem, dass der Internet Explorer beim Verarbeiten des Pfades das letzte Zeichen abschneidet und so die Datei nicht mehr gefunden werden kann. Das Leerzeichen am Ende stellt also einen Workaround dar.
Da nicht alle Browser die DHCP-Optionen abfragen können, ist es sinnvoll, im Nameserver einen Host namens “wpad” anzulegen, dessen Webserver die WPAD-Datei bereitstellt. Somit können “DHCP-unfähige” Browser dennoch eine Proxy-Konfiguration beziehen, denn der Hostname “wpad” wird dabei als Standard verwendet. Leider ist es mit dieser Variante nicht möglich, für Subnetze oder gar einzelne Hosts verschiedene WPAD-Dateien anzubieten. Der gemeinsame Nenner wäre hier das Domain-Suffix des Clients.
Ich habe mittels Wireshark zwei bei mir installierte Browser überprüft:
Der Internet Explorer 7 lässt sich Lease-Informationen vom DHCP-Server geben, um dort die entsprechende WPAD-Option zu erhalten, falls gesetzt. Der Firefox 2.0.0.8 sucht nach einem Gerät mit dem Namen “wpad” im Netz. Dabei werden die auf dem lokalen PC eingetragenen DNS-Suchsuffixe nacheinander abgearbeitet.
Browser-/Systemkonfiguration:
Nun muss dem Browser / dem System nur noch beigebracht werden, dass er die Proxy-Einstellungen automatisch beziehen soll. Im Internet-Explorer wird das über das Aktivieren der Option “Automatische Suche der Einstellungen” bei “Extras -> Internetoptionen… -> Verbindungen -> LAN-Einstellungen” erledigt. Beim aktuellen Firefox geschieht das über “Einstellungen -> Erweitert -> Netzwerk -> Einstellungen (Verbindung) -> Die Proxy-Einstellungen für dieses Netzwerk automatisch erkennen”.
Nachdem DHCP-Server und Browser neu gestartet wurden, kann man nun überprüfen, ob alles wie erwartet funktioniert. Der erste Schritt wäre, eine beliebige URL aufzurufen und im Webserver-Log zu überprüfen, ob die Datei “wpad.dat” erfolgreich vom surfenden Rechner abgerufen wurde. Ist das der Fall, kann man nun anhand des Proxy-Logfiles erkennen, ob der Proxy oder eine direkte Verbindung vom Browser genutzt wird. Dazu werden einfach interne und externe URLs aufgerufen.
Wichtiger Hinweis: Wenn die WPAD-Datei nicht abgerufen werden konnte, arbeiten Mozilla, Firefox und Internet-Explorer stillschweigend mit einer direkten Verbindung.
Nachwort:
Falls jemand diese Anleitung gebrauchen kann/konnte oder einen Fehler gefunden hat, würde ich mich über ein Feedback freuen.
UPDATE:
Bei Problemen mit WPAD und RSS-Feeds könnte eventuell diese Seite helfen.



leider scheinen sowohl der IE8 als auch der Firefox 3.5.* nicht nach dem DNS namen des Webservers zu fragen, sondern nach der IP.
Somit werden nameVirtualHost ignoriert. Den Apache sollte man so konfigurieren, das bei der frage nach der IP auch der VServer mit dem WPad file zurück gegeben wird
http://192.168.1.1/wpad.dat = http://wpad.domain.local
dafür kann man im apache/vhosts verzeichnis der config für den VPad VServer ein ‘aaa’ vorranstellen, somit wird diese als erstes geladen damit ist das wpad-htdocs verzeichnis auch über die IP erreichbar.
ausserdem kann es sinnvoll sein in der wpad conf vom Apache den MIME-Type für die .dat endung zu überschreiben, dies geschieht über den Parameter: “AddType application/x-ns-proxy-autoconfig .dat” in der VServer conf des Apaches.
Ansonsten hat mir dein HowTo sehr gefallen/geholfen, danke
Gruß Felix Brunk
Leider kann ich auf der Seite kein Impressum finden, dies sollte dringend nachgebessert werden.
Gruß ctFreez
Hi ctFreez,
vielen Dank für Deine Infos, ich werde das demnächst mal ausprobieren und die Anleitung entsprechend anpassen. Mit den neuen Browsern hab ich das Ganze bisher noch nicht getestet.
Gruß,
Thomas
P.S.: Stimmt, ich hab mein Impressum auch nicht mehr gefunden, bzw. gefunden schon, aber es war auf der Site nicht mehr verlinkt. Hat sich durch das neue Theme nun aber eh erledigt.
I try to setting on Firefox: Automatic proxy configuration URL:http://192.168.1.254/wpad.pac
Squid it work! (Authentication pop-up)
But I choose Auto-detect proxy settings for this network
Squid not work! (No, Authentication pop-up)
Please help for me.