Vorheriger Abschnitt Inhaltsverzeichnis Nächster Abschnitt

7.5 Der Proxy-Server Squid

Als Proxy-Software wird beim c't/ODS-Kommunikationsserver Squid eingesetzt, weil sich diese Software inzwischen bei vielen Providern als "Standard" durchgesetzt hat. Squid hat in diesem Server drei Aufgaben:

  1. Er holt als Proxy-Server alle Web-Seiten aus dem Internet über die "Firewall"-Funktion hinweg.
  2. Er speichert alle aufgerufenen Seiten zwischen (sofern sich diese Seite dafür eignet)
  3. Er filtert unerwünschte Seiten nach einem bestimmten Regelwerk aus.

Weil die Clients eine IP-Adresse aus dem "privaten Bereich" haben, an die keine Antworten aus dem Internet zurückkommen würden, stellt der Proxy-Server den "Ersatzserver" für Internet-Seiten dar. Wenn auf einem Client ein Web-Browser eine Adresse ruft, z.B. http://www.heise.de/ct/, so fragt der Browser den Proxy-Server nach dieser Seite. Der Proxy hat, wenn Arktur online ist, eine offizielle IP-Adresse und kann die Seiten aus dem Internet holen. Die Cache-Funktion sorgt dafür, dass die einmal geholte Seite auf der lokalen Festplatte gespeichert wird. Ruft nun ein anderer Client die gleiche Seite auf, nutzt der Cache-Proxy statt der Seite aus dem Internet die lokale Kopie. Das ist insbesondere für Bilder sinnvoll, deren Inhalt sich nur in seltenen Fällen ändert und die im Vergleich zu den HTML-Seiten meist viel größer sind. Aktive Seiten (z.B. Suchanfragen) werden automatisch erkannt und nicht im Cache gespeichert. Die Filterfunktion sorgt dafür, dass bestimmte Seiten nicht geholt werden, sondern stattdessen eine entsprechende Fehlermeldung erscheint. Zudem wird bei der Anfrage entschieden, ob der Client berechtigt ist, Anfragen ans Internet zu stellen. Über diese Funktion werden einzelne Netzbereiche von den Internet-Zugriffen ausgeschlossen, wie im Kapitel 6.1 erklärt.

Die zentrale Steuerdatei für diesen Dienst steht im Verzeichnis /etc/squid und heißt squid.conf . Diese Datei ist speziell an den c't/ODS-Kommunikationsserver angepasst und eigentlich ordentlich kommentiert, so dass die vorgenommenen Einstellungen nachvollziehbar sind. Weiterhin finden Sie im Unterverzeichnis errors die Fehlermeldungen, die ins Deutsche übersetzt wurden, damit für den Schulbetrieb sinnvolle und verständliche Meldungen erscheinen. Sollten Sie an einer internationalen Schule unterrichten, finden Sie die englischen Fehlermeldungen im Unterverzeichnis errors-eng im gleichen Verzeichnis. Dann müssen Sie nur die squid.conf anpassen.

Noch etwas zur Arbeitsweise des Squid in diesem Server: Squid wird in zwei verschiedenen Zuständen betrieben: Online- und Offline-Betrieb. Wenn der Server offline ist, also keine Internet-Verbindung besteht (auch nicht standby!), wird Squid durch die Zeile "offline_mode on" am Ende der squid.conf in eine Betriebsart versetzt, die Seiten nur aus dem lokalen Cache holt und keine Internet-Anfragen macht. Damit die Seiten aus dem Cache zugeordnet werden können, muss die IP-Adresse des WWW-Namens ebenfalls im Cache enthalten sein. Dieser IP-Nummern-Cache wird allerdings nur im Arbeitsspeicher gehalten. Wird der Squid-Prozess einmal gestoppt, z.B. durch einen Neustart des Servers, geht dieser Nummern-Cache verloren und die Seiten werden, obwohl im Festplatten-Cache enthalten, nicht angezeigt.

Im Online-Betrieb startet Squid je nach Einstellung erst eine Anfrage mit dem ICP (Internet Cache Protokoll) an den "vorgesetzten" Proxy, falls Sie bei der Einrichtung der Internet-Verbindung einen solchen Proxy angegeben haben. Schlägt das fehl, wird dieselbe Anfrage mit dem HTTP-Protokoll an den Proxy wiederholt. Haben Sie keinen Proxy angegeben, holt Squid die Seiten direkt aus dem Internet. Ist also der Proxy des Providers nicht gerade optimal angeschlossen, ist es oft besser, keinen Proxy anzugeben (z.B. bei T-Online).

