Tipps

Die mitglieferte Konfigurationsdatei enthält bei Squid auch viel Dokumentation. Daneben gibt es aber auch meist eine HTML-basierte Dokumentation (ansonsten auch via Web )

Wer nicht an allen Clients Proxy-Einstellungen machen will, schaut sich am besten mal PaketFilter an (Stichwort: transparenter Proxy).

Squid kann auch transparent gemacht werden, und falls ein größeres Netzwerk vorhanden ist, besteht die Möglichkeit, mehrere Caches zusammenarbeiten zu lassen. Die Daten werden so besser im Netz verteilt und man hat mehr Arbeitsspeicher (da mehrere Rechner) zur Verfügung.

Eine Alternative zum transparenten Proxy ist die automatische Proxy-Konfiguration, die man nur einmal im Client eintragen muß - z.B. http://localhost/proxy.pac. Das Javaskript proxy.pac weist dann dem Client die Proxy-Einstellungen zu. Im Gegensatz zum transparenten Proxy hat nicht jeder Client per Default eine http-Verbindung ins Internet, was manchmal unerwünscht sein mag (Virenverbreitung!).

Beispiel:

 function FindProxyFORUrl(url, host)
 {
   if (isInNet(host, "172.16.0.0", "255.255.0.0")){
    return "DIRECT";
    }
   else{
   return "PROXY p1:3128; PROXY p2:3128; DIRECT";
   }
 }

Dieses Skript bewirkt:
*Kein Proxy für das lokale Netz
*p1:3128, wenn verfügbar, sonst p2:3128, sonst direct


Frage: Was sind p1 und p2?


Bei der Konfiguration von Cache-Hierarchien sind einige Punkte zu beachten: 'Parents' sind übergeordnete Caches, Siblings gleichgeordnete. Zum Informationsaustausch kann das Protokoll ICP verwendet werden (Default: Port 3130). Wenn ein Proxy kein ICP kann, können ICP-Anfragen mit der Option 'no-query' unterbunden werden. Bei manchen (älteren) Versionen ist die Option 'prefer_direct' als 'on' vorkompiliert; hier hilft 'prefer_direct off', um die Benutzung des Parent zu erzwingen. Bei ICP wird natürlich eine entsprechende Firewall-Regel benötigt. ACHTUNG: ICP verwendet auch UDP.

Hinweis: Das SSL nicht gecacht wird, muß der Proxy auch direkten Zugriff aufs Internet haben, um solche Seiten liefern zu können.

Es ist ebenfalls möglich, Squid als ReverseProxy vor einen Webserver zu schalten.

Mit den sogenannten "Delay Pools" kann man auch auf simple Art Beschränkungen der Bandbreite -- auch für einzelne Benutzer bzw. -gruppen -- realisieren. Eine Beschreibung findet sich unter http://www.serverwatch.com/tutorials/print.php/3357241 . HINWEIS: Delay-Pools sind statisch, d.h. Begrenzungen gelten auch dann, wenn die Leitung frei ist. Mit einem kleinen Trick kann man dieses Verhalten verbessern; z.B. delay_parameters x 50000/250000 definiert ein Maximum von 50Kbyte/sec Durchfluß für den Pool x, erlaubt aber für einen User einen Peak von 250Kbytes/sec, wenn die Leitung dafür frei ist. Dann werden kurze Webinhalte schnell geladen, während lange Downloads auf 50Kbytes/sec beschränkt werden. In manchen Fällen mag man genau das wollen. Testen kann man Delay-Pools am einfachsten mit wget. Man setzt mit ifconfig auf die Netzwerkkarte eine (zusätzliche) IP für den gewünschten Delay-Pool und bindet dann wget mit --bind-addres=ip an diese Adresse.

Außerdem kann man Squid auch mit verschiedenen Modulen verknüpfen. So ist es z.B. möglich, mit sog. Blacklists Seiten zu sperren ( SquidGuard, DansGuardian) oder eins der verschiedenen Module zur Authentifizierung der Benutzer einzusetzen. Hier kann man z.B. auf smb_auth verweisen - damit ist es möglich, dass Squid mit einer bestehenden NT-Nutzerdatenbank zusammen arbeitet.

Zur Anonymisierung dienen die Optionen anonymize_headers, forwarded_for und fake_user_agent. ACHTUNG: Squid muß für 'anonymize_headers' compiliert sein; ist nicht immer der Fall.

Sperren von Webseiten

Um bestimmte Domänen zu sperren trägt man folgende Zeilen in die Datei squid.conf ein:

acl gesperrt dstdomain "/etc/squid/domains.deny"
http_access deny gesperrt

Nun trägt man die zu sperrenden Domänen (jeweils eine pro Zeile) in die Datei /etc/squid/domains.deny ein, z.B.

.doubleclick.net
.ientry.net

Das ganze geht auch mit ip-Nummern:

acl gesperrt-ip dst "/etc/squid/ip.deny"
http_access deny gesperrt-ip

Nun trägt man die zu sperrenden ip-Nummern (jeweils eine pro Zeile) in die Datei /etc/squid/ip.deny ein, z.B.

62.26.121.2/32

Browser und Betriebsystem fälschen

header_replace User-Agent Gozilla/4711.0815 (CP/M; 11-bit; 59 MByte)

in die Datei squid.conf eintragen. Funktioniert allerdings nur bei vorherigem löschen des echten User-Agent mit

header_access User-Agent deny all

Nach User-Agent kann man jeden beliebigen Text eintragen, es kann jedoch zu Problemen mit schlecht konfigurierten Servern kommen.

Absender-Info einschränken

Um zu verhindern, daß unnötige Informationen aus dem internen Netz nach außen gelangen, sollte man dies mit

- anonymize_headers deny Via und

- anonymize_headers deny X-Forwarded-For

unterbinden. Welche Header genau nach außen gehen, kann man mit ngrep herausfinden.

*Warnung: Squid muß mit der Option 'anonymize_headers on' compiliert sein, was nicht immer der Fall ist!

Links

Hilfen

Daten nach Viren scannen

Mit ICAP (gibt's fertig als cacheMARA von http://www.marasystems.com/) kann man den HTTP- und FTP-Traffic nach Viren zu scannen

Alternativ gibt es bei http://antivir.de ein webgate, das vor oder hinter Squid geschaltet werden kann.

Logdateien analysieren

Werbebanners aus Webseiten entfernen

über regular expressions in der URL: siehe Squid-Vortrag von Johannes Franken

Squid inkompatible Seiten

Anhängig von den Einstellungen kann es sein daß man manche Seiten nicht zu Gesicht bekommt weil der Seitenersteller glaubt besser zu wissen was der Browser verdauen kann als der Benutzer. Manchmal hilft es die Hauptseite zu umgehen und direkt auf die gewünschte Unterseite zuzugreifen.

OffeneFrage: Woran erkennen manche Server daß ein Proxy benutzt wird?


KategorieServer

Squid (zuletzt geändert am 2012-04-17 16:45:44 durch 178-26-73-130-dynip)