Proxy server je špeciálny typ servera, ktorý sa umiestňuje medzi klienta a servery, s ktorými komunikuje. Proxy server sa tvári voči klientovi ako server a voči serveru ako klient. Výhodou je, že proxy server pozná požiadavku klienta a vie mu doručiť odpoveď, aj keď klient samotný nemôže alebo nevie priamo komunikovať so vzdialeným serverom. Proxy server disponuje cache pamäťou, v ktorej si ukladá odpovede serverov na požiadavky klienta. Ak proxy server nájde požadovanú odpoveď v cache, vie odpovedať klientovi rýchlejšie, ako keby musel odpoveď opäť získať. Čo má za následok rýchlejšie získanie požadovanej informácie a taktiež zmenšenie provozu na sieti. Veľkosť cache je však obmedzená. Aby sa do cache mohli ukladať ďalšie údaje, musí sa z nej niečo odstrániť. Na to existuje niekoľko algoritmov, napr. odstránie najmenej používaných údajov.
HTTP hlavičky dávajú veľa možností regulovať to, ako bude cache zachádzať objektami. HTTP hlavičky sú posielané serverom pred samotnou HTML stránkou. Typická hlavička odpovede HTTP 1.1 vyzerá asi takto:
HTTP/1.1 200 OK Date: Fri, 30 Oct 1998 13:19:41 GMT Server: Apache/1.3.3 (Unix) Cache-Control: max-age=3600, must-revalidate Expires: Fri, 30 Oct 1998 14:19:41 GMT Last-Modified: Mon, 29 Jun 1998 02:28:12 GMT ETag: "3e86-410-3596fbbc" Content-Length: 1040 Content-Type: text/html
Možnosti využitia proxy servera si predstavíme na populárnom a kvalitnom open-source proxy serveri pre cachovanie WWW stránok. Jeho meno je Squid (http://www.squid-cache.org). Pred inštaláciou Squida si treba uvedomiť, že prevažná časť činnosti proxy servera spočíva v uchovávaní objektov v pamäti a na disku. Čím viac budete mať pamäte, tým rýchlejší bude Váš proxy server. Ak sa údaje budú uchovávať na disku, rýchlosť diskov rapídne ovplyvní výkon proxy servera.
Z adresy www.squid-cache.org si stiahneme stabilnú 2.5 verziu. Aktuálne squid-2.5STABLE9. Rozbalíme a standardne zkompilujeme
% ./configure --prefix=/usr/local/squid % make all % make install
Ešte predtým ako sa pustíme do samotnej konfigurácie, je dobré pridať do /etc/passwd usera squid
(useradd -d /usr/local/squid -s /bin/false squid), ak to za nás automaticky
neurobil baličkovací nástroj. Ďalšou dôležitou vecou je, aby uživateľ squid mal prístup do adresára, kde sa nachádza cache.
Hlavným konfiguračným súborom je squid.conf, väčšinou umiestnený v adresári /etc/squid, alebo /usr/local/squid/etc.
Určite oceníte veľa dobrých komentárov, ktoré však prispievajú k úctihodnej veľkosti konfiguračného súboru.
Všetky voľby sú nastavené na rozumné defaultné hodnoty a zakomentované. Pri zmene netreba zabúdat riadok odkomentovať.
Po nainštalovaní Squida treba vytvoriť adresárovú štruktúru, v ktorej Squid uchováva obsah svojej cache.
Niektoré distribúcie vytvoria túto štruktúru automaticky pri inštalácii alebo prvom spustení. Ak to však nie je váš prípad
alebo ste Squid kompilovali zo zdrojových textov, musíte to spraviť ručne. Jedná sa o jednoduchý príkaz:
/usr/local/squid/sbin/squid -z
Teraz si uvedieme ďalšie užitočné parametre:
Na kontrolu prístupu slúžia v nastavení Squida zoznamy na kontrolu prístupu (ACL - Access Control Lists).
Každý ACL sa skladá najmenej zo štyroch častí:
acl meno typ hodnota
acl meno typ "súbor"
O autentizácii sme sa už zmienili pri direktíve auth_param a teraz to trošku rozvedieme.
Squid podporuje autentizáciu cez LDAP, PAM, SMB, NCSA, MSNT, SASL..., takže je len na nás, čo si vyberieme.
Ďalej si musíme vytvoriť pomocou acl skupinu uživatelov, ktorá ma byť autentizovaná, alebo
parametrom REQUIRED vynútime autentizáciu pre každého. Napríklad takto:
acl password proxy_auth REQUIRED
http_access allow password
Squid využíva prevažne tieto tri logovacie súbory:
Pre používanie proxy servera je nevyhnutné si v prehliadači nastaviť adresu a port, na ktorom proxy server počúva.
Môžeme tomu však zabrániť používaním transparentného proxy servera, čo v preklade znamená asi toľko, že všetky HTTP požiadavky smerujúce
von zo siete budú z portu 80 presmerované na port, na ktorom beží náš proxy server.
iptables -t nat -A PREROUTING -p tcp --dport 80 -s vnitrni_sit -i ! eth0 -j REDIRECT --to-port 3128
Ak by sme chceli squid používať ako transparentný, musíme pridať(pozmeniť) nasledujúce riadky v konfiguračnom súbore.
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Privoxy - je HTTP proxy server, ktorý spravuje cookies,
kontroluje obsah webových stránok, odstraňuje z nich reklamy a rôzne bannery a potlačuje tvorbu vyskakovacích okien.
Junkbusters - ďalší z proxy serverov, ktoré blokujú v HTTP komunikácii
reklamné bannery a neautorizované cookies
SOCKS5 - Socks5 je protokol na realizáciu proxy v transportnej vrstve.
SOCKS proxy servery fungujú pre ľubovoľné služby za predpokladu, že aplikácia podporuje tento typ proxy servera.