Squid - část II

V předchozí části jsme probírali acl třídy. V této části budeme pokračovat s acl operátory.

13.7.2004 08:00 | Petr Houštěk | přečteno 21300×

Acl operátory

Z acl operátorů již známe http_access. Jsou zde ale i jiné operátory. Jejich syntax je

http_access allow|deny [!]aclname1 [[!]aclname2 ... ]

(Syntax je stejný pro všechny acl operátory, nejenom pro http_access). V jednom z příkladů v minulé části jsme blokovali všechny přístupy z jiných IP mimo myNet. Stejného efektu dosáhneme při použití více acl tříd v jednom operátoru.

acl myNet src 192.168.0.0/255.255.0.0
acl all src 0.0.0.0/0.0.0.0

http_access deny all !myNet
# http_access deny all

Pokud je IP ze sítě definované v myNet, výsledek pak je 1 AND (NOT 1) = 1 AND 0 = 0, přístup tedy bude povolen. Pokud požadavek přichází z okolí (IP není definována v myNet), výsledek zpracování bude 1 AND (NOT 0) = 1 AND 1 = 1, dojde k odmítnutí přístupu.

Ostatní acl operátory jsou icp_access, no_cache, ident_lookup_access, miss_access, always_direct (never_direct), snmp_access, delay_access, broken_posts.

No_cache

Tento operátor zabraňuje ukládání označených stránek do cache. V implicitním konfiguračním souboru jsou příkazy, které v požadavku vyhledávají řetězec cgi-bin a všechny tyto požadavky neukládají do cache (v původním konfiguračním souboru jsou zakomentovány, takže je musíte odkomentovat).

acl QUERY urlpath_regex cgi-bin \\?
no_cache deny QUERY

Broken_posts

Některé servery přesně nevyhovují HTTP specifikaci. Ke komunikaci s takovými servery (které můžeme snadno identifikovat pomocí acl třídy url_regex) by se měl použít acl operátor broken_posts.

acl broken_server url_regex http://broken-server-list.com
broken_posts allow broken_server

Delay classes

Delay classes se používají ke kontrole a omezení množství přenesených dat. Toho je dosáhnuto použitím tzv. delay_pools. Přenosy jsou roztříděny do segmentů a spojeny s určitým množstvím dat. Používají se 3 třídy delay classes.

Příklady použití ACL a FAQ

Nakonec zde uvádím některé příklady použití acl a běžné problémy.

Chyby v logice

Acl příkazy nelze kombinovat s logickými operátory AND a OR. Tyto logické operace jsou již zabudované v schématu vyhodnocování acl. Základní pravidla jsou.

Například konfigurace acl jako je tato nemůže fungovat podle předpokladů.

acl ME src 192.168.1.1
acl YOU src 192.168.1.2
http_access allow ME YOU

V tomto příkladu operátor http_access povolí přístup pouze pokud se acl ME a acl YOU shodují, což rozhodně není požadované chování. Fungující konfigurace může vypadat jako tato:

acl ME src 192.168.1.1
acl YOU src 192.168.1.2
http_access allow ME
http_access allow YOU

Nebo jednoduššeji

acl US 192.168.1.1 192.168.1.2
http_access allow US

Acl debugging

Pokud se vám nedaří najít chybu v konfiguraci acl, můžete zapnout debugging pomocí příkazu debug_options. Pro zahájení debuggování přidejte následující rádek do squid.conf.

debug_options ALL,1 33,2

Tento příkaz zapne debugging pro sekci 33 (acl) na úroveň 2. Ve vašem cache.log se pak pro každý požadavek připisují podrobnější údaje, jakými acl požadavek prošel, jestli byl povolen atd.

Úprava chybových hlášení

V určitých případech potřebujete upravit chybová hlášení. Také můžete vytvářet úplně nová chybová hlášení.

Chybová hlášení jsou v standardní instalaci uložena v adresáři /usr/local/squid/etc/errors, ale v distribučních verzích mohou být jinde. V Debianu jsou v adresáři /usr/lib/squid/errors/language. Umístění tohoto adresáře se nastavuje ve squid.conf pomocí volby error_directory.

Například chcete dát vědět, proč je přístup na stránky s pornografickým obsahem zakázán. Do adresáře, kde jsou uložena chybová hlášení vytvořte soubor ERR_PORNO, který obsahuje něco jako:

<p>
Přístup k URL %U byl odepřen, kvůli jeho pornografickému obsahu. Pokud si
myslíte, že k tomuto zařazení došlo omylem, kontaktujte správce.
</p>

Do squid.conf pak přidejte tuto řádku.

acl porn url_regex "/usr/local/squid/etc/porno.txt"
deny_info ERR_PORNO porn
http_access deny porn

Nyní, když uživatel zažádá o URL, které vyhovuje regulárním výrazům uvedeným v /usr/local/squid/etc/porno.txt, objeví se mu příslušné chybové hlášení. Tag %U je v hlášení nahrazen požadovaným URL. Další tagy a jejich využití lze najít zde.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=261