Squid-Proxyserver squid.conf
Linux
pk-applets

Vor der Einrichtung des Proxy-Servers muß die Verbindung zum Netz stehen.
 
 

Squid
Squid wird nun mit Yast installiert. Am Ende der rc.config  bzw mit Runlevel-Editor  wird der Start von Squid eingestellt.

Beim (!!)  ersten Start werden die Cache-Verzeichnisse erzeugt.
Man sollte deshalb bei Squid vorher einen Blick auf squid.conf werfen.
Die Datei squid.conf ist ausführlich kommentiert!

Änderungen in der Konfiguration werden, wie üblich, mit dem Befehl  /etc/init.d/squid restart  wirksam.

Die Log-Dateien von Squid sind im Verzeichnis /var/log/squid/  Sie werden schnell umfangreich!
Durch einen Eintrag bei den cron-Jobs sorgt man z.B. für tägliche Rotation der Log-Dateien.  vgl. squid.conf

squid.conf auf IAU
http_port 3128
icp_port  0

cache_mem 200 MB
cache_dir ufs /var/cache/squid 9000 16 256
ipcache_size 2000

quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100

# cache_store_log none
# cache_access_log /dev/null
# cache_log /dev/null
logfile_rotate 5

acl all src 0.0.0.0/0.0.0.0

acl SSL_ports port 443 563
acl Safe_ports port 80 21 443 563 70 210 1025-65535
acl CONNECT method CONNECT
acl LAN1 src 192.168.0.0/255.255.0.0

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow LAN1
http_access deny all

cache_mem 200 MB
Squid benötigt etwa das drei-fache an RAM Speicher. Unsere IAU hat 1 GByte Ram.

cache_dir ufs /var/cache/squid 9000 16 256
Wir reservieren auf der Festplatte  9000 MB Platz in 16*256 Unterverzeichnissen

ipcache_size 2000
Cachgröße für IP-Nummern

quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100
Diese Einträge verhindern, dass Squid Dateien weiter lädt  wenn der Client-Brouser den Ladevorgang abbricht.

# cache_store_log none
# cache_access_log /dev/null
# cache_log /dev/null
logfile_rotate 5
So protokolliert Squid alles.
Insbesondere ist die Datei cache.log in /var/log/squid wichtig, wenn Squid fehlerhaft arbeitet.
Werden die Log-Dateien nicht gebraucht, so sollte man sich das Protokollieren insbesondere der Zugriffe sparen,
also # entfernen bei cache_access_log /dev/null . Dies sollte man sich auch überlegen, wenn mit Squidgard die Zugriffe
überwacht werden.

Die acl's sind Beschreibungen. Wir definieren hier neu
acl LAN1 src 192.168.0.0/255.255.0.0
und lassen mit
http_access allow LAN1
http_access deny all
nur Zugriffe aus dem lokalen Netz zu.
 

Verbinden mit anderen Proxys
Die Server im Computerraum und in der Bibliothek sollen die Anfragen an die IAU weitergeben.
Dort trägt man in der squid.conf noch folgendes ein:
icp_port 0
cache_peer  192.168.0.20 parent 3128 7 no-query no-delay default
sendet Squid Anfragen weiter und zwar an
- den Server 192.168.0.20
- als übergeordneten Server ( parent )
- an den Port 3128
- die 7 deaktiviert icp-Anfragen.
- no-query  : Keine ICP-Anfragen!
- no-delay  : sofort!
- dieser Parent ist der Standart-Parent
Auf diesem Parent muß lediglich ebenso der icp-Port auf 0 gesetzt sein!
Durch den Eintrag
prefer_direct off
erzwingt man das Anfragen beim Parent.
 

Authentifizierung
Bei den folgenden Einstellungen in der squid.conf fordert ein
Authentifizierungs-Programm beim erstmaliger Benutzung des Proxy vom User
die Eingabe vom Benutzer-Namen und Kennwort.
authenticate_program /usr/bin/smb_auth -W ag2.de
acl users proxy_auth REQUIRED
und bei den Regeln den Eintrag
http_access deny !users
In diesem Fall lehnt sich die Authentifizierung an Samba an!
Der User muß also sein Samba-Kennwort eingeben um ins Internet gelassen zu werden.
ag2.de ist die Bezeichnung der Domäne, nicht Arbeitsgruppe!
Leider funktionniert diese Authentifizierung nur, wenn der Samba-Server als PDC arbeitet,
also  domain logons = Yes in der smb.conf.

Die Alternative ist ncsa_auth. Hier lautet der Eintrag
authenticate_program /usr/sbin/ncsa_auth  /etc/squidpw
acl users proxy_auth REQUIRED
und bei den Regeln wieder
http_access deny !users