Hat Squid die Seite einmal geholt, wird sie samt Anfrage auf der Festplatte gespeichert. Dazu dient eine komplexe Struktur von Verzeichnissen unterhalb von /var/proxy , in der die Anfragen gespeichert werden. Die Einträge verwaltet Squid mit einer Index-Datei in diesem Verzeichnis. Sie sollten also keinesfalls Dateien in diesen Verzeichnissen einfach löschen bzw. die Index-Datei von Hand bearbeiten!

Um zu erkennen, ob eine Seite sich verändert hat, wird an den WWW-Server zunächst eine sogenannte "If-modified-since"-Anfrage gestartet. Sollte das Datei-Datum auf dem Web-Server ein neueres Datum haben, wird die Seite übertragen und damit der Cache-Inhalt überschrieben. Hat sich die Datei nicht verändert, kann der Proxy die Datei aus dem Cache holen.

Diese Betriebsweise bringt natürlich auch zwei Probleme mit sich:

  1. Wenn eine Seite sich verändert, aber der Proxy bzw. dessen vorgesetzter Proxy diese Änderung nicht mitgeteilt bekommen, wird dennoch die Seite aus dem Cache gezeigt. Hier können Sie (beim Netscape Navigator) den folgenden Trick nutzen: Halten Sie die "Shift"-Taste gedrückt, während Sie den "Neu Laden" (Reload)-Button mit der Maus anklicken. Dann wird über eine spezielle Anfrage der Cache davon überzeugt, die Seite trotzdem aus dem Internet zu holen und nicht die lokale Kopie zu benutzen. Das geht natürlich nur, wenn der Server auf "online" steht!
  2. Wenn Sie auch lokale Seiten über den Proxy holen und der Server auf "offline" steht, werden aktualisierte Seiten selbst dann nicht geholt, wenn man den oben genannten Trick nutzt. Dann hilft es eventuell, hinter die Adresse ein Fragezeichen zu setzen, also statt http://www/~meyer/index.htm ein http://www/~meyer/index.htm? , weil so der Proxy davon ausgeht, die Seite enthielte aktive Inhalte und darf nicht gespeichert werden.

Alle Anfragen an den Proxy schreibt Squid in eine Log-Datei, die sich im Verzeichnis /var/log/proxy befindet und access.log heißt. Über diese Datei können Sie nachvollziehen, welcher Rechner welche Internet-Seiten um welche Zeit angefordert hat. Ist auf dem Client eine Software installiert, die sogenannte ident-Anfragen beantwortet, wird auch der Nutzer, der die Seite aufgerufen hat, in dieser Datei vermerkt. Sie haben damit einen Überblick über die Internet-Aktivitäten der Schüler. Für Linux verbirgt sich die Ident-Software meist in einem Paket "pident", für Windows liegt eine geeigente Ident-Software auf der CD im Verzeichnis software/win9x.

Damit Sie die Datei komfortabel auswerten können, hat Joachim Deckers ein Script beigesteuert, das Sie im unteren Teil des erweiterten Admin-Interfaces finden und das "Proxy-Zugriffe" heißt.

Proxy-Auswertung1
Abbildung 7.5-1: Proxy-Auswertung in erweiterten Admin-Interface

Hier können Sie einstellen, nach welchen Kriterien der Zugriff ausgewertet werden soll. Als Ergebnis erhalten Sie eine Seite wie in der folgenden Abbildung dargestellt.

Proxy-Auswertung2
Abbildung 7.5-2: Ergebnis der Proxy-Auswertung

In dieser Abbildung sieht man deutlich, warum eine Ident-Funktion notwendig sein kann: Alle Zugriffe erfolgen durch einen Terminal-Server von der gleichen IP-Adresse aus. Nur durch die Trennung der Anfragen anhand des ident-Eintrags kann unterschieden werden, wer die Anfrage gestellt hat. Hellrot dargestellte Einträge wurden durch die Sperrliste zurückgewiesen (hier: www.chatlove.de, weil "love" in der Sperrliste steht), dunkelrote Einträge konnten nicht geholt werden, weil die Adresse nicht auflösbar oder ungültig ist.

Damit sollten Sie einen Überblick über die Arbeit des eingesetzten Proxy-Servers erhalten haben.


Vorheriger Abschnitt Inhaltsverzeichnis Nächster Abschnitt
© Reiner Klaproth, 15.02.2002