linux-työ:

34
Linux-työ: WWW- Linux-työ: WWW- Proxy Proxy Teemu Teemu Niemelä Niemelä

Upload: lotta

Post on 04-Jan-2016

55 views

Category:

Documents


2 download

DESCRIPTION

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ä. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Linux-työ:

Linux-työ: WWW-ProxyLinux-työ: WWW-Proxy

Teemu NiemeläTeemu Niemelä

Page 2: Linux-työ:

Mikä on proxy?Mikä on proxy?

Proxyksi kutsutaan palvelinta, joka tekee Proxyksi kutsutaan palvelinta, joka tekee jotakin käyttäjän oman selaimen hyväksi jotakin käyttäjän oman selaimen hyväksi tai puolesta.tai puolesta.

Kansankielellä välityspalvelin. Kansankielellä välityspalvelin.

Page 3: Linux-työ:

Proxyn toimintaperiaateProxyn toimintaperiaate

Sijaitsee asiakaskoneen ja palvelimen Sijaitsee asiakaskoneen ja palvelimen välissä.välissä.

Toimii asiakkaalle päin palvelimena ja Toimii asiakkaalle päin palvelimena ja palvelimelle päin asiakkaana.palvelimelle päin asiakkaana.

Vastaanottaa asiakkaan pyynnöt ja välittää Vastaanottaa asiakkaan pyynnöt ja välittää ne tarvittaessa alkuperäisille palvelimille.ne tarvittaessa alkuperäisille palvelimille.

Page 4: Linux-työ:

Proxyn toimintaperiaateProxyn toimintaperiaate

Page 5: Linux-työ:

Proxyn etujaProxyn etuja

Vähentää kaistavaatimuksia. Vähentää kaistavaatimuksia.

Vähentää palvelimen kuormitusta.Vähentää palvelimen kuormitusta.

Pienentää asiakkaan kokemaa latenssia. Pienentää asiakkaan kokemaa latenssia.

Page 6: Linux-työ:

Proxyn haittojaProxyn haittoja

Läpinäkyvässä toteutuksessa, proxyn Läpinäkyvässä toteutuksessa, proxyn kaatuminen aiheuttaa ulkoliikenteen kaatuminen aiheuttaa ulkoliikenteen katkeamisen.katkeamisen.

Välimuistista palautetut vanhat sivut.Välimuistista palautetut vanhat sivut.

Page 7: Linux-työ:

Proxyn eri muodot

NormaaliNormaali

LäpinäkyväLäpinäkyvä

KäänteinenKäänteinen

Page 8: Linux-työ:

Normaali proxyNormaali proxy

Selain konfiguroitava erikseen käyttämään Selain konfiguroitava erikseen käyttämään proxyä.proxyä.

Ei käytännöllinen paljon koneita Ei käytännöllinen paljon koneita sisältävissä verkoissa.sisältävissä verkoissa.

Page 9: Linux-työ:

Läpinäkyvä proxy

Toteutus läpinäkyvä, eli selainta ei tarvitse Toteutus läpinäkyvä, eli selainta ei tarvitse erikseen konfiguroida.erikseen konfiguroida.

Tiettyihin portteihin kohdistuva liikenne Tiettyihin portteihin kohdistuva liikenne ohjataan aina proxylle, joka palauttaa ohjataan aina proxylle, joka palauttaa sivun välimuististaan tai jatkaa pyynnön sivun välimuististaan tai jatkaa pyynnön eteenpäin alkuperäiselle palvelimelle.eteenpäin alkuperäiselle palvelimelle.

Käytännöllinen verkoissa, joissa on paljon Käytännöllinen verkoissa, joissa on paljon koneita.koneita.

Page 10: Linux-työ:

Käänteinen proxyKäänteinen proxy

Vähentää palvelimen kuormaa.Vähentää palvelimen kuormaa.

Sijaitsee fyysisesti internetin ja palvelimen Sijaitsee fyysisesti internetin ja palvelimen välissä.välissä.

Page 11: Linux-työ:

Proxy ohjelmistotProxy ohjelmistot

