![]() |
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
quick_abort_min 0 KB
# cache_store_log none
acl all src 0.0.0.0/0.0.0.0 acl SSL_ports port 443 563
http_access deny !Safe_ports
|
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
|
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 |
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!