In meiner Testumgebung verwende ich verschiedene Domains die nicht über einen Proxy gehen sollen. Da die manuelle Pflege an meinen Maschinen mir zu umständlich erscheint habe ich mich für den Proxy PAC (Proxy Auto Configuration) weg entschieden. Normalerweise wäre es ja ganz einfach, einfach bei jeder Domain als TLD .local verwenden und als Filter in der Proxykonfiguration *.local ausschließen. Leider habe ich aber auch .com, usw. im Einsatz und ein Filter auf *.com wäre denkbar unpraktisch 😉 Die Lösung: PAC-File zentral auf meinem Server und bekanntgabe via WPAD.
PAC-File (wpad.dat)
function FindProxyForURL(url, host) { var proxy_yes = "PROXY proxy.lanbugs.local:3128"; var proxy_wlan_yes = "PROXY proxy-wlan.lanbugs.local:3128"; var proxy_no = "DIRECT"; var proxy_failback = "PROXY proxy.lanbugs.local:3128; DIRECT"; // Muss ins Internet direkt if (shExpMatch(url,"www.lanbugs.de/*")) {return proxy_yes;} if (shExpMatch(url,"www.thoma.cc/*")) {return proxy_yes;} // Interne Webseiten if (shExpMatch(url,"*.lanbugs.local/*")) {return proxy_no;} if (shExpMatch(url, "*.lanbugs.de/*")) {return proxy_no;} if (shExpMatch(url, "*.thoma.cc/*")) {return proxy_no;} // Homenet if (isInNet(host, "10.10.4.0", "255.255.255.0")) { return proxy_yes; } // WLAN if (isInNet(host, "10.10.5.0", "255.255.255.0")) { return proxy_wlan_yes; } // Server if (isInNet(host, "10.10.4.200", "255.255.255.255"){ return proxy_no; } return proxy_failback; }
Meine PAC Konfiguration mancht folgendes:
- www.lanbugs.de wird weiterhin zum Proxy gesendet alles andere wird direkt über den internen DNS auf interne Webserver umgeleitet
- www.thoma.cc wird weiterhin zum Proxy gesendet alles andere wird direkt über den internen DNS aus interne Webserver umgeleitet
- *.lanbugs.local wird komplett vom Proxy ausgeschlossen
- Mein Homenet wird komplett über den Proxy proxy.lanbugs.local abgewickelt
- Mein WLAN Netz wird komplett über den Proxy proxy-wlan.lanbugs.local abgewickelt
- Für den Server 10.10.4.200 geht nicht über den Proxy
- Für alle anderen wird versucht über den Proxy zu gehen funktioniert das nicht versucht der Browser es direkt
WPAD Konfiguration
WPAD lässt sich über DNS, DHCP und als manuelles File verteilen, leider unterstützen nicht alle Browser alle Wege.
WPAD Kompatibilitätsliste
Browser | DNS | DHCP | Manuelles File |
Internet Explorer 6.0 (SP1) und höher | JA | JA | JA |
Firefox 1.5.x | JA | NEIN | JA |
Firefox 2.5.x | JA | NEIN | JA |
Opera | NEIN | NEIN | JA |
NetScape | JA | NEIN | JA |
Safari | ? | ? | JA |
Vorbereiten des Webservers für WPAD/PAC File
Mein Server läuft mit Ubuntu 8.04 LTS. Bei den Ubuntu / Debian Versionen liegt die MIME Type Konfiguration unter /etc/apache2/mods-enabled.
/etc/apache2/mods-enabled/mime.conf
AddType application/x-ns-proxy-autoconfig .dat AddType application/x-ns-proxy-autoconfig .pac
Desweiteren sollte die Dateiendung noch in /etc/mime.types bekannt gegeben werden.
application/x-ns-proxy-autoconfig dat application/x-ns-proxy-autoconfig pac
Das PAC File liegt im root-Verzeichnis des Webservers /var/www als proxy.pac und wpad.dat. Alternativ habe ich noch einen Vorschlag gelesen nur die proxy.pac anzulegen und die Datei via redirect unter wpad.dat erreichbar zu machen. Geschmackssache ….
WPAD via DNS
WPAD via DNS geht über verschiedene Wege. Entweder über einen A/CNAME Record oder über einen TXT/SRV Eintrag. Es kann nicht schaden alle möglichkeiten anzulegen. Per DHCP wird in meinem Netz die Domain lanbugs.local als Primäres DNS Suffix mitgegeben, folglich muss ein Eintrag für wpad.lanbugs.local angelegt werden.
Auszug aus der Zone lanbugs.local:
... wpad IN A 10.10.4.200 wpad.tcp IN SRV 0 0 80 10.10.4.200 IN TXT "service: wpad:http://wpad.lanbugs.local/wpad.dat" ...
WPAD via DHCP
Der DHCP Server muss mit der Option 252 erweitert werden. In dieser Option wird die URL der wpad.dat eingefügt.
option wpad code 252 = text; subnet 10.10.4.0 netmask 255.255.255.0 { … option wpad “http://wpad.lanbugs.local/wpad.dat ”; … } subnet 10.10.5.0 netmask 255.255.255.0 { … option wpad “http://wpad.lanbugs.local/wpad.dat ”; … }
WPAD via Manuelles File
Falls alles nicht funktionieren sollte lässt sich das File auch manuell Eintragen.
Firefox:
Extras -> Einstellungen -> Erweitert -> Netzwerk -> Verbindung (Einstellungen) -> Automatische Proxy-Konfigurations-URL: http://wpad.lanbugs.local/proxy.pac
Internet Explorer:
Extras -> Internet Optionen -> Verindungen -> LAN-Einstellungen (Einstellungen) -> (x) Automatisches Konfigurationsskript verwenden: http://wpad.lanbugs.local/proxy.pac
Chrome:
Nutzt die Einstellungen vom Internet Explorer
Opera:
Einstellungen -> Netzwerk -> Proxyserver -> (x) Automatische Proxykonfiguration verwenden (Skript): http://wpad.lanbugs.local/proxy.pac
Finale
Damit die automatische Zuweisung klappt sollte der Browser auch so eingestellt sein das er eine WPAD Konfiguration zulässt.
Firefox:
Extras -> Einstellungen -> Erweitert -> Netzwerk -> Verbindung (Einstellungen) -> (x) Die Proxy-Einstellungen für dieses Netzwerk automatisch erkennen
Internet Explorer:
Extras -> Internet Optionen -> Verindungen -> LAN-Einstellungen (Einstellungen) -> (x) Automatische Suche der Einstellungen
Chrome:
Nutzt die Einstellugen vom Internet Explorer
Opera:
Hier scheint nur der manuelle Weg zu bleiben