Automatische Proxy-Konfiguration

Automatische Konfiguration des Proxys Squid auf Windows- (2K, XP) und KDE-Clients.

Einleitung

Die Konfiguration ist recht aufwendig, da die automatische Konfiguration von verschiedenen Programmen unterschiedlich abgefragt wird. Man benötigt für eine Domäne einen lauffähigen Squid (OK, logisch), Apache, Bind und DHCPD. Die folgende Konfiguration läuft auf dem Server mit folgenden Diensten:

  • isc-dhcpd-V3.0.2
  • squid-2.5.10_6
  • apache-2.0.54_2
  • bind 8.3.7

Bei entsprechender Einstellung werden automatisch konfiguriert:

  • Konquerer (KDE > 3.2)
  • Firefox (> 1.03)
  • Windows Explorer (> 5.5)

Anderes habe ich nicht getestet; es kann also vieles weitere funktionieren.

1. Das Script

Als erstes benötigt man ein Script, das man bei der Proxy-Konfiguration des Webbrowsers als 'Automatic proxy configuration URL' angeben kann. In kurzer Form sieht dies folgendermaßen aus:

  1. function FindProxyForURL(url,host)
  2. {
  3. if (isPlainHostName(host) || dnsDomainIs(host, ".DOMAIN"))
  4. {
  5. return "DIRECT";
  6. }
  7. else
  8. {
  9. return "PROXY NAME.DOMAIN:PORT";
  10. }
  11. }

Anmerkung:, NAME.DOMAIN und PORT sind komplett durch eigene Bezeichnungen zu ersetzen. Wenn der Proxy z.B. unter example.com auf Port 3128 erreichbar ist, steht in der Zeile

return "PROXY example.com:3128";

Dieses Script hat natürlich einige Mängel, man sollte Ausnahmen für Rechner und Webseiten angeben, aber für den ersten Test reicht das.

Dieses Script speichert man als proxy.pac im Document Root des Webservers der eigenen Domäne ab. Dieses Script darf nur so eigenständig in dieser Datei stehen (und z.B. nicht in einer Webseite eingebaut werden) und muss laut Beispiel unter http://my.dyndns.com/wpad.dat erreichbar sein!

2. Eintrag im DNS

Der Webserver, der unter http://DOMAIN erreichbar ist, sollte einen cname zu wpad.DOMAIN bekommen. Im Zonenfile steht also:

  1. wpad IN CNAME DOMAIN.

Damit kann dann der Webserver konfiguriert werden:

3. Konfiguration des Webservers

Die Konfiguration in der httpd.conf des Apaches sieht folgendermaßen aus:

  1. <VirtualHost IP:80>
  2. ServerAdmin webmaster@DOMAIN
  3. DocumentRoot PATH
  4. ServerName DOMAIN
  5. ErrorLog /var/log/apache/DOMAIN.error_log
  6. TransferLog /var/log/apache/DOMAIN.access.log
  7. ServerAlias wpad.DOMAIN
  8. Redirect /proxy.pac http:///DOMAIN/wpad.dat
  9. <VirtualHost>

In die mime.types muss folgende Zeile eingefügt werden:

application/x-ns-proxy-autoconfig       dat     pac

4. Konfiguration des DHCP-Servers

In der dhcpd.conf vom isc-dhcpd steht folgendes:

  1. option wpad-curl code 252 = text;
  2. shared-network NETZ
  3. {
  4. authoritative;
  5. subnet IP netmask 255.255.255.0
  6. {
  7. [...]
  8. option wpad-curl "http://DOMAIN/wpad.dat";
  9. [...]

Das war es dann schon. Nachdem die Dienste reloaded oder restarted wurden, sollte alles automatisch konfiguriert werden.