Da ich hier nichts gefunden habe, was nutzbar wäre, aber eben auch schon einige Fragen dazu sind, hier mal eine kleine Anleitung wie man Firefox oder das System zu einer automatischen Proxy-Konfiguration bewegen kann.
Sinnvoll vor allem für Leute die mit einem Notebook unterwegs sind und nicht jedes mal die Proxy-Informationen verändern möchten. Ich habe hier zwar Ubuntu-Server 10.04 angegeben, aber die Anleitung ist für alle Versionen gültig.
Voraussetzung ist im Netzwerk definitiv ein Webserver, der auf Port 80 seine Pakete verteilen kann. Ob ihr dann zu einem entfernten Proxy umleitet oder Euren eigenen besitzt, spielt hier keine Rolle. Es muss nur ein Proxy vorhanden sein, den Ihr nutzen möchtet.
Ich gehe hier mal von folgendem Szenario aus. Es existiert:
* Bind9 als DNS-Server
* Squid als Proxy-Server
* Apache als Webserver
Benötigt wird auf jeden Fall eine Domain mit dem Namen wpad. Diese muss zwingend ohne weitere Subdomains oder TLDs zu finden sein, da einige Automatische Proxy Sucher immer http://wpad/wpad.dat aufrufen werden!
Am Apache ist zur entsprechenden Domain oder gleich in die /etc/apache2/apache.conf diese Zeile hinzu zu fügen, ohne diese sonst die Datei fehlerhaft übertragen wird.
AddType application/x-ns-proxy-autoconfig wpad.dat
Wer keinerlei Domains auf dem Apache besitzt, kann ganz einfach die Standard-Konfiguration und Pfad des Apache nutzen um da die wpad.dat zu hinterlegen. Gibt es Domains auf dem Teil, dann ist so wie mit jeder anderen Domain zu verfahren und eine neue an zu legen, die dann eben so in etwa aussieht:
<VirtualHost wpad:80>
ServerAdmin webmaster@localhost
DocumentRoot /srv/www/wpad
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /srv/www/wpad/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.wpad.log
LogLevel warn
CustomLog /var/log/apache2/access.wpad.log combined
</VirtualHost>Im DNS muss dann natürlich auch ein entsprechender Eintrag existieren. In der /etc/bind/named.conf.zones wird dann folgender Eintrag benötigt:
zone "wpad" {
type master;
file "/etc/bind/db.wpad";
allow-query { any; };
};Die dazugehörende Datenbank (/etc/bind/db.wpad) sieht dann eben so aus:
;
; wpad - proxy konfigurations file
;
$TTL 604800
@ IN SOA wpad. ns.eumel.home. (
23 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.eumel.home.
@ IN A 127.0.0.1
@ IN AAAA ::1
@ IN A 192.168.120.10Alternativ, wer sich diesen Aufwand sparen möchte, kann sicher auch seine lokale hosts Datei entsprechend anpassen um zur IP 192.168.120.10 zu gelangen.
Nachtrag:
Das wird dann am Ende aber zu dem Ergebnis führen, dass andere wpad.dat nicht mehr gefunden werden können, wenn sich in anderen Netzwerken welche befinden sollten!
Die Dienste auf dem Server sind jetzt alle neu gestartet, der erste Test steht an und sollte in etwa so ein Ergebnis bringen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | $ dig wpad ; <<>> DiG 9.7.0-P1 <<>> wpad ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34180 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;wpad. IN A ;; ANSWER SECTION: wpad. 604800 IN A 127.0.0.1 wpad. 604800 IN A 192.168.120.10 ;; AUTHORITY SECTION: wpad. 604800 IN NS ns.eumel.home. ;; ADDITIONAL SECTION: ns.eumel.home. 604800 IN A 192.168.104.10 ;; Query time: 0 msec ;; SERVER: 192.168.104.10#53(192.168.104.10) ;; WHEN: Tue Feb 14 00:17:32 2012 ;; MSG SIZE rcvd: 97 |
Der schlimmste Teil ist damit vorbei. Jetzt eigentlich "nur" noch die eigentliche wpad.dat. Grundsätzlich ist das Ding nicht wirklich Hexenwerk. Jedoch meines Erachtens nach nirgends vernünftig dokumentiert. (ich bin zumindest nicht fündig geworden)
Meine momentane wpad.dat sieht so aus und funktioniert hervorragend:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function FindProxyForURL(url, host) { lurl = url.toLowerCase(); if ( (lurl.substring(0, 5) == "http:") || (lurl.substring(0, 4) == "ftp:" ) || (lurl.substring(0, 6) == "https:") ) if ( isPlainHostName(host) || (host.substring(0, 4) == "127.") ) return "DIRECT"; else return "PROXY 192.168.120.10:8080"; else return "DIRECT"; } |
Für alle die, die nicht wirklich mit solchen Codeschnipseln etwas anfangen können, eine kleine Erklärung, damit man das Ding evtl. erweitern kann.
* Zeile 1+2 sind die Funktion (woher auch immer die aufgerufen wird)
* Zeile 3 übergibt die der Funktion übergebene Variable "url" nur klein geschrieben (toLowerCase) an "lurl"
* Zeile 4 - 8 sucht speziell nach den Aufrufen. Also http und Co. "Wenn das vorhanden, dann tue das"
* Zeile 9 - 12 lösen noch auf, ob die Anfrage an den Proxy evtl. vom localhost kommt, also 127.
* Zeile 13, denn wenn das der Fall ist, dann gehe DIRECT ins Internet ohne Umweg Proxy. Hier kann man nun auch diverse andere Netzwerke oder einzelne Hosts zusätzlich definieren, die den Proxy umgehen sollen oder gar einen anderen nutzen müssen.
* Zeile 14 + 15 sagen dann, wenn das alles bisher nicht für Dich zutraf, Du aber http, https oder ftp nutzen willst, dann gehe über den Proxy
* Der Rest, denn trifft gar nix zu, gehe ohne Proxy ins Internet
Das war dann auch schon alle Hexerei.
Wer jetzt wissen möchte, ob die wpad.dat auch tatsächlich gefunden wird, der kann dann ja auf dem Apache mit Hilfe von Tail live nach sehen.
Ich hoffe es nutzt dem ein oder anderen etwas. Ideen sind herzlich Willkommen.
2004 – 2012 ubuntuusers.de • Einige Rechte vorbehalten