INTERNET4U

Jak na Internet server ? (9)

Tentokrát nás čeká problematika nazvaná

Proxy server

Nejprve je nutné si uvědomit, co je to proxy server (nebo též proxy gateway). Proxy server je jakási roura (která může například vést skrze protipožární zeď vaší sítě...), přes níž procházejí přístupy k určitým službám jinde, v našem případě vně naší sítě - na Internetu. V praxi jsou nejznámější proxy pro WWW (resp. pro http), dále známe též ftp proxy, Gopher proxy a WAIS proxy. Pokud to celé přitáhneme poněkud za vlasy, může existovat též telnet proxy, mail proxy atd. Proxy server se jeví obvykle uživateli jako naprosto transparentní. Určitou výhodou WWW proxy je to, že správce serveru na druhé straně spojení nezná IP adresu a jméno uživatelské pracovní stanice, ale jen adresu proxy.

Ve chvíli, kdy se objevila první WWW proxy gateway, napadlo její autory, že by mohla fungovat také jako cache (ukládá dokumenty, jež putují přes ní, na svůj lokální disk), čímž je možné snížit traffic na vaší přípojce k Internetu a samozřejmě také na Internetu samotném a též zrychlit přístup uživatelům k dokumentům, které již tahal někdo před nimi a zůstaly v cache. Celý systém se nazývá proxy cache a samozřejmě, čím má k dispozici více diskového prostoru na HTML dokumenty, tím pracuje lépe. Určitou nevýhodou proxy cache je však to, že některé stránky bývají pravidelně aktualizovány a proxy server si toho prostě nevšimne (zde však pomůže funkce reload vašeho prohlížeče), tuto chybu se však mj. snaží odstranit inovace protokolu http ve verzi 1.1.

Když pak byla hotova i proxy cache, kohosi z týmu vyvíjejícího proxy cache známou jako Harvest napadlo, že by se mohlo propojit více proxy cache serverů do sítě za sebou, čímž bude možné také zrychlit přístup k dokumentům a podstatně ulehčit internetovým linkám. A tak se jeden proxy server ptá dalších, zda nějaký dokument nemají, pokud ano, tak si jej vezmou od nich a pokud nikoli, postupují přes tyto proxy servery dále (aby si dané stránky mohli stáhnout i další uživatelé). Takže spojení přes síť proxy serverů může vypadat i takto:

V praxi to pak může být např. (pokud jste připojeni na CESNET) takto: vaše PC -> firemní proxy cache -> cache.cesnet.cz -> cache.ecrc.net (Německo) -> cache.ans.net (U.S.A.) -> www.software.ibm.com. Počet uživatelů, kteří tak budou moci využít stránku staženou na vaši žádost, narůstá geometrickou řadou. Jen dodám, že u nás je síť proxy serverů poměrně hustá. Kromě cache.cesnet.cz je to též např. vultur.vslib.cz, na Video-On-Line proxy.vol.cz a i na sítě některých dalších providerů, např. Datac, jsou připojeny soukromé počítače, které nevlastní provider, a které proxy cache provozují. Jejich jména však jaksi zrovna nepatří mezi ta uveřejňovaná).

A teď ale pozor. Jestli si myslíte, že síťovou proxy cache umožňuje provozovat proxy z Apache httpd, CERN httpd, nebo třeba proxy z komerčního Netscape Proxy serveru, pak si to nemyslete, není tomu tak. Síťovou proxy zatím umožňuje provozovat jen jeden jediný produkt a je jím Squid, pokračovatel a následovník programu Harvest (vyvíjený dokonce týmž týmem). Squid patří mezi freeware, k dispozici jsou i zdrojové kódy, které umožňují jeho implementaci pod téměř jakoukoli platformu, zatím Squid běží na celé řadě unixových systémů včetně Linuxu a pod operačním systémem OS/2. Také se vám zdá, že to není náhoda, že pod OS/2 existuje portace téměř jakéhokoli unixového programu, kdežto pod Windows NT nikoli... ?

Takže jak Squid získat ? Zkuste opět osvědčenou metodu - největší české ftp servery, popř. Nosey Parkera, pokud nejste připojeni k CESNETu, EUnetu, SpiNetu, CzechNetu či NetForce, zkuste raději ftp server sunsite.unc.edu (popř. ftp.funet.fi), nebo si vezměte na pomoc AltaVistu a hledejte Squid. Poslední verze Squida má v době vydání tohoto příspěvku číslo 1.1.2, častěji se však setkáte s používáním starší série (a na rozdíl od série 1.1.x také neexperimentální) 1.0.x, kde je poslední verze 1.0.20.

