Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

SQUID - Kešující proxy server

Squid je kešující proxy-server pro HTTP a FTP. ("kešující" - fuj, to je slovo! Nojo, ale usoudil jsem, že "cacheující" je ještě ošklivější a "caching" zní ve větě divně...) Co to znamená? Proxy-server je zařízení, které pro klienty zprostředkovává jiné zdroje.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Místo toho, aby se klient spojil se serverem, na kterém se zdroj nachází, spojí se s proxy-serverem, a ten požadovanou informaci získá (pošle) z (na) originální zdroj. Kešující proxy-server si informace přes něj procházející může uložit, a jsou-li po něm požadovány znovu, poskytne svou lokální kopii.

Proxy-server samotný většinou slouží jako relativně bezpečné spojení dvou sítí, které mezi nimi umožňuje jen přesně definovanou komunikaci. Můžete například povolit HTTP/FTP přístup jen vybrané skupině lidí nebo počítačů k vybraným zdrojům. Počítače nemusí být schopné samy komunikovat s druhou sítí. Přínosem proxy-serveru je především možnost oddělení sítí a umožnění jen vybrané komunikace.

S kešujícím proxy-serverem navíc můžete výrazně ušetřit provoz, který mezi sítěmi vzniká při opakovaném požadavku na stejný dokument. Velkým problémem kešování WWW je možná ztráta aktuálnosti poskytovaných dat – v keši je uložena starší verze dokumentu než na původním serveru. Při konfiguraci musíme najít kompromis mezi aktuálností dat a úsporou datového provozu.

Typicky squid použijeme k připojení vlastní sítě k Internetu. Squid je však velmi výkonný, může pracovat s obrovskou zátěží a je často používán pro optimalizaci provozu na velkých páteřních sítích. Navíc se se squidem dají dělat různé psí kusy jako třeba odfiltrování bannerů…

Squid má GNU licenci, běhá na spoustě různých UNIXů a je součástí mnoha linuxových distribucí. Homepage je tady: www.squid-cache.org

Konfigurujeme squid:

Hlavním konfiguračním souborem je squid.conf, většinou umístěný v adresáři /etc/squid, nebo /usr/local/squid/etc. Na první pohled potěší množství kvalitních komentářů v defaultním konfiguračním souboru (má bratru 90kB!). Každý řádek je pečlivě popsán. Vše je pro názornost nastaveno na víceméně rozumné defaultní hodnoty a zakomentováno. (Chceme-li nějakou hodnotu změnit, je nutné řádek odkomentovat.)

Základní nastavení:

Jako jiní démoni, pokud je squid spuštěn s rootovými právy, snaží se jich co nejrychleji zbavit. Defaultně běží pod uživatelem squid a skupinou squid (viz cache_effective_user a cache_effective_group). Balíčkovací nástroje jako RPM se o jejich existenci postarají samy. Důležité je, že tento uživatel musí mít dostatečná práva k adresáři s keší.

Než si squid poprvé vyzkoušíme, musíme nastavit místo, kam se bude ukládat keš. Slouží k tomu klauzule cache_dir a defaultně bude nejspíš nastavena na /var/spool/squid. Další parametry pak určují maximální velikost keše v MB a počet podadresářů (dvě úrovně), které si squid v keši vytvoří. (Squid ukládá každý kešovaný objekt do zvláštního souboru. Těch můžou být u větších keší třeba desítky milionů a není efektivní je mít v jednom adresáři…) Pro zkoušku můžeme snížit počty podadresářů, aby jejich vytváření zbytečně nezabralo moc dlouho. Keš se poprvé inicializuje spuštěním  squid -z

Pár důležitých věcí, které byste mohli chtít změnit před prvním spuštěním:


http_port (číslo portu, kam se připojují klienti),


cache_mem (velikost keše v paměti – na režii se použije ještě nejmíň jednou tolik – je blbost nastavit tolik, aby systém swapoval, to už si na disk může squid hrábnout sám… )

O něco složitější je nastavit, kdo smí a kdo nesmí proxy využívat…

ACLs

Squid má poměrně dobře propracovaný systém ACL (Access Control List). I když omezení přístupu k proxy je asi nejdůležitější, k čemu se ACLs používají, uplatní se ve squidu i na několika jiných místech.

ACL třídy se definují pomocí řádek začínajících acl

a požadavky do jednotlivých tříd můžeme řadit podle opravdu mnoha různých parametrů: IP, port, čas, cílová IP, cílová URL, vlastní autentizace a mnoho dalších. ACL operátory pak, na základě tříd, ve kterých požadavek je, určují, co s ním bude dál.

