linux-työ:
Post on 04-Jan-2016
55 Views
Preview:
DESCRIPTION
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