/etc/squidpw ist eine Passwortdatei, die man mit dem Utility htpasswd bzw htpasswd2 erzeugt
Zunächst auf der Konsole die Datei mit dem ersten User erzeugen:
htpasswd -c /etc/squidpw peter
und zweimal das Kennwort für User Peter eintippen!
Dann gehts mit htpasswd -b /etc/squidpw lisa geheim schneller!
Das folgende Script erstellt die Passwortdatei aus einer Textdatei /allerlei/data

Die Textdatei /allerlei/data
user1  pw1 
user2  pw2 
user3  pw3 
user4  pw4

Das Script
#!/bin/sh
#********** Ergänzt die Passwort-Datei aus Textdatei ********
#************************************************************

while read LINE; do
ARR=(${LINE// /' '})
if [ ${#ARR[*]} -eq 2 ]; then
 echo "******* Erstelle Passwort *****************"
 echo "-"${ARR[0]}"-"
 echo "-"${ARR[1]}"-"
        /usr/sbin/htpasswd2 -b /etc/squidpw ${ARR[0]} ${ARR[1]}
        fi
done < /allerlei/data

Die Passwortdatei /etc/squidpw sieht dann wie folgt aus:
peter:I9gABVJhevDqg
lisa:G77249B1U6DEc
user1:03IN2zOOghDZ.
user2:xsN.1bVMm67BA
user3:xsXidPbs7unGA
user4:03GxesmJE41lM

Leider arbeitet ncsa_auth i.A. nicht mit den Passwort-Dateien /etc/passwd, /etc/shadow oder /etc/samba/smbpasswd!
Je nach Distribution kann man das aber ausprobieren, bevor man eigene Datei erzeugt!

Einstellungen der Browser
In den Browsern der Clients wird als Proxy-Server die
IP-Nummer des Linuxrechners eingetragen:
Clients im Computerraum     192.168.2.20
Clients im Schulnetz              192.168.0.20
Clients in der Bibliothek        192.168.3.20
und als Port-Nummer stets 3128.

Bei Netscape 4.? siehe unter
Bearbeiten -> Einstellungen -> Erweitert -> Proxies
Manuelle Proxy-Konfiguration markieren und unter 'Anzeigen'
das Dialogfeld ausfüllen:
In Ausnahmen steht localhost,'192.168.0.20',linux,linux.ag2.de.

Bei IExplore 5 siehe unter
Extras -> Internetoptionen -> Verbindungen -> Lan Einstellungen
Hier 'Proxy-Server verwenden' markieren. Unter 'Erweitert'
das Dialogfeld wie oben ausfüllen.

Dann sollte alles laufen.
 

Cache-Manager
Viele Informationen über den laufenden Betrieb von Squid erhält man mit den Scripten in
/usr/share/doc/packages/squid/scripts/.
Wer hier nichts findet, soll die Festplatte nach cachemgr.cgi durchsuchen!

Diese Scripten sind in Unterverzeichnis von
/usr/local/http/cgi-bin z.B. in /usr/local/http/cgi-bin/squid
zu kopieren, sodass sie mit dem Apache-Webserver aufzurufen sind. Dieses Unterverzeichnis kann zusätzlich mit einem Kennwort von Apache geschützt werden.Siehe dazu die Seite über das Mailsystem

In der squid.conf dienen die Anweisungen
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
http_access allow manager localhost
http_access deny manager
dem Zugriff auf den Cache-Manager. In diesem Fall von der Linux-Maschine aus, sofern hier ein Brouser läuft,
z.B. der Konqueror unter KDE

Nach Eingabe von http://localhost/cgi-bin/squid/cachemgr.cgi wird das Script aufgerufen. Ein Kennwort ist zunächst nicht
gesetzt. Anweisungen zum Setzen von Kennwörtern erhält man in der ursprünglichen
squid.conf

Löschen des Cache
Dazu muß zuerst Squid gestoppt werden.
Befehl :  /etc/init.d/squid stop
Dann kann mit den Konqueror der Inhalt des Cacher-Verzeichnisses gelöscht werden, also
die Unterverzeichnisse in /var/squid/cache
oder durch Befehl:
rm -fR /var/squid/cache
Dies kann durchaus einige Minuten dauern!
Beache, dass /cache samt User-Rechten erhalten bleiben soll!
Durch den Befehl  /usr/squid/bin/squid -z werden die Verzeichnisse neu angelegt.
und mit  /etc/init.d/squid start wird Squid wieder gestartet!

Beachte:
Squid reagiert empfindlich, wenn man im laufenden Betrieb log-Dateien löscht auch nur Datum oder Uhrzeit ändert.
Also den Deamon vorher stoppen!