Použití ACL si ukážeme na jednoduchém příkladě. POZOR!, tady v konfiguračním souboru záleží na pořadí řádek! K řízení HTTP přístupu k proxy je používán ACL operátor http_access. Standardně v konfiguračním souboru najdeme asi toto:

http_access allow manager localhost
http_access deny manager
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
# And finally deny all other access to this proxy
http_access allow localhost
http_access deny all

A tak squid, když musí rozhodnout o tom, který požadavek od klienta pustit a který ne, vezme první z těchto řádků.

Vidí, že pokud požadavek spadá do ACL třídy manager A zároveň do třídy localhost, má jej povolit. Tak zkontroluje, zda požadavek do těchto tříd patří. Pokud ano, je požadavek povolen a tím vyhodnocování končí. Pokud ne, přejde se k dalšímu řádku.

Ten říká, že vše, co patří do třídy manager, se má zakázat. Takže spolu s prvním řádkem to znamená: „Pokud požadavek patří do třídy manager, povol jej jen tehdy, pokud zároveň patří do localhost“. Podíváme se na definici těchto tříd:

acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255

Třída manager jsou požadavky, které používají speciální squidův protokol a používají se jen pro administrativní účely (viz dále). Třída localhost jsou požadavky z IP adresy 127.0.0.1, tedy z našeho loopbacku. Takže výsledek: „protokolem cache_object jen z lokálního počítače“

Další řádek, http_access deny !Safe_ports, je zajímavý dvěma věcmi: Použití vykřičníku jako logického NOT, a pak způsobem, jakým je třída Safe_ports nadefinována:

acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443 563     # https, snews
...

Vidíme, že třídu můžeme definovat několika acl-řádky. Platí mezi nimi logické OR. Takže řádek http_access deny !Safe_ports znamená „zakaž vše, co nejde na porty 80, 21, 443, 563, …“

No a pak se ještě zakáže CONNECT na non-ssl porty a už je tu místo, kam umístit patřičné povolení pro koho chceme. Dalším řádkem se povolí vše z loopbacku (třída localhost) a pak už se všechno ostatní šmahem zakáže (třída all je definována jako acl all src 0.0.0.0/0.0.0.0, tedy „odkudkoli“).

Takže teď, když do toho trochu vidíme, můžeme přidat například povolení pro naši lokální síť. Řekněme, že je to třeba 192.168.0.x.

Na nějaké hezké místo mezi acl vsuneme řádek:

acl moje_sit src 192.168.0.0/255.255.255.0

a nejlépe na vyznačené místo řádek:

http_access allow moje_sit
Obsáhlý popis squidových ACL je tady

ready, steady, go…

Tak… můžeme squida spustit. Systémy jako RedHat si na squida vytvoří skripty samy, takže stačí něco jako service squid start, pro automatický start chkconfig squid on… znáte to. Ostatní prostě spustí binárku (většinou  /usr/sbin/squid)

Pokud je vše v pořádku, měl by fungovat telnet 127.0.0.1 3128 (nebo kolik máte ten port nastavený). 2* enter by měl telnet ukončit s výpisem nějaké chybové hlášky v HTML…

Nastavte si v prohlížeči adresu a port vašeho serveru a zkuste, jak funguje. Odpověď na problémy hledejte v logu.

Logy jdou standardně do /var/log/squid. cache.log obsahuje informace o běhu programu, store.log informace o diskové keši, a access.log jednotlivé požadavky od klientů.

davame_internetu_obsah
       

Pro potřeby debugování se dá poměrně přesně nastavit, co všechno se má logovat. Slouží k tomu v konfiguráku příkaz debug_options. Ten má dva parametry, oblast, pro kterou chceme úroveň nastavit (viz doc/debug-sections.txt), a požadovanou úroveň.

Příště si ukážeme, jak nastavit transparentní proxy, jak použít redirector k odfiltrování bannerů, jak vyladit squidův refresh-algorithm podle svých potřeb a povíme si něco o hierarchickém kešování.

Školení: Linux – Firemní server

Na třídenním školení se naučíte nainstalovat a spravovat kompletní linuxový server do Vaší firmy se všemi základními službami, které potřebujete pro provoz Vaší sítě, firemních emailů a webových stránek.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 2,85

Přehled názorů

tip
root 1. 10. 2002 07:27
Nový
└ 
Re: tip
Jirka Bohac 1. 10. 2002 10:13
Nový
 