Squid (Squid (http://www.squid-cache.orghttp://www.squid-cache.org))

Rabbit (Rabbit (http://rabbit-proxy.sourceforge.net/http://rabbit-proxy.sourceforge.net/))

Microsoft Internet Security and Microsoft Internet Security and Acceleration ServerAcceleration Server ( (http://www.microsoft.com/http://www.microsoft.com/isaserverisaserver//))

Page 12: Linux-työ:

SquidSquid

Vapaa lähdekoodi.Vapaa lähdekoodi.

Suunniteltu toimimaan kaikilla yleisillä Suunniteltu toimimaan kaikilla yleisillä Unix-alustoilla, kuten Linux, BSD/OS, Unix-alustoilla, kuten Linux, BSD/OS, FreeBSD, NETBSD, OpenBSD, Solaris, FreeBSD, NETBSD, OpenBSD, Solaris, HP-UX, OSF/DUNIX/TRU-64, Mac OS/X, HP-UX, OSF/DUNIX/TRU-64, Mac OS/X, IRIX ja AIX.IRIX ja AIX.

Käännöksiä myös Windows-ympäristöön. Käännöksiä myös Windows-ympäristöön.

Page 13: Linux-työ:

Squid - asennusSquid - asennus

Squid asennettiin koneeseen dmz1 (192.168.1.1):Squid asennettiin koneeseen dmz1 (192.168.1.1):

Page 14: Linux-työ:

Squid - asennusSquid - asennus

Asennus valmiista paketeista tai Asennus valmiista paketeista tai lähdekoodeista.lähdekoodeista.

Valmiista paketeista:Valmiista paketeista:

apt-get install squidapt-get install squid

Page 15: Linux-työ:

Squid - asennusSquid - asennus

Lähdekoodista:Lähdekoodista:

ftp://www.squid-cache.org/pub/squid-2/STABLE/ftp://www.squid-cache.org/pub/squid-2/STABLE/

tar –xvzf squid-*.tar.gztar –xvzf squid-*.tar.gz

./configure./configure

makemake

make installmake install

Oletus asennushakemisto:Oletus asennushakemisto:

/usr/local/squid/usr/local/squid

Page 16: Linux-työ:

Squid - käyttäjäSquid - käyttäjä

Lisätään Squidia varten käyttäjäryhmä ja Lisätään Squidia varten käyttäjäryhmä ja käyttäjä:käyttäjä:

groupadd squidgroupadd squiduseradd -g squid -d /var/cache/squid squiduseradd -g squid -d /var/cache/squid squid

Annetaan oikeudet muokata loki- sekä Annetaan oikeudet muokata loki- sekä välimuistihakemiston tiedostoja:välimuistihakemiston tiedostoja:

chown -R squid.squid /usr/local/squid/var/*chown -R squid.squid /usr/local/squid/var/*

Page 17: Linux-työ:

Squid - konfigurointiSquid - konfigurointi

Konfiguraatio tiedosto:Konfiguraatio tiedosto:

% /usr/local/squid/etc/squid.conf% /usr/local/squid/etc/squid.conf

Määritetään välimuistihakemisto:Määritetään välimuistihakemisto:

cache_dir ufs /usr/local/squid/cache 120 16 256cache_dir ufs /usr/local/squid/cache 120 16 256

Page 18: Linux-työ:

Squid - konfigurointiSquid - konfigurointi

Määritetään HTTP-portit:Määritetään HTTP-portit:

http_port 3128http_port 3128

http_port 8080http_port 8080

Page 19: Linux-työ:

Squid - konfigurointiSquid - konfigurointi

Määritetään, että squid - prosessia Määritetään, että squid - prosessia ajetaan squid-käyttäjällä:ajetaan squid-käyttäjällä:

cache_effective_user squidcache_effective_user squid

cache_effective_group squidcache_effective_group squid

Page 20: Linux-työ:

Squid – yhteyksien määrittelySquid – yhteyksien määrittely

Sallitut yhteydet määritellään ACL-Sallitut yhteydet määritellään ACL-säännöillä. (ACL = säännöillä. (ACL = Access Control List)Access Control List)

Luodaan kaksi ryhmää:Luodaan kaksi ryhmää:

acl lahiverkot src 192.168.1.0/24acl lahiverkot src 192.168.1.0/24

acl lahiverkot_dmz src 192.168.10.0/24acl lahiverkot_dmz src 192.168.10.0/24

Page 21: Linux-työ:

Squid – yhteyksien määrittelySquid – yhteyksien määrittely

Annetaan oikeudet ottaa yhteys proxyyn:Annetaan oikeudet ottaa yhteys proxyyn:

http_access allow lahiverkothttp_access allow lahiverkot

http_access allow lahiverkot_dmzhttp_access allow lahiverkot_dmz

Kielletään kaikki muu liikenne:Kielletään kaikki muu liikenne:

http_access deny allhttp_access deny all

Page 22: Linux-työ:

Squid – lokitiedoston sijaintiSquid – lokitiedoston sijainti

Squid käyttää kolmea päälokitiedostoa Squid käyttää kolmea päälokitiedostoa cache.log, access.log ja store.log.cache.log, access.log ja store.log.

Cache.log-tiedoston paikka määritellään Cache.log-tiedoston paikka määritellään direktiivillä cache_log, jolle annetaan direktiivillä cache_log, jolle annetaan parametrinä lokitiedoston polku:parametrinä lokitiedoston polku:

cache_log /usr/local/squid/var/logs/cache.logcache_log /usr/local/squid/var/logs/cache.log

Page 23: Linux-työ:

Squid – lokitiedoston sijaintiSquid – lokitiedoston sijainti

Vastaavasti access.log ja store.log sijannit Vastaavasti access.log ja store.log sijannit määritellään seuraavasti:määritellään seuraavasti:

cache_access_log /usr/local/squid/var/logs/access.logcache_access_log /usr/local/squid/var/logs/access.log

cache_store_log /usr/local/squid/var/logs/store.logcache_store_log /usr/local/squid/var/logs/store.log

Page 24: Linux-työ:

Squid – konfiguraatiotiedoston Squid – konfiguraatiotiedoston syntaksin tarkistussyntaksin tarkistus

Squid.conf tiedoston syntaksi tarkistetaan Squid.conf tiedoston syntaksi tarkistetaan komennolla:komennolla:

% % /usr/local/squid/sbin/squid -k parse/usr/local/squid/sbin/squid -k parse

Page 25: Linux-työ:

Squid - käynnistäminenSquid - käynnistäminen

Ennen käynnistämistä, luodaan swap-Ennen käynnistämistä, luodaan swap-kansiot:kansiot:

% % /usr/local/squid/sbin/squid -z/usr/local/squid/sbin/squid -z

Normaali käynnistäminen:Normaali käynnistäminen:

% % /usr/local/squid/sbin/squid/usr/local/squid/sbin/squid

Käynnistäminen debug-tilassa:Käynnistäminen debug-tilassa:

% % /usr/local/squid/sbin/squid/usr/local/squid/sbin/squid -N -d1 -N -d1

Page 26: Linux-työ:

Squid - sammuttaminenSquid - sammuttaminen

Squid sammutetaan:Squid sammutetaan:

% % /usr/local/squid/sbin/squid/usr/local/squid/sbin/squid -k shutdown -k shutdown

Page 27: Linux-työ:

Selaimen konfigurointiSelaimen konfigurointi

Lynx:

/etc/lynx.cfg-tiedostoon: http_proxy:http://192.168.1.1:8080

Mozilla Firefox:

edit > preferences > general> connection settings

Page 28: Linux-työ:

Squid – lokitiedoston tuloksetSquid – lokitiedoston tulokset

Access.log-tiedostoon tallentuvat HTTP-Access.log-tiedostoon tallentuvat HTTP-transaktioiden tiedot:transaktioiden tiedot:1168158931.117 34 192.168.1.4 TCP_MISS/301 589 GET 1168158931.117 34 192.168.1.4 TCP_MISS/301 589 GET http://www.hut.fi/ - DIRECT/130.233.240.9 text/htmlhttp://www.hut.fi/ - DIRECT/130.233.240.9 text/html

1168158933.135 2 192.168.1.4 TCP_HIT/200 3756 GET 1168158933.135 2 192.168.1.4 TCP_HIT/200 3756 GET http://www.tkk.fi/ - NONE/- text/htmlhttp://www.tkk.fi/ - NONE/- text/html

Page 29: Linux-työ:

Squid - välimuistiSquid - välimuisti

Squid.conf tiedostoon on mahdollista Squid.conf tiedostoon on mahdollista konfiguroida sääntöjä, jotka määräävät konfiguroida sääntöjä, jotka määräävät koska vastaus pyyntöön palautetaan koska vastaus pyyntöön palautetaan välimuistista ja koska palvelimelta. Tämä välimuistista ja koska palvelimelta. Tämä tapahtuu refresh_pattern-direktiivillä:tapahtuu refresh_pattern-direktiivillä:

refresh_pattern [-i] refresh_pattern [-i] regexpregexp minmin percentpercent maxmax [options] [options]

Page 30: Linux-työ:

Squid - välimuistiSquid - välimuisti

Esimerkiksi:Esimerkiksi:

refresh_pattern -i \.html$ 0 50% 1440refresh_pattern -i \.html$ 0 50% 1440

Page 31: Linux-työ:

Squid – LM - kerroinSquid – LM - kerroin

Jos min ja max aikarajat toteutuvat, tehdään Jos min ja max aikarajat toteutuvat, tehdään lopullinen päätös LM – kertoimella. (last-modified lopullinen päätös LM – kertoimella. (last-modified factor)factor)

Page 32: Linux-työ:

Squid – välimuistin Squid – välimuistin korvauspolitiikkakorvauspolitiikka

Squid käyttää oletuksena objektien Squid käyttää oletuksena objektien poistamisessa välimuistista LRU-poistamisessa välimuistista LRU-korvauspolitiikkaa. (Least Recently Used)korvauspolitiikkaa. (Least Recently Used)

LRU poistaa objektit, jotka ovat olleet LRU poistaa objektit, jotka ovat olleet välimuistissa käyttämättöminä pisimmän välimuistissa käyttämättöminä pisimmän aikaa. aikaa.

Page 33: Linux-työ:

Squid – muita korvauspolitiikoitaSquid – muita korvauspolitiikoita

First In, First Out (FIFO) First In, First Out (FIFO)

Least Frequently Used (LFU) Least Frequently Used (LFU)

Size Size

GreedyDual-Size (GDS) GreedyDual-Size (GDS)

Page 34: Linux-työ:

Squid – toteutus läpinäkyvänäSquid – toteutus läpinäkyvänä

iptables -t nat -A PREROUTING -i eth1 -p tcp –iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j DNAT –to 192.168.1.1:3128dport 80 -j DNAT –to 192.168.1.1:3128

iptables -t nat -A PREROUTING -i eth0 -p tcp –iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128dport 80 -j REDIRECT –to-port 3128