SelfLinux Internet World Wide Web Proxies Der Web-Proxy Squid Abschnitt 8 | SelfLinux-0.13.0

| Der Web-Proxy Squid | Autor Formatierung GPL

#### 9 Browser-Proxy-Einstellungen automatisieren und optimieren

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.

#### 9.1 Automatische Proxy-Konfiguration

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.

#### 9.1.1 Eigene Server direkt ansprechen

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";
    }

#### 9.1.2 Proxy-Auswahl für verschiedene Standorte automatisieren

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.