└ 
Re: tip
PepaF 1. 10. 2002 12:57
Nový
 
 
└ 
Re: tip / preklady
Gilhad 10. 10. 2002 13:49
Nový
Uzitecny clanek
Petr Buzrla 1. 10. 2002 07:58
Nový
└ 
Re: Uzitecny clanek
Honza 9. 11. 2008 03:06
Nový
antivir proxy
tajkes 1. 10. 2002 09:03
Nový
├ 
Re: antivir proxy
Jirka Bohac 1. 10. 2002 10:19
Nový
└ 
Re: antivir proxy
cdave 2. 10. 2002 00:43
Nový
Nepritel Flashe
TommyCZ 1. 10. 2002 10:43
Nový
└ 
Re: Nepritel Flashe
Jirka Bohac 1. 10. 2002 11:10
Nový
 
└ 
Re: Nepritel Flashe
TommyCZ 1. 10. 2002 12:37
Nový
 
 
└ 
Re: Nepritel Flashe
Martin Dvorak 2. 10. 2002 19:13
Nový
 
 
 
└ 
Re: Nepritel Flashe
Frantisek 22. 6. 2007 14:32
Nový
dotazy kdyz jsem odpojen
libor 1. 10. 2002 12:23
Nový
├ 
Re: dotazy kdyz jsem odpojen
Jirka Bohac 1. 10. 2002 12:59
Nový
│
├ 
Re: dotazy kdyz jsem odpojen
Jirka Bohac 1. 10. 2002 13:34
Nový
│
└ 
Re: dotazy kdyz jsem odpojen -diky
libor 2. 10. 2002 08:52
Nový
└ 
Re: dotazy kdyz jsem odpojen
VLK 1. 10. 2002 13:12
Nový
 
└ 
Re: dotazy kdyz jsem odpojen
Milos Prudek 1. 10. 2002 15:01
Nový
Ztrata aktualnosti dat
PepaF 1. 10. 2002 12:47
Nový
Bannery
Milan Plzik 1. 10. 2002 14:55
Nový
kesujici
ted 1. 10. 2002 15:31
Nový
└ 
Re: kesujici
Jirka Bohac 1. 10. 2002 16:18
Nový
otvoreny port
jano 2. 10. 2002 09:19
Nový
└ 
Re: otvoreny port
Jirka Bohac 2. 10. 2002 11:08
Nový
 
└ 
Re: otvoreny port
tajke 3. 10. 2002 12:31
Nový
Squid a FTP
Daryl 2. 10. 2002 10:53
Nový
└ 
Re: Squid a FTP
Jirka Bohac 2. 10. 2002 12:17
Nový
 
├ 
Re: Squid a FTP
Jirka Kosina 2. 10. 2002 15:06
Nový
 
└ 
Re: Squid a FTP
anonymní uživatel 2. 10. 2002 15:13
Nový
 
 
└ 
Re: Squid a FTP
Jirka Bohac 2. 10. 2002 19:01
Nový
Squid naruby
David Voříšek 2. 10. 2002 16:26
Nový
└ 
Re: Squid naruby
Jirka Bohac 2. 10. 2002 19:21
Nový
 
└ 
Re: Squid naruby
pletiplot 11. 9. 2007 16:41
Nový
Squid za Squidem
anonymní uživatel 2. 10. 2002 17:53
Nový
└ 
Re: Squid za Squidem
Jirka Bohac 2. 10. 2002 19:33
Nový
 
└ 
Re: Squid za Squidem
anonymní uživatel 3. 10. 2002 13:18
Nový
 
 
└ 
Re: Squid za Squidem
Jirka Bohac 3. 10. 2002 13:59
Nový
 
 
 
└ 
Re: Squid za Squidem
anonymní uživatel 9. 10. 2002 12:28
Nový
 
 
 
 
└ 
Re: Squid za Squidem
anonymní uživatel 9. 10. 2002 12:57
Nový
Re: Ztrata aktualnosti dat
Leo 2. 10. 2002 22:58
Nový
└ 
Re: Ztrata aktualnosti dat
Jirka Bohac 2. 10. 2002 23:51
Nový
chyby v objektech v odpovedich SQUIDu
Dalibor K. 5. 10. 2002 23:33
Nový
Par nepresnosti v clanku
V.T. Sem 12. 12. 2002 18:00
Nový
SOCKS a SQUID
Bobhy 12. 9. 2003 08:56
Nový
└ 
U Gaimu to jde přes http
Luděk 11. 2. 2005 21:31
Nový
Vypadky internetu
Pavel Vališ 19. 10. 2005 10:17
Nový
Active directory?
Swop 24. 7. 2007 10:52
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem