Transparentní proxy: Porovnání verzí
(Založení článku) |
m (→Konfiguarace programu Squid: typo) |
||
Řádka 13: | Řádka 13: | ||
chkconfig iptables on | chkconfig iptables on | ||
− | == | + | == Konfigurace programu Squid == |
Nesmíme zapomenout na konfiguraci samotného programu Squid. Kromě povolení přístupu k jeho službám pro stanice z vnitřní sítě (pomocí definice ACL pravidla nasesit) musíme proxy říct, že bude pracovat jako transparentní. Proto přidejte na začátek jeho konfiguračního souboru <CODE>/etc/squid/squid.conf</CODE> následující parametry: | Nesmíme zapomenout na konfiguraci samotného programu Squid. Kromě povolení přístupu k jeho službám pro stanice z vnitřní sítě (pomocí definice ACL pravidla nasesit) musíme proxy říct, že bude pracovat jako transparentní. Proto přidejte na začátek jeho konfiguračního souboru <CODE>/etc/squid/squid.conf</CODE> následující parametry: |
Verze z 30. 10. 2007, 21:48
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.
Obsah
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). Přesměrování do proxy lze zajistit automaticky i pro programy spuštěné na tom samém počítači pomocí druhého pravidla (eth0 je vnější rozhraní, 10.0.0.0/24 je vnitřní síť):
iptables -t nat -A PREROUTING -p tcp -i ! eth0 -s 10.0.0.0/24 --dport 80 -j REDIRECT --to 3128 iptables -t nat -A OUTPUT -p tcp -o eth0 --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
Konfigurace programu Squid
Nesmíme zapomenout na konfiguraci samotného programu Squid. Kromě povolení přístupu k jeho službám pro stanice z vnitřní sítě (pomocí definice ACL pravidla nasesit) musíme proxy říct, že bude pracovat jako transparentní. Proto přidejte na začátek jeho konfiguračního souboru /etc/squid/squid.conf
následující parametry:
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 cache_dir ufs /var/spool/squid 700 16 256 acl nasesit src 10.0.0.0/255.255.255.0 acl nasesit src 123.123.123.1 error_directory /usr/share/squid/errors/Czech
Prvních 6 řádků slouží k zajištění fungování transparentní proxy. Direktiva cache_dir
určuje adresář, kam se budou ukládat dočasné soubory, číslo 700 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. 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 spojovat právě z této adresy, takže je lepší ji do seznamu zahrnout). Poslední řádek slouží k aktivaci chybových zpráv v českém jazyce. Pozor – adresář musí být platný, jinak Squid nemusí nastartovat (což je samozřejmě chyba).
Dále je potřeba do stejného konfiguračního souboru Squidu vložit mezi seznam pravidel povolujících HTTP přístup k cache řádek, který se odkáže na naši nadefinovanou síť nasesit. Tj. vložte za řádek, na kterém je text: INSERT YOUR OWN RULE(S) následující direktivu:
http_access allow nasesit
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í 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
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