340 likes | 464 Views
Linux-työ: WWW-Proxy. Teemu Niemelä. Mikä on proxy?. Proxyksi kutsutaan palvelinta, joka tekee jotakin käyttäjän oman selaimen hyväksi tai puolesta. Kansankielellä välityspalvelin. Proxyn toimintaperiaate. Sijaitsee asiakaskoneen ja palvelimen välissä.
E N D
Linux-työ: WWW-Proxy Teemu Niemelä
Mikä on proxy? • Proxyksi kutsutaan palvelinta, joka tekee jotakin käyttäjän oman selaimen hyväksi tai puolesta. • Kansankielellä välityspalvelin.
Proxyn toimintaperiaate • Sijaitsee asiakaskoneen ja palvelimen välissä. • Toimii asiakkaalle päin palvelimena ja palvelimelle päin asiakkaana. • Vastaanottaa asiakkaan pyynnöt ja välittää ne tarvittaessa alkuperäisille palvelimille.
Proxyn etuja • Vähentää kaistavaatimuksia. • Vähentää palvelimen kuormitusta. • Pienentää asiakkaan kokemaa latenssia.
Proxyn haittoja • Läpinäkyvässä toteutuksessa, proxyn kaatuminen aiheuttaa ulkoliikenteen katkeamisen. • Välimuistista palautetut vanhat sivut.
Proxyn eri muodot • Normaali • Läpinäkyvä • Käänteinen
Normaali proxy • Selain konfiguroitava erikseen käyttämään proxyä. • Ei käytännöllinen paljon koneita sisältävissä verkoissa.
Läpinäkyvä proxy • Toteutus läpinäkyvä, eli selainta ei tarvitse erikseen konfiguroida. • Tiettyihin portteihin kohdistuva liikenne ohjataan aina proxylle, joka palauttaa sivun välimuististaan tai jatkaa pyynnön eteenpäin alkuperäiselle palvelimelle. • Käytännöllinen verkoissa, joissa on paljon koneita.
Käänteinen proxy • Vähentää palvelimen kuormaa. • Sijaitsee fyysisesti internetin ja palvelimen välissä.
Proxy ohjelmistot • Squid (http://www.squid-cache.org) • Rabbit (http://rabbit-proxy.sourceforge.net/) • Microsoft Internet Security and Acceleration Server (http://www.microsoft.com/isaserver/)
Squid • Vapaa lähdekoodi. • Suunniteltu toimimaan kaikilla yleisillä Unix-alustoilla, kuten Linux, BSD/OS, FreeBSD, NETBSD, OpenBSD, Solaris, HP-UX, OSF/DUNIX/TRU-64, Mac OS/X, IRIX ja AIX. • Käännöksiä myös Windows-ympäristöön.
Squid - asennus • Squid asennettiin koneeseen dmz1 (192.168.1.1):
Squid - asennus • Asennus valmiista paketeista tai lähdekoodeista. • Valmiista paketeista: apt-get install squid
Squid - asennus • Lähdekoodista: ftp://www.squid-cache.org/pub/squid-2/STABLE/ tar –xvzf squid-*.tar.gz ./configure make make install • Oletus asennushakemisto: /usr/local/squid
Squid - käyttäjä • Lisätään Squidia varten käyttäjäryhmä ja käyttäjä: groupadd squid useradd -g squid -d /var/cache/squid squid • Annetaan oikeudet muokata loki- sekä välimuistihakemiston tiedostoja: chown -R squid.squid /usr/local/squid/var/*
Squid - konfigurointi • Konfiguraatio tiedosto: % /usr/local/squid/etc/squid.conf • Määritetään välimuistihakemisto: cache_dir ufs /usr/local/squid/cache 120 16 256
Squid - konfigurointi • Määritetään HTTP-portit: http_port 3128 http_port 8080
Squid - konfigurointi • Määritetään, että squid - prosessia ajetaan squid-käyttäjällä: cache_effective_user squid cache_effective_group squid
Squid – yhteyksien määrittely • Sallitut yhteydet määritellään ACL-säännöillä. (ACL = Access Control List) • Luodaan kaksi ryhmää: acl lahiverkot src 192.168.1.0/24 acl lahiverkot_dmz src 192.168.10.0/24
Squid – yhteyksien määrittely • Annetaan oikeudet ottaa yhteys proxyyn: http_access allow lahiverkot http_access allow lahiverkot_dmz • Kielletään kaikki muu liikenne: http_access deny all
Squid – lokitiedoston sijainti • Squid käyttää kolmea päälokitiedostoa cache.log, access.log ja store.log. • Cache.log-tiedoston paikka määritellään direktiivillä cache_log, jolle annetaan parametrinä lokitiedoston polku: cache_log /usr/local/squid/var/logs/cache.log
Squid – lokitiedoston sijainti • Vastaavasti access.log ja store.log sijannit määritellään seuraavasti: cache_access_log /usr/local/squid/var/logs/access.log cache_store_log /usr/local/squid/var/logs/store.log
Squid – konfiguraatiotiedoston syntaksin tarkistus • Squid.conf tiedoston syntaksi tarkistetaan komennolla: % /usr/local/squid/sbin/squid -k parse
Squid - käynnistäminen • Ennen käynnistämistä, luodaan swap-kansiot: % /usr/local/squid/sbin/squid -z • Normaali käynnistäminen: % /usr/local/squid/sbin/squid • Käynnistäminen debug-tilassa: % /usr/local/squid/sbin/squid -N -d1
Squid - sammuttaminen • Squid sammutetaan: % /usr/local/squid/sbin/squid -k shutdown
Selaimen konfigurointi • Lynx: /etc/lynx.cfg-tiedostoon: http_proxy:http://192.168.1.1:8080 • Mozilla Firefox: edit > preferences > general> connection settings
Squid – lokitiedoston tulokset • Access.log-tiedostoon tallentuvat HTTP-transaktioiden tiedot: 1168158931.117 34 192.168.1.4 TCP_MISS/301 589 GET http://www.hut.fi/ - DIRECT/130.233.240.9 text/html 1168158933.135 2 192.168.1.4 TCP_HIT/200 3756 GET http://www.tkk.fi/ - NONE/- text/html
Squid - välimuisti • Squid.conf tiedostoon on mahdollista konfiguroida sääntöjä, jotka määräävät koska vastaus pyyntöön palautetaan välimuistista ja koska palvelimelta. Tämä tapahtuu refresh_pattern-direktiivillä: refresh_pattern [-i] regexpminpercentmax [options]
Squid - välimuisti • Esimerkiksi: refresh_pattern -i \.html$ 0 50% 1440
Squid – LM - kerroin • Jos min ja max aikarajat toteutuvat, tehdään lopullinen päätös LM – kertoimella. (last-modified factor)
Squid – välimuistin korvauspolitiikka • Squid käyttää oletuksena objektien poistamisessa välimuistista LRU-korvauspolitiikkaa. (Least Recently Used) • LRU poistaa objektit, jotka ovat olleet välimuistissa käyttämättöminä pisimmän aikaa.
Squid – muita korvauspolitiikoita • First In, First Out (FIFO) • Least Frequently Used (LFU) • Size • GreedyDual-Size (GDS)
Squid – toteutus läpinäkyvänä • iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j DNAT –to 192.168.1.1:3128 • iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128