Opět nás čeká rozbalení programem Tar (popř. též Gzip,) a konfigurace. Konfigurační soubor Squidu se jmenuje squid.conf a nalézá se (při instalaci Squidu na /usr/local/squid) obvykle v /usr/local/squid/etc. U konfigurace Squidu je potřeba již o něco více přemýšlet, není to již tak jednoduché jako nakonfigurovat Apache.

Příklad konfigurace Squid pro naší ukázkovou síť je zde (jen pro doplnění uvedu, že program Squid umí ještě řadu dalších věcí, jako třeba omezení přístupů k serverům atp., které pro jednoduchost vynechávám):

http_port 3128
icp_port 3130

cache_host vultur.vslib.cz parent 3128 3130
cache_host cache.cesnet.cz parent 3128 3130
cache_host proxy.ruk.cuni.cz parent 8080 8081

inside_firewall domena.cz
local_domain domena.cz
local_ip 200.0.5.0

single_parent_bypass off
source_ping off

neighbor_timeout 4
cache_mem 4
cache_swap 256
cache_swap_low 75
cache_swap_high 90
cache_mem_low 75
cache_mem_high 90

cache_dir /var/squid

cache_access_log /var/log/squid/access.log
cache_log /var/log/cache.log
cache_hierarchy_log /var/log/squid/hierarchy.log
cache_store_log /var/log/squid/store.log
emulate_httpd_log on
pid_filename /tmp/squid.pid
debug_options ALL,1

cache_ftp_program /usr/local/squid/bin/ftpget
ftp_user cache@domain.cz

cache_dns_program /usr/local/squid/bin/dnsserver
dns_children 5

http_stop /cgi-bin/
http_stop ?
gopher_stop ?

gopher 4 4320
http 4 4320
ftp 4 4320

request_size 300

ttl_pattern    ^http://       1440        20%      43200

ttl_pattern ^ftp:// 10080 20% 43200

ttl_pattern \.gif$ 2880 50% 43200

ttl_pattern /cgi-bin/ 0 0% 43200

quick_abort off
negative_ttl 5
positive_dns_ttl 360
negative_dns_ttl 5

connect_timeout 120
read_timeout 15
client_lifetime 200
shutdown_lifetime 30
clean_rate -1

acl manager proto cache_object
acl localhost src 200.0.5.65/255.255.255.0
acl all src 0.0.0.0/0.0.0.0

acl SSL_ports port 443 563
acl CONNECT method CONNECT

http_access deny manager !localhost
http_access deny CONNECT !SSL_ports
http_access allow all
icp_access allow all

cache_mgr root
cache_effective_user nouser nogroup
visible_hostname server.domena.cz
dns_testnames server.domena.cz
logfile_rotate 10

append_domain .domena.cz

Nejprve si musíme uvědomit, kde chceme mít cache s HTML dokumenty. Já jsem pro tento účel zvolil adresář /var/squid. Pomocí proměnných 'cache_mem' a 'cache_swap' lze určit, kolik paměti a místa na disku smí Squid nejvíce využívat. Další proxy servery, na něž se náš proxy server má obracet s dotazy, jsou definovány pomocí proměnné 'cache_host'. Pomocí neuvedené proměnné 'cache_host_domain' lze i určit, který proxy server se má využívat pro kterou doménu. Konfigurace koncového proxy serveru je ještě docela jednoduchá, ale představte si např. stovky cache_host a cache_hsot_domain položek v konfiguraci centrálních proxy serverů některé velké veřejné sítě.

Další významné proměnné 'inside_firewall', 'local_domain' a 'local_ip' definují, na které systémy má náš proxy server přistupovat přímo. Pokud tohle bude nakonfigurované špatně, nemusí proxy server přístup k dokumentům zrychlit, ale naopak značně zpomalit, a to platí včetně lokálních dokumentů. Další proměnné nastavují jméno systému, jméno a skupinu uživatele, s jehož UID a GID Squid běží. Nedoporučuji měnit ty proměnné, které nastavují časové prodlevy, práci s DNS, porty jednotlivých služeb atp., pokud naprosto přesně nevíte, co děláte.

Výše uvedená konfigurace Squid je relativně chodivá a odzkoušená, takže si užijte proxy cache v provozu a příště se sejdeme nad firewallem.

Zbyněk Pospíchal


Horké novinky - únor '97 | Horké novinky | internet4U homepage