Proxy servery, Squid

Jakub Starek,xstarek@fi.muni.cz


Obsah


Kešovaní Internet objektů


Kešovaní Internet objektů je způsob na uložení Internet objektů na serveru blíž k dotazující straně než je server zdroje. Internetové prohlížeče mohou použít lokální kešování jako HTTP proxy server pro urychlení nebo šetření šířky pásma. Proxy servery mohou být použity také pro filtrování obsahu, sledování přístupu nebo zlepšení soukromí.

.


Squid



Squid je proxy kešovací server pro síťové klienty. Podporuje FTP, gopher a HTTP datové objekty. Squid obsluhuje všechny dotazy v jednom neblokujícím procesu.
Squid uchovává metadata nakešované v RAM, kešuje DNS dotazy, podporuje neblokující DNS a kešuje také negativní odpovědi na dotazy.
Squid podporuje SSL a logování dotazů.
Squid se zkládá z hlavního programu: Squid a programu na vyřizování DNS dotazů: dnsserver. Další volitelné programy jsou pro zlepšení přístupu, správní a klientské nástroje. Při startu Squid spustí určené množství procesů dnsserveru. Squid je podporován následujícími Unix systémy: Linux, FreeBSD, NetBSD, OpenBSD, BSDI, Mac OS/X, OSF/Digital Unix/Tru64, IRIX, SunOS/Solaris ,NeXTStep, SCO Unix, AIX, HP-UX, OS/2
Squid podporuje SSL (při spouštění kompilace přidáme --enable-ssl). Pokud internetový prohlížeč přistupuje k https URL, obyčejně prohlížeč naváže SSL spojení přímo k zdrojovému serveru nebo pomocí tunelu přez Squid s dotazem na metodu CONNECT. Squid je Free Software pod licencí GNU General Public Licence.


.


Squid Quick Guide


Squid Quick Guide aneb "co mám udělat, aby to jelo?":

rozbalení a kompilace je následující:
% tar xzf squid-2.0.RELEASE-src.tar.gz
% cd squid-2.0.RELEASE
% ./configure
% make


instalace:

% make install

po instalaci je potřeba nastavit základní parametry v squid.conf (/usr/local/squid/etc/squid.conf). Minimálně je potřeba nastavit: HTTP port, port ICP odpovědí, příchozí a odchozí dotazy, firewall a časové limity. Vzorový defaultní squid.conf je v adresáři squid/etc/ a přinejmenším je potřeba nastavit http_access pro povolení přístupu klientů. K ověření správné sintaxe slouží parametr -k parse:

% /usr/local/squid/sbin/squid -k parse

po konfiguraci je potřeba vytvořit swapový adresář:

% /usr/local/squid/sbin/squid -z

práva adresářů:

Squid musí mít práva přístupu k adresářum /usr/local/squid/var/logs a kešovacímu (cache_dir) adresáři /var/spool/squid.

Spuštění Squidu:

% /usr/local/squid/sbin/squid

pokud přidáme parametr -NCd1 uvidíme i chybový výstup.
Po spuštění vyskoušíme jestli Squid pracuje:

% squid -k check

a skontrolujem návratovou hodnotu.


.


Konfigurace


Defaultně běží Squid pod uživatelem squid a skupinou squid(cache_effective_user, cache_effective_group), je potřeba nastavit práva adresářů /usr/local/squid/var/logs a /var/spool/squid tak, aby k nim měl přístup tento uživatel. Dále je potřeba nastavit velikost kešovací paměti cache_mem.
Squid podporuje ACL a je dobré je použít pro definování práv přístupu(http_access). Access listy se zkládají z akce, allow nebo deny a více ACL elemenů, mezi kterými je logicke AND. Existuje mnoho ACL elementů a jsou podrobně vyjmenovány na stránkách Squid.org. Nejduležitější jsou: scr - IP adresa klienta, dst - IP adresa serveru, srcdomain - jméno domény klienta, dstdomain - jmeno domény serveru a port - číslo portu serveru. Access listy poté mohou obsahovat následující akce: http_access - přístup HTTP klientům přístup na port HTTP, icp_access - přístup jiných squidů k naší keši, no_cache - odpověď nebude kešována a další.
Jednotlivé acces listy se píší pod sebe, přičemž se chápe, jako by mezi nimi bylo logicé OR. Pravidla se procházejí od zhora a stačí jedno odpovídající pravidlo, aby se použilo a už se dále neprochází. Příklad povolující vybranou podsíť:


acl mojiklienti src 10.0.50.0/24
http_access allow mojiklienti


Squid zapisuje do 4 logu, jsou to:

/usr/local/squid/logs/access.log
/usr/local/squid/logs/cache.log
/usr/local/squid/logs/store.log
/usr/local/squid/cache/log

První 3 je mozno rotovat (/usr/local/squid/bin/squid -k rotate), čtvrtý (log) slouží k uložení informací o obsahu keše na disku. Soubor access.log zaznamenává dotazy na naši proxy, jde odtud zjistit kolik lidí používá naši proxy, kolikrát se každý dotázala a které stránky jsou nejpopulárnějš.
Soubor cache.log obsahuje chybové a jiné zprávy o Squidu. Soubor store.log zaznamenává ktéré objekty byly uloženy na disk. Ke zpracování acces.log existuje několik nástrojů:
převzato z Squid Users Guide:
Original NLANR scripts (also contains a list of scripts like this)
usage:
access-extract.pl < access.log > summary
access-extract-urls.pl < access.log >> summary
access-summary.pl < summary > report.txt
The file "report.txt" then contains all the relevant information. Here is a version that creates html output that also works with the netscape cache logs.
Iain Lea's graphical version of the nlanr scripts
Calamaris
usage: calamaris.pl < access.log > stats.html
squidclients
usage: squidclients -H < access.log > clients.html
squidtimes
usage: squidtimes < access.log > times.html
pwebstats
usage: see webpage
PY_Squid_Stats
usage: see webpage of PY_Squid_Stats

.


Odkazy

. Squid
. Squid Definitive Guide
. Squid FAQ
Root.cz: kese-proxy-servery