Netscape hat für seinen Browser eine Möglichkeit entwickelt, über
Javascript die Proxy-Einstellungen des Browsers zu konfigurieren.
Inzwischen haben alle bekannten Browser diese Fähigkeit
integriert.
Über ein solches Skript kann festgelegt werden, auf welcher Adresse
und über welchen Port der Proxy seinen Dienst zur Verfügung stellt.
Zusätzlich kann definiert werden, welche IPs und URLs über den Proxy
zu gehen haben und welche dagegen direkt an einen Web- oder FTP-Server
weitergeleitet werden.
Worin besteht nun der Vorteil, ein derartiges Skript zu nutzen,
gegenüber dem direkten Eintragen des Proxies in der
Browser-Konfiguration?
-
Erhöhte Flexibilität:
Wenn der Proxy die IP oder den Port wechselt, sich die Einträge für
direkten Zugriff ändern, reicht ein Eintrag in dem zentralen Skript.
Ansonsten müssten zur Änderung alle Client-PCs angefasst werden.
-
Erhöhte Ausfall-Sicherheit:
Sind mehrere Proxies vorhanden, können alle eingetragen werden.
Ist der erste in der Liste nicht erreichbar, wird der
zweite genommen u. s. w. Es kann sogar eingetragen werden, dass,
wenn kein Proxy zur Verfügung steht, der Browser direkt ins Internet
geht (wenn dies netzwerktechnisch erlaubt sein sollte).
Soll der Proxy dagegen direkt in die Browser-Konfiguration
eingetragen werden, ist nur ein einziger Proxy-Eintrag möglich.
-
Steuerung des Traffic:
Sind die Internet-Nutzer über mehrere Standorte verteilt, kann
über die Feststellung, aus welchem Netz er zugreift, der optimale
Proxy für ihn zugewiesen werden.
-
Erleichterung bei Wartung:
Schnelle Reaktion bei Ausfall eines Proxys ist durch einfache
Konfiguration des Proxy-Skriptes möglich. Bei Wartungsarbeiten kann
vorübergehend einfach ein anderer Proxy zugewiesen werden.
Der Pfad zu dem Skript ist in der Browser-Konfiguration einzutragen.
Dies kann manuell oder zentral und automatisiert über zu kopierende
Konfigurations-Dateien oder unter Windows NT/2000/XP über die
Systemrichtlinien/Policy erfolgen.
Es ist nicht nötig, Javascript programmieren zu können, um die
Möglichkeiten der Auto-Konfiguration zu nutzen.
Es sollte reichen, die hier vorgestellten Beispiele den eigenen
Netzen anzupassen, d.h. die Domains und IPs mit den eigenen zu
ersetzen.
Sollen sich die Clients direkt, ohne Proxy als Bindeglied
dazwischen, an die eigenen Web-Server wenden, kann dies über den
eigenen Domain-Namen wie im folgenden Skript umgesetzt werden:
function FindProxyForURL(url, host)
{
if (dnsDomainIs(host, ".selflinux.org"))
return "DIRECT";
else
return "PROXY wwwproxy.selflinux.org:3128";
}
|
Die Zahl hinter dem Proxy-Namen legt den Port des Proxies fest.
Eine andere Möglichkeit besteht in der Angabe der Netzadresse, welche
direkt, ohne Proxy, angesprochen werden soll:
function FindProxyForURL(url, host)
{
if (isInNet(host, "192.168.10.0", "255.255.255.0"))
return "DIRECT";
else
return "PROXY wwwproxy.selflinux.org:3128";
}
|
|
Sind mehrere Standorte mit relativ langsamen Standleitungen verbunden,
ist der Aufbau eines Cache-Verbundes sinnvoll. Dafür werden mehrere
Squid-Proxies aufgesetzt und sinnvoll miteinander gekoppelt.
Für einen derartigen Proxy-Verbund ist es wichtig, den
Internet-Nutzern immer den Proxy vor Ort zuzuweisen, um die
in dem Standort zwischengespeicherten Seiten nutzen zu können.
Dadurch wird eine Standleitung oder auch ein VPN entlastet.
Die URL, unter welcher das Skript abgelegt ist, gilt für alle
Standorte. Besonders Mitarbeiter, welche oft die
Standorte wechseln, werden dies sehr begrüßen.
Das Konfigurations-Skript muss nun feststellen können, an welchem
Standort sich der Internet-Nutzer befindet.
Da Netze verschiedener Standorte jeweils eigene IP-Bereiche haben
sollten, kann dies über die Abfrage der Quell-IP erfolgen.
Netscape hatte leider nicht vorgesehen, in der Konfigurationsdatei
nach der Quell-IP fragen zu können. Deshalb hier eine Lösung über
PHP, die diese Funktion hinzufügt. Der Webserver, der das Auto-Skript
beherbergt, muss PHP installiert haben.
<?php
header("Content-type: application/x-ns-proxy-autoconfig");
if (preg_match("/192\.168\.85/", $REMOTE_ADDR)) {
$adrr = "PROXY wwwproxy.selflinux.org:3128; PROXY wwwproxy2.selflinux.org:3128";
}
if (preg_match("/192\.168\.75\./", $REMOTE_ADDR)) {
$adrr = "PROXY 10.20.20.1:3128; PROXY wwwproxy.selflinux.org:3128";
}
?>
|
function FindProxyForURL(url, host)
{
if (isPlainHostName(host) ||
dnsDomainIs(host, ".selflinux.org") ||
dnsDomainIs(host, ".partnernetz.de") ||
isInNet(host, "192.168.85.0", "255.255.255.0") ||
isInNet(host, "172.20.20.80", "255.255.255.255") ||
isInNet(host, "192.168.75.0", "255.255.255.0")
return "DIRECT";
else
return "";
}
|
Wird also z.B. von einem 192.168.75.* Netz zugegriffen, wird der
Proxy 10.20.20.1 zugewiesen. Wenn der nicht verfügbar ist, wird
wwwproxy.selflinux.org genutzt. Und das, ohne dass es der Anwender
bemerkt.
|
|
|