linux-työ:

Post on 04-Jan-2016

55 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

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

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

Teemu NiemeläTeemu Niemelä

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.

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.

Proxyn toimintaperiaateProxyn toimintaperiaate

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.

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.

Proxyn eri muodot

NormaaliNormaali

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

KäänteinenKäänteinen

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.

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.

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ä.

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//))

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.

Squid - asennusSquid - asennus

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

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

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

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/*

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

Squid - konfigurointiSquid - konfigurointi

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

http_port 3128http_port 3128

http_port 8080http_port 8080

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

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

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

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

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

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

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

Squid - sammuttaminenSquid - sammuttaminen

Squid sammutetaan:Squid sammutetaan:

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

Selaimen konfigurointiSelaimen konfigurointi

Lynx:

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

Mozilla Firefox:

edit > preferences > general> connection settings

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

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]

Squid - välimuistiSquid - välimuisti

Esimerkiksi:Esimerkiksi:

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

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)

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.

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)

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

top related