4. Konfigurálási példák
A konfigurálási problémákat három különböző
példán keresztül szeretném megvilágítani. A konfiguráláshoz a szoftver
2.2STABLE4-es változatát vettem alapul. Ha elkészítettük a végleges
konfigurációs file-t, akkor érdemes a magyarázószövegeket kivágni az egyébként
is terjedelmes állományból, hiszen az eredeti 'squid.conf.default' tartalmazni
fogja mindig az aktuális, magyarázó szövegekkel ellátott
konfigurációt.
Alapkonfiguráció
Alapkonfigurációként vegyünk egy
önálló (nem hierarchiába kapcsolt) Squid szervert, amely egy hálózati
interfésszel (és egy IP címmel) rendelkezik. A gép fizikai memóriája 64 MB RAM,
cache-elésre 30 MB RAM-ot, ill. az objektumok tárolására 1 GB diszkterületet
lehet használni. A cache-hez való hozzáférés jogosultságának ellen orzését a
kliens IP címe alapján végezzük. A gépen futó Squid monitorozását SNMPv1
segítségével a lokális gépen végezzük. Továbbá a Squid által generált
hibaüzeneteket szeretnénk magyar nyelven látni. Ha saját magunk készítjük el a
bináris kódot, akkor az auto-konfiguráló szkriptet a következő paraméterekkel
hívjuk meg: 'enable-snmp enable-err-language-Hungarian'. A következő
paramétereket érdemes beállítani (ami alapértelmezésben adott, azt nem érdemes
módosítani, ill. nem is szükséges a konfigurációs file-ba belefoglalni):
# A 'cgi-bin', ill. '?' karaktereket tartalmazó URL-eken található
# objektumokat nem cache-eljük
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
# a kiszolgálás alatt lévő kérések, a 'negatívan' cache-elt kérések (hibás
# kérések), ill. a leggyakrabban lekérdezett objektumok számára
# fenntartott hely. Ökölszabály: osszd el a Squid számára fenntartott
# memóriarészt 3-mal. Ld. még 5.2.
cache_mem 10 MB
# lehetőleg a Squid objektumait külön partícióra tegyük (pl. /var/cache)
cache_dir /var/cache 1024 16 256
# hozzáférés konfiguráció
acl mycustomer src 192.168.0.0/255.255.0.0
http_access allow mycustomer
http_access deny all
icp_access allow mycustomer
icp_access deny all
# Squid-et futtató felhasználó (könyvtár jogosultságokra figyelni!)
cache_effective_user nobody
cache_effective_group nobody
# SNMP hozzáférés beállítása
snmp_access allow public localhost
snmp_access deny all
A többi beállítás változtatása az első nekifutásra teljesen felesleges. Ha
már otthonosan érezzük magunkat a szoftver konfigurálásában, csak akkor
veselkedjünk neki a többi opciónak is.
Alapkonfiguráció és böngészők
automatikuskonfigurálása
Ebben az esetben valójában nem a Squid-et, hanem
a böngészők konfigurálását elvégző PAC szkriptet (Proxy Automatic Configuration
[9]) kell elkészíteni, majd a szkriptet egy megfelelő web kiszolgálóra kell
telepíteni, amely ezt az állományt 'application/xns-proxy-autoconfig' típusként
jelöli meg az állomány letöltésekor. Az automatikus konfigurációnak két lényeges
előnye van a böngészők manuális konfigurálásával szemben:
- ha változik a konfiguráció, akkor azt csak egy helyen kell megváltoztatni,
és a böngészők a következő indításkor már az új konfigurációval fognak
működni.
- a konfigurációs szkriptet meg lehet úgy írni, hogy a cache
elérhetetlensége esetén (pl. karbantartás idején) a böngésző közvetlenül
próbálja meg elérni a web-es információkat, míg manuális konfiguráció esetén
ez megoldhatatlan probléma.
Továbbá egy jól megírt PAC szkripttel a
cache-ünket is tehermentesíthetjük a felesleges forgalomtól. Egy egyszerű PAC
szkript a következőképpen néz ki:
function FindProxyForURL(url, host)
{// ha nincs teljes szervernév megadva, vagy pedig a saját
// régiónkban (mydomain.hu) lévő szervert kérdezünk le,
// akkor közvetlen a hozzáférés if (isPlainHostName(host)
|| dnsDomainIs(host, "mydomain.hu") || return "DIRECT";
// ha a kiszolgálónév nem feloldható DNS oldalról,
// akkor is közvetlenül próbálkozunk. Ennek két oka van:
// - egyrészt a cache-t nem terheljük egyébként sem feloldható nevekkel
// - másrészt a felhasználó a saját böngészője hibaüzenetét látja,
// így még csak véletlenül sem hibáztatják a cache üzemeltetőjét
// Optimális működés esetén persze a böngészők is ugyanazt a DNS
// szervert használják, mint a cache (így a cache munkáját is
// megkönnyítik, hiszen mire a kérés oda eljut, a helyi DNS
// szerver már tartalmazza a kívánt információkat).
if (!isResolvable(host))
return "DIRECT";
// ha az URL tartalmaz kerdőjelet, akkor is közvetlenül
// próbálkozunk, hiszen az ilyen típusú kérések általában nem
// is cache-elhetők
if (url.indexOf("?") != -1)
return "DIRECT";
// csak akkor használunk cache-t, ha HTTP, FTP vagy Gopher
// protokollokról van szó, hiszen csak ezeket képes cache-elni
// a Squid (a cache.mydomain.hu helyére természetesen a saját
// cache-ünk nevét kell beírni)
if (url.substring(0, 5) == "http:" ||
url.substring(0, 4) == "ftp:"||
url.substring(0, 7) == "gopher:")
return "PROXY cache.mydomain.hu:3128; DIRECT";
}
Apache web szerver esetén a típus beállítást a következőképpen
tehetjük meg, feltéve, hogy a PAC szkriptet ".pac" kiterjesztéssel helyezzük el
a Web szerver könyvtárstruktúrájában:
AddType application/x-ns-proxy-autoconfig .pac
Alapkonfiguráció + Transzparens konfigurálás
Amennyiben cache-ünket
transzparens módban szeretnénk futtatni, akkor az alapkonfigurációhoz a
következő beállításokat érdemes hozzátenni:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Természetesen előzőleg a kernelt megfelelően kell konfigurálni, és a
Squid-hez való átirányítást végző ipchains szabályokat is érvényre kell juttatni
(ld. 3.2).