Berny's Knowledgebase als Newsfeed

Zentrale Proxy-Konfiguration

Sie haben ein Netzwerk mit mehreren Clients. Diese sollen zum Zugriff auf das Internet bei allen oder einigen Seiten einen Proxy-Server verwenden. Sie möchten ausserdem nicht jedem Benutzer zumuten, die Proxy-Konfiguration im Browser selbst richtig einzustellen.

Stellen Sie doch einfach eine zentrale Proxy-Konfiguration im Netz zur Verfügung. Sie sollte etwa wie folgt aussehen:

function FindProxyForURL(url, host) {

  if (isInNet(host, "192.168.47.0", "255.255.255.0"))
    return "DIRECT";

  if (isPlainHostName(host))
    return "DIRECT";

    // everything else
    return "PROXY proxy.meine-domain.de:3128";
}

Die Funktion wird von oben nach unten abgearbeitet, die erste zutreffende Regel gewinnt. Zuerst schauen wir im o. g. Beispiel nach ob der Webserver im angegebenen Netz steht (z. B. im Intranet), dann erfolgt der Zugriff direkt. Auch bei Servern, die ohne vollqualifizierten Namen (also ohne Domain) angegeben werden, erwarten wir den Server im Intranet. Alles andere wird über den genannten Proxy auf Port 3128 geführt. Falls der Proxy ausgefallen ist, können wir auch einen zweiten Proxy angeben:

return "PROXY proxy1.meine-domain.de:3128; PROXY proxy2.meine-domain.de:3128";

Es sind auch noch viele andere nützliche Dinge in der genannten Java-Script-Funktion möglich, siehe z. B. http://de.wikipedia.org/wiki/Proxy_Auto-Config

Diese Datei muss jetzt nur noch zentral im Netz zur Verfügung gestellt werden. Am einfachsten ist dies auf einem Webserver. Möglich ist aber auch, die Bereitstellung auf einem File-Server, auf einem Laufwerk, auf dem alle Clients zumindest Leseberechtigung haben.

Im Client stellt man dann nur noch auf "Automatische Proxy-Konfigurations-URL verwenden" (je nach Browser auch "Automatisches Konfigurationsscript verwenden" oder ähnlich) und gibt die URL der o. g. Datei ein, z. B.

http://intranet.meine-domain.de/proxy.pac

Dieses Verfahren funktioniert mit Firefox, Internet-Explorer und auch den meisten anderen Browsern.

Änderungen und Optimierungen an der Proxy-Konfiguration sind damit natürlich sehr einfach möglich. Einfach die zentrale Proxy-Konfiguration ändern, fertig. Jeder Client bekommt die Änderungen mit, sobald er die Proxy-Konfiguration das nächste Mal läd. Dies passiert normalerweise spätestens beim nächsten Start des Browsers.

Automatische Proxy-Konfiguration

Die Automatische Proxy-Konfiguration funktioniert im Prinzip genauso. Die Proxy-Konfigurations-Datei muss nur unter einer bestimmten URL zur Verfügung gestellt werden:

http://wpad/wpad.dat

Man muss also sicherstellen, dass die Domain-Suchreihenfolge sinnvoll eingestellt ist, sodass nicht vollqualifizierte Domain-Namen aufgelöst werden können. Dies kann über DHCP auf den Clients automatisch geschehen. Die Clients müssen den Server wpad auflösen können zu einer IP. Ein entsprechender DNS-Alias, der auf einen Intranet-Webserver zeigt, hilft hier weiter. Auf dem Intranet-Webserver ist ein zusätzlicher Virtual Host einzurichten, der den Alias wpad bedient. Dieser liefert dann die Proxy-Konfigurationsdatei aus.

Im Browser wählt man dann "Die Proxy-Einstellungen für dieses Netzwerk automatisch erkennen" (ggf. auch "Automatische Suche der Einstellungen" oder ähnlich). Für den Browser bedeutet das nichts anderes als die Proxy-Konfigurationsdatei unter der genannten Standard-URL zu suchen. Auch dieses Verfahren funktioniert mit Firefox, Internet-Explorer und den meisten anderen Browsern.

Dynamische Proxy-Konfiguration

Manchmal ist es sinnvoll, abhängig davon wo im Netz ein Client sich befindet, eine andere Proxy-Konfiguration zu verwenden. Z. B. soll ein Rechner, der im Intranet hängt auf Server im Intranet direkt zugreifen, auf alles andere aber über einen Proxy (wie im o. g. Beispiel). Hat sich ein Client dagegen z. B. per OpenVPN eingeloggt, muss er vielleicht auf die Server im Intranet über den Proxy ansprechen.

Auch hierfür kann das Verfahren zu automatischen Proxy-Konfiguration eingesetzt werden. Prinzipiell gibt es dazu mindestens zwei Ansätze:

  1. Die URL zeigt auf ein Script. Dieses wertet die Umgebungsvariable REMOTE_ADDR aus und gibt dann den einen oder den anderen Inhalt aus.

  2. über Apaches mod_rewrite wertet man in entsprechenden Rewrite Conditions die Variable REMOTE_HOST aus:

    RewriteCond %{REMOTE_HOST} ...