Transparentní proxy: Porovnání verzí

Z Milan Kerslager
Přejít na: navigace, hledání
(Rozšíření o Squid 2.6)
m (Konfigurace programu Squid: typo)
Řádka 7: Řádka 7:
 
Direktiva <CODE>cache_dir</CODE> určuje adresář, kam se budou ukládat dočasné soubory, číslo 100 je maximální velikost cache v MB. Další dvě čísla definují počet adresářů, do kterých se budou soubory ukládat a není je obvykle potřeba měnit. Níže uvedený řádek je implicitní konfigurace, pokud chcete velikost cache větší nebo ji umístit jinam, můžete upravený řádek použít:
 
Direktiva <CODE>cache_dir</CODE> určuje adresář, kam se budou ukládat dočasné soubory, číslo 100 je maximální velikost cache v MB. Další dvě čísla definují počet adresářů, do kterých se budou soubory ukládat a není je obvykle potřeba měnit. Níže uvedený řádek je implicitní konfigurace, pokud chcete velikost cache větší nebo ji umístit jinam, můžete upravený řádek použít:
  
  cache_dir ufs /var/spool/squid 100 16 256
+
cache_dir ufs /var/spool/squid 100 16 256
  
 
Následující řádek slouží k aktivaci chybových zpráv v českém jazyce (adresář upravte, zprávy mohou být ve vašem počítači jinde). Pozor &ndash; adresář musí být platný, jinak Squid nemusí nastartovat (což je samozřejmě chyba):
 
Následující řádek slouží k aktivaci chybových zpráv v českém jazyce (adresář upravte, zprávy mohou být ve vašem počítači jinde). Pozor &ndash; adresář musí být platný, jinak Squid nemusí nastartovat (což je samozřejmě chyba):

Verze z 31. 10. 2007, 00:08

Počítače ve vnitřní síti mohou využívat k surfování maškarádu, jak je uvedeno jinde. Nicméně pokud bude linka do Internetu pomalá, bude lepší ve vnitřní síti zřídit proxy cache, která bude často stahované dokumenty nebo obrázky ukládat na disk a při opakovaném požadavku je velmi rychle poskytne. Zřízení proxy cache spočívá ve spuštění programu Squid a jeho nastavení tak, aby byl ochoten sloužit nejen aplikacím spuštěným na stejném počítači, ale i stanicím ve vnitřní síti.

Konfigurace programu Squid

Program Squid má konfiguraci uloženu v souboru /etc/squid/squid.conf. Obvykle obsahuje nápovědu (komentovaná nastavení). Chcete-li nastavení změnit, ujistěte se, že volba není v konfiguračním programu již použita. Pokud je, musíte příslušný řádek upravit do žádané podoby.

Direktiva cache_dir určuje adresář, kam se budou ukládat dočasné soubory, číslo 100 je maximální velikost cache v MB. Další dvě čísla definují počet adresářů, do kterých se budou soubory ukládat a není je obvykle potřeba měnit. Níže uvedený řádek je implicitní konfigurace, pokud chcete velikost cache větší nebo ji umístit jinam, můžete upravený řádek použít:

cache_dir ufs /var/spool/squid 100 16 256

Následující řádek slouží k aktivaci chybových zpráv v českém jazyce (adresář upravte, zprávy mohou být ve vašem počítači jinde). Pozor – adresář musí být platný, jinak Squid nemusí nastartovat (což je samozřejmě chyba):

error_directory /usr/share/squid/errors/Czech

ACL pravidla pro nasesit definují IP adresy, ze kterých povolíme k cache přístup. První řádek definuje pomocí masky IP adresy ve vnitřní síti a další řádek zahrnuje mezi povolené IP adresy i vnější IP adresu našeho počítače (některé místní programy se mohou místo rozhraní loopback připojovat právě z této adresy, takže je lepší ji do seznamu zahrnout).

acl nasesit src 10.0.0.0/255.255.255.0
acl nasesit src 123.123.123.1

Dále vložte za řádek, na kterém je text: INSERT YOUR OWN RULE(S) následující direktivu:

http_access allow nasesit

Další konfigurace je rozdílná pro Squid do verze 2.6 a pro verze 2.6 a novější:

Squid do verze 2.6

Na začátek konfiguračního souboru /etc/squid/squid.conf přidejte následující parametry, které slouží k nastavení Squidu jako transparentní proxy:

http_port 3128
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
httpd_accel_single_host off

Prvních 6 řádků slouží k zajištění fungování transparentní proxy.

Squid verze 2.6 a novější

Konfigurace je jednodušší. Nalezněte a upravte řádek:

http_port 3128 transparent

Dále je potřeba za definici ACL pravidel ještě přidat (nejlépe k volbě always_direct):

always_direct allow all

Spuštění programu Squid

Program Squid spustíme a zajistíme jeho automatické spuštění při startu systému:

/etc/init.d/squid start
chkconfig squid on

Nastavení NAT

Pokud již proxy zřizujete, je lepší ji rovnou udělat transparentní. Ušetříte si tak práci s obcházením všech stanic a nastavováním parametrů proxy do všech používaných prohlížečů. Princip je založen na použití NAT (Network Address Translation), kterému dáme pokyn, aby všechny datagramy mířící z vnitřní sítě do Internetu na port 80 (tj. k WWW serverům) přesměroval do proxy (tj. na port, kde naslouchá Squid). Zařízení eth0 je vnější rozhraní, 10.0.0.0/24 je vnitřní síť:

