Kapitola 29. Proxy server Squid

Obsah

29.1. Informace o proxy-cache
29.2. Systémové požadavky
29.3. Spuštění squida
29.4. Konfigurační soubor /etc/squid/squid.conf
29.5. Konfigurace transparentní proxy
29.6. cachemgr.cgi
29.7. squidGuard
29.8. Vytvoření protokolů programem Calamaris
29.9. Další informace o Squidu

Squid je na linuxových/unixových platformách nejrozšířenější proxy cache. Zde si popíšeme, jak ho konfigurovat, řekneme si, jaké má systémové požadavky a mnoho dalšího. Stranou nezůstane ani konfigurace transparentní proxy, zpracování statistik programy calamaris a cachemgr a filtrování internetových stránek pomocí squidGuard.

Squid funguje jako burzián. Přijímá požadavky od klientů (v tomto případě internetových prohlížečů) a ty pak předává dál odpovídajícím serverům poskytovatele. Když se požadovaný objekt vrátí, nechá si pro sebe jednu kopii, kterou uloží v diskové cache a druhou doručí zpět klientovi. Výhoda se projeví v okamžiku, kdy bude druhý uživatel požadovat stejný objekt — v tom případě není třeba stránku stahovat znovu, ale nahraje z cache. Výsledkem je nepoměrně rychlejší vyřízení požadavku a navíc dochází k úspoře kapacity linky.

Squid nabízí velké spektrum funkcí, např. hierarchické dělení proxy serveru, které rozkládá zátěž systému, vytváření pravidel pro přístup klientů, správu přístupových práv k jednotlivým stránkám a také statistiky nejčastěji používaných internetových stránek, chování uživatelů při surfování apod. Squid není generickou proxy. Standardně pouze zprostředkovává HTTP spojení. Kromě toho podporuje protokoly FTP, Gopher, SSL a WAIS, ale žádné další internetové protokoly typu Real Audio, News nebo videokonference. UDP protokol používá pouze pro podporu komunikace mezi různými cache. Z tohoto důvodu nejsou podporovány ani žádné další programy postavené na tomto protokolu.


29.1. Informace o proxy-cache

Proxy cache Squid lze využít různými způsoby. Spolu s firewallem může zlepšit bezpečnost. Lze použít více proxy společně. Umí také určit, jaké objekty se vyplatí cachovat a na jak dlouho.

29.1.1. Squid a bezpečnost

Squid můžete provozovat spolu s firewallem a zabezpečit vnitřní síť před vnější sítí pomocí proxy. Firewall odmítne všechny přístupy ke službám z vnějšku kromě přístupu ke Squid. Všechna webová spojení musí být zprostředkována proxy.

Pokud konfigurace firewallu obsahuje DMZ, měla by proxy pracovat v této zóně. V takovém případě je důležité, aby všechny počítače v DMZ zasílaly logy počítačům ve vnitřní síti. Možnost implementace tzv. transparentní proxy je popsána v části 29.5 – „Konfigurace transparentní proxy“.

29.1.2. Vícenásobná cache

Můžete nakonfigurovat více cache, které si vyměňují objekty. Snižuje se tak zátěž systému a zvyšuje pravděpodobnost nalezení objektu již v lokální síti. Můžete také vytvořit hierarchicky uspořádané cache, takže je cache schopná předat požadavek na objekt jiné cache na stejné úrovni nebo cache nadřazené – která pak vyřídí požadavek prostřednictvím jiné cache nebo stáhne objekt přímo ze zdroje.

Volba správné topologie je velice důležitá, protože by nemělo dojít ke zvýšení celkového síťového provozu. U velké sítě je možné nakonfigurovat proxy server pro každou podsíť a tu pak spojit s nadřazenou cache, která je opět napojena na proxy ISP (poskytovatele).

Tato komunikace je řízena prostřednictvím ICP (Internet Cache Protocol), který je vystavěn nad UDP. Výměna dat mezi jednotlivými cache se provádí prostřednictvím HTTP (Hyper Text Transmission Protocol) založeném na TCP.

Aby byl nalezen nejlepší server pro požadované objekty, posílá cache všem proxy stejné hierarchie tzv. ICP dotaz. Ostatní proxy pak odpoví prostřednictvím ICP buď HIT v případě, že objekt našly, nebo MISS v případě, že ho nenašly. V případě nálezu více HITů se proxy rozhodne, ze které cache bude stahovat. Toto rozhodování se provádí na základě rychlosti odpovědi. Když všechny cache ohlásí MISS, pak bude dotaz předán nadřazené cache.

Abyste zabránili vícenásobnému ukládání objektů v různých cache lokální sítě – používají se jiné ICP protokoly, jako je např. CARP Cache Array Routing Protocol nebo HTCP Hyper-Text Cache Protocol. Čím více objektů je v síti udržováno, tím větší je pravděpodobnost nálezu požadovaného.

29.1.3. Přechovávání objektů z Internetu

Ne všechny objekty v síti jsou statické. Existuje velké množství dynamicky generovaných CGI stránek, počítadel a SSL dokumentů, které nejsou ukládány v cache, protože jsou měněny při každém přístupu.

A u všech ostatních objektů je třeba zvážit, jak dlouho by měly zůstat v cache. Kvůli tomu mají objekty v cache přiřazeny různé stavy. V hlavičkách pak obsahují informace jako Last modified (datum poslední změny) nebo Expires (datum expirace), případně informaci o zákazu cachování objektu. Objekty v cache jsou odstraňovány převážně kvůli nedostatku místa, kde se používají algoritmy jako je LRU (Least Recently Used). Ten v podstatě maže nejdéle nepoužité objekty.