iptables -t nat -A PREROUTING -i ! eth0 -p tcp -s 10.0.0.0/24 --dport 80 -j REDIRECT --to 3128

Přesměrování do proxy lze zajistit automaticky i pro programy, které jsou spuštěné na tom samém počítači, pomocí následujících dvou pravidel. První pravidlo stanovuje výjimku pro samotnou proxy (zde je spuštěna pod uživatelem squid (viz volba cache_effective_user v konfiguračním souboru), protože jinak by došlo k zacyklení:

iptables -t nat -A OUTPUT -o eth0 -p tcp --dport 80 -m owner --uid-owner squid -j ACCEPT
iptables -t nat -A OUTPUT -o eth0 -p tcp --dport 80 -j REDIRECT --to 3128

Všechna nastavení iptables lze uložit. Při každém startu je můžeme obnovovat tak, že povolíme start služby iptables. Uložení aktuálních pravidel a povolení jejich obnovení při startu pak zajistíme těmito dvěma příkazy:

/etc/init.d/iptables save
chkconfig iptables on

Nastavení klientů

Na klientovi ve vnitřní síti (Internet Explorer, Mozilla apod.) nastavte, aby nepoužíval žádnou proxy (transparentní funguje sama). V MSIE je to menu Nástroje - Možnosti - Připojení - Nastavení místní sítě - a zde zrušit všechna tři zaškrtnutí (automatická konfigurace MSIE je rozebrána na jiném místě).

Sledování činnosti

Pokud bude transparentní proxy správně fungovat, budou se objevovat záznamy o poskytnutých stránkách v logovacím souboru. Průběžně můžete přibývající údaje sledovat např. pomocí příkazu tail (při použití parametru -f přerušíte vypisování stiskem kombinace kláves CTRL+c). Hlášení programu se ukládají do logovacího souboru /var/log/squid/cache.log.

tail -f /var/log/squid/access.log /var/log/squid/cache.log

Cache na jiném disku

Někdy je vhodné umístit prostor pro odkládání cachovaných souborů na speciální oddíl (partition). Zbytek systému souborů tak nebude zatěžován častými zápisy, nebude tlačeno na riziko vyšší fragmentace zbytku systému souborů a budeme moci nastavit parametry pro vyšší výkon. Pokud se k tomuto kroku rozhodnete, zastavte program Squid, smažte případné nacachované soubory (můžete je do nového oddílu i přesunout), vytvořte oddíl o příslušné velikosti (viz direktiva cache_dir), nastavte na něm příslušná přístupová práva (aby mohl Squid zapisovat) a pak můžete proxy znovu spustit (správný start zkontrolujte v logu):

/etc/init.d/squid stop
rm -rf /var/spool/squid/*
fdisk /dev/hda                           # vytvoření oddílu
mke2fs -b 1024 -N 200000 -m0 /dev/hda3   # vytvoření FS
tune2fs -j -c0 -i0 /dev/hda3             # ext3, bez periodických kontrol
e2label /dev/hda3 Squid                  # nastavení labelu
mount /dev/hda3 /var/spool/squid         # připojení oddílu
chown squid.squid /var/spool/squid       # nastavení práv
/etc/init.d/squid start

Ve výše uvedeném příkladu je použit oddíl, na kterém je vytvořen systém souborů ext3. Podle pozorování je vhodné snížit velikost bloku na 1024 bajtů a na každé 2GB diskového prostoru vytvořit cca 200000 inodů (normálně se jich vytváří více, avšak zbytečně zabírají datový prostor). Pro další zvýšení výkonu můžete při připojování oddílu použít volby noatime,nosuid,noexec,nodev. První vyřadí aktualizaci časů při přístupech do adresářů (zvýšení výkonu), ostatní jsou spíše bezpečnostní opatření. Záznam v souboru /etc/fstab by pak mohl vypadat třeba takto:

LABEL=Squid /var/spool/squid  ext3 noatime,nosuid,noexec,nodev 1 2

Při použití transparentní proxy se někdy můžete setkat s tím, že prohlížeč bude vytrvale zobrazovat starou stránku, i když na serveru bude již novější. V takovém případě může být chyba buď přímo v prohlížeči na stanici, který vytrvale zobrazuje stránku, kterou má uloženu ve své cache na pevném disku. Proto zkuste v prohlížeči nejprve stisknout a podržet klávesu SHIFT a pak klepnout myší na ikonu pro obnovení stránky. Tím byste měli dosáhnout toho, že si prohlížeč vyžádá stránku přímo od serveru znovu (zkuste případně podržet i klávesu CTRL). Pokud to nepomůže, vyprázdněte cache na disku (v Internet Exploreru je to menu Nástroje - Možnosti Internetu - Odstranit dočasné soubory Internetu.

Nežádoucí cachování

Někdy i přes všechnu snahu nelze získat novější verzi stránky. Příčinou může být nevhodná informace o stáří či trvanlivosti stránky, kterou Squidu poskytne server, na kterém je stránka umístěna. V takovém případě je nejvhodnější umístit neposlušné servery do pravidla, které zajistí, že se jejich dokumenty nebudou ukládat do cache, tj. přidat do souboru /etc/squid/squid.conf tyto řádky:

acl donotcache domain.cz
always_direct allow donotcache