Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori...

75
Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio Soprano Servizio di Calcolo Email: claudio .soprano@ lnf . infn .it

Transcript of Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori...

Page 1: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

Servizi Essenziali di Rete

Stage per Sistemista Linux

Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati

21-22-23 Settembre 2005

Tutor: Claudio Soprano

Servizio di Calcolo

Email: [email protected]

Page 2: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

Argomenti trattati

Introduzione alle reti

Dhcp server

Dns server

Web server

Proxy server

Page 3: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

Introduzione alle reti

Una rete e’ un insieme di piu’ dispositivi (switch, router, pc, server,stampanti, ecc.) chiamati “nodi della rete” che si scambiano informazioni.Lo scambio di informazioni avviene tramite l’uso di protocolli dicomunicazione, che definiscono un insieme di regole di funzionamento.Ogni nodo per parlare con gli altri deve quindi conoscere iprotocolli di comunicazione usati dagli altri nodi.I protocolli di comunicazione usati in tutto il mondo per farcomunicare i nodi presenti in una rete (Locale, Metropolitana,Estesa, Mondiale) sono inclusi nella suite dei Protocolli Internet. L’IP (Internet Protocol) fa parte di questa suite.

Page 4: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

Introduzione alle reti

Rappresentazione dei Protocolli Internet nella pila OSI:Pila OSI Protocolli Internet

Application

Presentation

Session

Transport

Network

Data Link

Physical Not Specified

ARP, RARP

Routing Protocols IP ICMP

TCP, UDP

FTP, Telnet

SMTP, SNMP

NFS

XDR

RPC

1

2

3

4

5

6

7

Page 5: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

Introduzione alle reti

L’IP e’ un protocollo di comunicazione che definisce che ogni nodo di una rete deve avere un indirizzo unico, chiamato indirizzo IP e deveessere diverso da quello di un altro nodo presente sulla stessa rete.

LAN

193.206.80.40 193.206.80.50 193.206.80.55

193.206.80.1

Router/Gateway

INTERNET

Ogni comunicazione tra i nodi avviene utilizzando gli indirizzi IP

(questo a livello 3 della pila OSI).

Gli indirizzi IP si dividono in pubblici (visibili/raggiungibili da Internet) e

privati (visibili/raggiungibili solo all’interno di una stessa LAN).

X.X.X.X

Page 6: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

Introduzione alle reti

Gli indirizzi IP sono divisi in Classi:- Classi A da 1.0.0.0 a 127.0.0.0- Classi B da 128.0.0.0 a 191.255.0.0- Classi C da 192.0.0.0 a 223.255.255.0- Classi D da 224.0.0.0 a 239.255.255.255 (Multicast)- Classi E da 240.0.0.0 a 254.255.255.255 (nessuna specifica)

Di tutte queste le seguenti sono riservate:– la 127.0.0.0 (Classe A) e’ riservata per l’interfaccia di loopback delle

interfaccie di rete– Tutte le seguenti sono riservate per indirizzare reti private, ovvero reti che

non hanno la necessita’ di comunicare con macchine sul mondo Internet (RFC 1918): Il range di Classi A 10.0.0.0 fino a 10.255.255.255 Il range di Classi B 172.16.0.0 fino a 172.31.255.255 Il range di Classi C 192.168.0.0 fino a 192.168.255.255

Queste classi non possono essere ruotate su Internet

Page 7: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

Introduzione alle reti

Gli indirizzi IP privati possono essere usati da chiunque, ma non

DEVONO oltrepassare il router di frontiera.

Gli indirizzi IP pubblici vengono assegnati da un organo chiamato RIPE

(Regional Internet Registry) agli Amministratori di Rete che ne fanno

richiesta ed hanno un costo.

Gli Amministratori a loro volta li girano agli utenti per usarli nei PC.

I problemi piu’ comuni nella gestione di una rete sono:- Duplicazione di indirizzi IP e problemi di comunicazione nella LAN

(per configurazione sbagliata della scheda di rete da parte dell’utente)

- Renumbering, indica il cambio degli indirizzi IP di tutta una rete- Scarsita’ di indirizzi IP pubblici e quindi necessita’ di riusare gli indirizzi

disponibili a chi ne fa richiesta

- Gestione degli indirizzi IP

Page 8: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

Che cose il DHCP ?- e’ un protocollo di comunicazione che permette la configurazione

automatica delle impostazione di rete di un client generico, basato sul protocollo BOOTP

- la comunicazione avviene tra il client ed il server DHCP- il server ascolta sulla porta 67 utilizzando protocollo UDP- il client effettua le richieste usando la porta 68 ed il protocollo UDP- se nella rete e’ presente un DHCP server, ed ha le informazioni

relative al client che effettua la richiesta, il server inviera’ al client tutti i parametri necessari (indirizzo IP del client, netmask, indirizzi dei DNS, WINS, NTP servers, indirizzo del gateway-router, lease time, ecc.)

- se nella rete non e’ presente un DHCP server, il client (se con Sistema Operativo Microsoft) prendera’ un indirizzo IP nella classe 169.254.0.0 che e’ generato automaticamente dal Sistema Operativo e ritentera’ la ricerca di un DHCP server nella rete, tutti gli altri Sistemi Operativi non prenderanno nessun indirizzo IP e non tenteranno successive richieste

Page 9: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

Il DHCP Server puo’ funzionare in 3 modalita’:

- Assegnazione manuale degli indirizzi IP in base ad una lista di Mac Address specificata dall’Amministratore di Rete.Solo i client con il Mac Address all’interno della lista specificata otterranno un indirizzo IPQuindi nel DHCP server sara’ specificato per ogni Mac-Address il relativo indirizzo IP da assegnare

- Assegnazione automatica degli indirizzi IP in base ad un range di indirizzi specificati dall’Amministratore di Rete, i client che richiedono un indirizzo IP otterranno sempre lo stesso dal DHCP server (Lease Time infinito, usata dai router ADSL)

- Assegnazione dinamica degli indirizzi IP in base ad un range di indirizzi specificati dall’Amministratore di Rete, i client che richiedono un indirizzo IP, lo otterranno e sara’ valido per un tempo predefinito (Lease Time). Allo scadere del tempo, rieffettueranno la richiesta al DHCP Server che potrebbe assegnargli anche un indirizzo IP diverso dal precedente (perche’ gia assegnato ad un altro).Questa e’ l’unica modalita’ che permette di riassegnare un indirizzo IP non piu’ usato da un client ad un altro che ne fa richiesta.

Page 10: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

RETE LOCALE (LAN)

Client 1 Client 2

Dhcp Server

DH

CP

D

ISC

OV

ER

Client “n”

DHCP DISCOVERDHCP DISCOVER

DH

CP

DIS

CO

VE

R

Fase 1 (DHCP Discover): Il Client 1 effettua una richesta broadcast (255.255.255.255) con indirizzo sorgente 0.0.0.0 per localizzare eventuali DHCP Server sulla rete locale, nella richiesta sono contenuti il Mac-Address ed il nome del client che effettua la richiesta

Dhcp Server

DH

CP

DIS

CO

VE

R

DHCP DISCOVER

Page 11: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

Client 1 Client 2Dhcp Server

Client “n”

DH

CP

OF

FE

R

Fase 2 (DHCP Offer): Ogni DHCP Server risponde soltanto al Client 1 offrendogli un indirizzo IP, netmask, l’indirizzo IP del DHCP Server e la durata di validita’ (Lease Time), questo se avra’ indirizzi a disposizione per il client in questione (vedi modalita’ del DHCP) altrimenti rispondera’ che non ha indirizzi disponibili (No free leases)

DHCP OFFER

DH

CP

O

FF

ER

Dhcp Server

DH

CP

OF

FE

R

DHCP OFFERD

HC

P

OF

FE

RRETE LOCALE (LAN)

Page 12: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

Client 1 Client 2

Dhcp Server

DH

CP

R

EQ

UE

ST

Client “n”

DHCP REQUEST

DH

CP

RE

QU

ES

T

Fase 3 (DHCP Request): Il Client 1 accetta la prima offerta che gli arriva da un DHCP Server, verifica che l’IP ricevuto e’ valido, in caso affermativo avvisera’ quel server che accetta i parametri di rete ricevuti precedentemente, se l’IP ricevuto non e’ valido mandera’ un (DHCP Decline) al DHCP Server informandolo che non lo puo’ accettare.

Dhcp Server

RETE LOCALE (LAN)

Page 13: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

Client 1 Client 2Dhcp Server

Client “n”

DH

CP

AC

K

Fase 4 (DHCP ACK): Il DHCP Server rispondera’ al client dicendogli che gli ha riservato l’IP e gli mandera’ tutti i dati di configurazione che l’Amministratore di Rete ha inserito nel DHCP Server, inoltre scrivera’ i dati del client in un suo database (leases file).Se dovesse aver gia assegnato l’IP ad un altro client o se il client richiede un indirizzo che il server non puo’ assegnargli, questo inviera’ un DHCP Nack al client che quindi rimarra’ sconfigurato.Alla scadenza della validita’ dei dati (Lease Time) il Client 1 ne richiedera’ la validita’ al DHCP Server rieffettuando la fase 3

DHCP ACK

DH

CP

A

CK

Dhcp Server

RETE LOCALE (LAN)

Page 14: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

Client 1 Client 2

Dhcp Server

DH

CP

R

EL

EA

SE

Client “n”

DHCP RELEASE

DH

CP

RE

LE

AS

E

Fase 5 (DHCP Release): Quando il Client 1 viene spento (procedura di Shutdown normale) questo informera’ il DHCP Server del rilascio dell’indirizzo IP, che a seconda della modalita’ di funzionamento del DHCP Server potrebbe essere riutilizzato da un altro client che ne fa richiesta. Questa fase e’ opzionale.

RETE LOCALE (LAN)

Dhcp Server

Page 15: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

Alcune considerazioni:- ogni DHCP server, usa un indirizzo IP statico, ovvero non

puo’ ottenere un indirizzo IP da se stesso, in quanto la rete viene attivata prima dei servizi

- un DHCP server risponde senza problemi a migliaia di richieste

- se si vuole aumentare l’affidabilita’ si possono usare piu’ DHCP server configurati opportunamente (uno per ogni network, o tutti con la stessa configurazione) in modo da bilanciare il carico in base alle esigenze

- in caso di uso di piu’ DHCP server, la malconfigurazione di uno dei server porta i client ad avere problemi nella configurazione delle impostazioni di rete e quindi guai all’Amministratore di Rete

Page 16: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

Il software usato per implementare un DHCP

Server in ambiente Linux in questo Stage e’

l’ISC DHCP Server

Si puo’ scaricare da http://www.isc.org- e’ gratuito- e’ tenuto continuamente aggiornato- e’ molto stabile

Page 17: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

Passi necessari per l’installazione di un DHCP server:- Scaricare il pacchetto software DHCP server dal sito http://www.isc.org- Installare il pacchetto

tar –xvzf dhcp-3.0.3.tar.gz./configuremakemake install

- Configurare il DHCP servermodificare il file /etc/dhcpd.conf

- Attivare il DHCP server/etc/init.d/dhcpd start

- Testare il funzionamento guardando i log di sistematail –f /var/log/messages o more /var/log/messages

- Verificare la presenza del database dei client connessimore /var/lib/dhcp/dhcpd.leases

- Attivare il dhcp come servizio partente al riavvio della macchinachkconfig --add dhcpdchkconfig --level 35 dhcpd on

Page 18: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

File di configurazione /etc/dhcpd.conf

default-lease-time nnn; specifica la validita’ di default dei dati in secondimax-lease-time nnn; specifica la validita’ massima dei dati in secondi

use-host-decl-names on; indica di assegnare come nome ip il nome indicatooption host-name “nome”; specifica il nome ip da assegnare al client

option domain-name “nomedominio”; specifica il dominio da assegnare ai clientoption domain-name-servers ipserver1,ipserver2…; specifica gli indirizzi IP dei server dnsoption subnet-mask xxx.xxx.xxx.xxx; specifica la network maskoption routers iprouter1,iprouter2….; specifica gli indirizzi IP dei router/gatewayoption time-servers ipserver1,ipserver2...; specifica gli indirizzi IP degli NTP server…. ci sono moltissime altre option, usare man dhcpd.conf

ddns-updates on|off ; abilita/disabilita gli aggiornamenti dinamici verso i server dns (impostazione di

tipo globale)ddns-update-style ad-hoc|interim|none; scegli il tipo di dinamic update che usera’ (ad-hoc e’

obsoleto, impostazione di tipo globale)

range xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy; specifica un range di indirizzi da assegnare ai client

Page 19: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

File di configurazione /etc/dhcpd.conf (continua)

deny unknown-clients; ottengono un indirizzo IP solo i client che hanno i Mac-Address registratiallow unknown-clients; ottengono un indirizzo IP tutti i client registrati e non

pool {…} permette di definire un pool di indirizzi che verra’ trattato differentemente da un altro pool

(usando piu’ gruppi pool)

subnet xxx.xxx.xxx.xxx netmask yyy.yyy.yyy.yyy {….} definisce la network alla quale assegnare gli indirizzi IP, deve esistere almeno

una dichiarazione per la network definita sull’interfaccia di rete per funzionare

group { definisce un gruppo di regole valide per i client definiti all’interno del gruppo….}

host nomeclient { definisce i dati di un clienthardware ethernet xx:xx:xx:xx:xx:xx; definisce il Mac-Address del client che effettuera’ la

richiestafixed-address xxx.xxx.xxx.xxx; definisce l’indirizzo/nome IP da assegnare staticamente

} al client, nomeclient puo’ essere un nome fittizio percomodita’ si usa lo stesso nome del client

Page 20: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DHCP (Dynamic Host Configuration Protocol)

Esercitazioni

Realizzare un DHCP server che:- Assegni indirizzi IP ai client nella modalita’ descritta sotto- Assegni il dominio lnf.infn.it- Assegni l’indirizzo ip del router 192.168.160.1

- Assegni gli indirizzi dei dns server primario (ad ognuno il proprio, solo per esercizio 3) e secondario a tutti lo stesso

Esecizio 1: assegnare automaticamente gli indirizzi IP a qualsiasi client utilizzando il

range 192.168.160.201-192.168.160.220

Esercizio 2: assegnare automaticamente gli indirizzi IP utilizzando il range

192.168.160-201-192.168.200 solo ai client conosciuti (bisogna censire tutti i Mac

Address ed inserirli nella configurazione del DHCP)

Esercizio 3: assegnare staticamente gli indirizzi IP (sempre lo stesso) ai client

conosciuti

Page 21: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

In una rete molto estesa con molti nodi (PC, server, stampanti, router, switch) ricordare amemoria tutti gli indirizzi IP e’ veramente difficile.Si e’ deciso quindi di usare i nomi al posto degli indirizzi in modo da ricordarli piu’ facilmente.Ed e’ proprio per questa necessita’ che nasce il DNS Server, come un database distribuitogerarchicamente che traduce i nome di dominio in indirizzi IP (diretta) ed il contrario (inversa).Il mondo e’ diviso in domini uno per ogni nazione (IT per italia, UK per Regno Unito, FR per Francia, ES per Spagna, ecc.), questi sono chiamati domini di primo livello (top-level).Oltre a quelli relativi alle nazioni ci sono domini di primo livello particolari come ORG perorganizzazioni senza scopo di lucro, MIL per istituzioni militari, GOV per istituzioni governative,EDU per istituzioni educazionali (come universita’), COM e NET usate principalmente per scopicommerciali, inoltre ogni tanto ne vengono aggiungono altri.Ognuno di questi domini principali e’ poi suddiviso in altri domini (di secondo livello) che a

secondadella societa’, istituzione, organizzazione che lo richiede registrandolo, avra’ un nome. La struttura e’ ad albero e ogni dominio e’ composto o da altri domini o da nodi fisici che rappresentano le foglie dell’albero.I domini (che devono essere visibili e raggiungibili in Internet) vanno registrati (presso enti presenti in ogni nazione) pagandoli, se invece li si usano in reti private non e’ necessaria la registrazione.Il numero massimo di livelli (o domini) che un nome di dominio puo’ avere e’ 127.Il DNS usa il protocollo UDP ed ascolta sulla porta 53 per le richieste da parte dei client, usa invece protocollo TCP e porta 53 per i trasferimenti di zona con i DNS Secondari.

Page 22: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

itcom edu

standford

pcb dhcp dns1 dns2www

defense

pcc dhcp dns1 dns2www

yahoo

pca dhcp dns1 dns2www

libero

pcd dhcp dns1 dns2www

….

….…. …. ….

mil

….

Se voglio sapere il nome di dominio del server indicato dal cerchio rosso dovro’ partire dal suo nome fino ad arrivare alla radice dell’albero aggiungendo un “.” per ogni dominio che attraverso, ottengo quindi: www.yahoo.com. mentre il nome del webserver indicato col cerchio marrone sara’: www.lnf.infn.it.L’ultimo punto nel nome di dominio viene normalmente omesso (in quanto viene inserito per default quando effettuate una richiesta al DNS). I rettangoli in blue sono domini di 1 livello, quelli in verde di 2 livello e quelli in arancione di 3 livello.Ogni dominio e’ responsabile per tutti i domini di livello inferiore (nella struttura ad albero), ovvero i domini di 1 livello sono responsabili dei domini di 2 livello, quelli di 2 livello di quelli di 3 livello, ecc. ecc., ma nello stesso tempo possono delegare questa responsabilita’ a qualcun’altro (anche se non e’ strettamente necessario, normalmente si usa).

infn

lnf ….

pce dhcp dns1 dns2www

Domini 1 livello (top-level)

Domini 2 livello

Domini 3 livello

. Root “name” serversDominio . Radice

Page 23: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

Ogni dominio deve avere almeno due DNS Server per funzionare, uno Primario (master) ed unoSecondario (slave) e se fosse possibile un altro Secondario esterno alla rete del dominio che gestisce.Il Primario ha i dati effettivi, mentre i Secondari ne ha una copia (Transfer Zone) ricevuta dal Primario. Gli Amministratori di Rete, cambiano/aggiornano/modificano i dati solo nel DNS Primario, i Secondariverrano aggiornati automaticamente.Ogni DNS contiene le informazioni relative al proprio dominio (zona) e sa come ottenere le informazioni di quelli sottostanti (in quanto ne ha delegato la gestione ad altri DNS, oppure li gestisce direttamente).Quindi il DNS del dominio .it sa chi detiene le informazioni del dominio libero.it e chi detiene leinformazioni del dominio infn.it ma non sa chi detiene le informazioni per il dominio lnf.infn.itI root “name” servers sono dei server DNS che hanno tutte le informazioni relative ai domini di 1 livello(top-level) ed indirizzano i vari DNS nelle traduzioni da nomi di domini in indirizzi IP e viceversa.I DNS server di un dominio (zona) sono detti autoritativi per quel dominio, mentre risulteranno nonautoritativi per tutti gli altri domini che non gestiscono direttamente.I DNS del dominio .it non sono autoritativi per il dominio libero.it.Ogni client di una rete ha installato automaticamente nel sistema operativo un DNS client(resolver) che manda le richieste ai DNS server configurati nelle proprieta’ di rete.E’ FQDN (Full Qualified Domain Name) un nome (di un host) comprensivo del dominio di appartenenzawww.lnf.infn.it e’ un FQDN, www.libero.it e’ un FQDN, www non e’ un FQDN.Il DNS server usa il protocollo UDP ed ascolta sulla porta 53 per le richieste da parte dei client (che usanoinvece una porta alta, sulla quale rispondera’ il DNS), usa invece protocollo TCP e porta 53 per Itrasferimenti di zona con i DNS Secondari.

Page 24: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

“.”Root name server

itname server

infn.itname server

lnf.infn.itname server

nameserver

Clientresolver

ww

w.ln

f.in

fn.it

A ?

it fr es

infn virgilio

roma1 mi lnf

www.lnf.infn.it A ?

Chiedi al NS itwww.lnf.infn.it A ?

Chiedi al NS infn.itwww.lnf.infn.it A ?

Chiedi al NS lnf.infn.it

www.lnf.infn.it A ?

193.206.84.220

193.

206.

84.2

20

Salva in cache

1

2

34

56

7

8

9

A

B

Cancella dallacache (TTL)

C

Come si puo’ notare la traduzione di un FQDN (www.lnf.infn.it) ad indirizzo IP avviene partendo da destra (il . e’ implicito) e a mano mano andando a sinistra (poi it poi infn poi lnf) fino ad arrivare all’ultimo nameserver

Page 25: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

INTERNET

DNS PrimarioRouter/Gateway

Client 3Client 2

dns.libero.itdns.yahoo.com

dns.virgilio.it

dns.microsoft.com

Richieste dns

Client 1

DNS Secondario

DNS Secondario

Richieste dns

Collocazione dei DNS Server Primari e Secondari

Page 26: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

Quando arriva una richiesta di traduzione da nome adindirizzo o viceversa, il DNS server1. se riguarda una delle proprie zone di autorita’ esegue

direttamente la traduzione e restituisce il dato richiesto2. se non riguarda le proprie zone, guarda se lo ha nella

cache (se lo aveva gia richiesto precedentemente) ed in caso affermativo restituisce il dato richiesto direttamente

3. se non lo ha nella cache, chiede al root “name” server dove trovera’ l’informazione richiesta (come visto nello schema precedente), alla fine inviera’ il dato richiesto e ne terra’ una copia nella cache per il tempo specificato dal TTL (Time To Live)

Page 27: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

Finora abbiamo visto esempi di come trovare un indirizzo dato un nome ed abbiamo vistoche il DNS ha un database ed una gerarchia ad albero, che facilita la ricerca dei nomi.Ma se noi volessimo sapere quale e’ il FQDN associato ad un indirizzo IP ?Per evitare la costruzione di un altra struttura si e’ pensato di usare lo stesso metodoanche per i numeri, creando un dominio chiamato in-addr.arpa (in-addr sta per InternetAddress) che copre l’intero indirizzamento IP.Al suo interno ci sono 256 sottodomini (da 0 a 255) per esempio 193.in-addr.arpa, e dentroognuno di loro altri 256 domini (da 0 a 255) per esempio 203.193.in-addr.arpa, ancoraall’interno 256 domini (da 0 a 255) per esempio 84.203.193.in-addr.arpa ed infineall’interno gli ultimi 256 domini (da 0 a 255) e finalmente 112.84.203.193.in-addr.arpa, checorrisponde al nome dns2.lnf.infn.it.Il meccanismo che risale ad un nome da un indirizzo IP e’ lo stesso che si usa per i nomi,quando vogliamo sapere il nome dell’indirizzo IP 193.206.84.112, il nostro client, lo chiedeal nostro DNS, che lo chiede a quello di in-addr.arpa, che ci risponde di chiederlo al DNS di193.in-addr.arpa, che a sua volte ci risponde di chiederlo al DNS di 206.193.in-addr.arpa, che alla fine ci chiede di chiederlo al DNS di 84.206.193.in-addr.arpa che ci risponde condns2.lnf.infn.it e la ricerca e’ terminata e messa nella cache del nostro DNS.

Page 28: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

itarpa

libero

pcd dhcp dns1 dns2www

….

….in-addr ….infn

lnf ….

pce dhcp dns1 dns2www

Domini 1 livello (top-level)

Root “name” serversDominio . .

0 1 …. 193 …. 255

0 1 …. 206 …. 255

0 1 …. 84 …. 255

0 1 …. 112 …. 255

Domini 2 livello

Domini 3 livello

Domini 4 livello

Domini 5 livello

Domini 6 livello

193.206.84.112

Perche’ gli ottetti sono invertiti rispetto all’indirizzo IP ?-perche’ il valore 112 e’ il meno significativo per un indirizzo IP (e quindi nel caso del nome deve essere il primo)-perche’ normalmente le reti (Classi A,B,C,D,E) vengono suddivise e date in gestione e facendo in questo modo ognuno puo’ gestire la propria parte di reverse, il proprietario della rete 193.206.84.x gestisce la sua reverse e non e’ ARPA a farlo

112.84.206.193.in-addr.arpa ovvero

dns2.lnf.infn.it

Radice

Page 29: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

Ma quali tipi di record sono contenuti in un DNS ?- SOA (Start Of Authority) indica la zona di autorita’ del DNS e l’indirizzo

email del Responsabile (non si usa la @), ogni zona DEVE avere un record SOA (all’inizio)

- NS (Name Server) indica i DNS server per la zona (subito dopo il SOA)

- MX (Mail Exchange) indica i server di posta SMTP (zona diretta)- A (Address) effettua il mapping da nome ad indirizzo (zona diretta)- PTR (Pointer) effettua il mapping da indirizzo a nome (zona inversa)- CNAME (Canonical Name) indica un alias di un nome (zona diretta)- TXT (Text) da delle informazioni aggiuntive (zona diretta, non viene

piu’ usato per motivi di sicurezza)- ORIGIN indica la parte da aggiungere ai non FQDN (Fully Qualified

Domain Name) in un file di zona

Page 30: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

Il record SOA contiene al suo interno altri record importantissimi per il funzionamento del DNS, i tempi sono espressi in secondi a meno di aggiungere al valore una M (minuti), H (ore), D (day) e W (settimane)- Serial AAAAMMDDXX per esempio Serial 2005092101

indica quando e’ stata effettuata l’ultima modifica e va incrementato ogni volta che si modifica un qualsiasi dato di una zona DNS

- Refresh xxxxx (10800, 3 ore per default)indica ogni quanti secondi il DNS Secondario deve controllare che la sua copia sia accurata

- Retry xxxxx (7200, 2 ore per default)se il DNS Secondario non riesce ad ottenere una copia dal Primario, riprovera’ dopo xxxxx secondi

- Expire xxxxx (604800, 1 settimana per default)se il DNS Secondario non riesce a contattare il Primario, dopo xxxxx secondi smette di dare informazioni sulla zona (dominio)

- Minimum xxxxx (86400, 1 giorno per default)e’ un parametro globale (ma puo’ essere modificato per ogni singolo record) che indica per quanti xxxxx secondi l’informazione vale

Page 31: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

Tools per la verifica di un DNS server: nslookup e dig sono i comandi che si possonousare per effettuare delle richieste ai DNS server di tutto il mondo (non solo a quellolocale che normalmente e’ il default).Scrivendo nslookup FQDN si ricevera’ la traduzione da nome ad indirizzo (diretta)mentre scrivendo nslookup indirizzo IP si ricevera’ la traduzione da indirizzo a nome(inversa).Scrivendo nslookup soltanto, si entrera’ in una modalita’ interattiva che cipermettera’ di:- cambiare NS a cui effettuare le richieste (e’ temporanea) con il comando: server

xxx.xxx.xxx.xxx- effettuare richieste particolari usando il comando: set querytype=x

(con x=A/PTR/NS/MX/SOA)Vediamo invece il comando dig, non permette query su indirizzi IP standard,ma nel formato inverso xxx.xxx.xxx.xxx.in-addr.arpa- con dig FQDN, cerchera’ informazioni di tipo A sul nome di dominio- con dig xxx.xxx.xxx.xxx.in-addr.arpa cerchera’ informazioni di tipo PTR- con dig x querytype, riceveremo informazioni del tipo querytype (A/PTR/NS/MX/SOA)

Page 32: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

Il software usato per implementare un DNS Serverin ambiente Linux in questo Stage e’ l’ISC DNSServer (Bind)

Si puo’ scaricare da http://www.isc.org- e’ gratuito- e’ tenuto continuamente aggiornato- e’ molto stabile- e’ quello usato in tutte le distribuzioni Linux

Page 33: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

DNS Server runnante come utente root

Passi necessari per l’installazione di un DNS server:- Scaricare il pacchetto software DNS server dal sito http://www.isc.org- Installare il pacchetto

tar –xvzf bind-9.3.1.tar.gz./configuremakemake install

- Configurare il DNS servermodificare il file /etc/named.confcreare i files per le zone diretta ed inversa in /var/named

- Attivare il DNS server/etc/init.d/named start

- Modificare /etc/resolv.conf- Testare il funzionamento guardando i log di sistema

tail –f /var/log/messages o more /var/log/messages- Usare tools come nslookup e dig per verificare la funzionalita’- Attivare named come servizio partente al riavvio della macchina

chkconfig --add namedchkconfig --level 35 named on

Page 34: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

DNS Server runnante come named in ambiente protetto (chroot)

Passi necessari per l’installazione di un DNS server:- Scaricare il pacchetto software DNS server dal sito http://www.isc.org- Installare il pacchetto

tar –xvzf bind-9.3.1.tar.gz./configuremakemake install

- Configurare il DNS servermodificare il file /etc/named.confcreare i files per le zone diretta ed inversa in

/var/named/chroot/var/named- Attivare il DNS server

/etc/init.d/named start- Modificare /etc/resolv.conf- Testare il funzionamento guardando i log di sistema

tail –f /var/log/messages o more /var/log/messages- Usare tools come nslookup e dig per verificare la funzionalita’- Attivare named come servizio partente al riavvio della macchina

chkconfig --add namedchkconfig --level 35 named on

Page 35: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

File /etc/name.confacl nome { indirizzoip1; indirizzoip2; ….}; definisce un nome al quale associare diversi numeri ip

options { definisce opzioni generalidirectory “pathcompleto”; definisce dove sono i files relativi alle zone (dirette ed inverse)pid-file “pathconomefile”; definisce il file che conterra’ il numero del processo del demone…..

};

zone “.” IN {type hint;file “nomefile”;

}; definisce il file dei root “name” server

zone “nomedominio” IN {type master|slave; definisce se il server e’ primario per questa zonamasters { nomeacl|indirizzi IP;}; definisce chi e’ il master di questa zona (usato se type slave)file “pathcompletoenomefile”; definisce il file dove ci sono i dati per questa zonaallow-query { none|any|nomeacl|indirizzi IP;}; definisce chi puo’ effettuare richieste per questa zonaallow-transfer { none|any|nomeacl|indirizzi IP;}; definisce chi puo’ trasferire la zona (normalmente slaves)allow-update { none|any|nomeacl|indirizzi IP;}; definisce chi puo’ aggiornare i dati per questa zona

};

logging { definisce le modalita’ di logging per categorie….};

Page 36: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

Esempio di zona diretta (da nome di dominio ad indirizzo)@ IN SOA lnfnet.lnf.infn.it. root.lnfnet.lnf.infn.it. (

2005091302; Serial86400 ; Refresh3600 ; Retry604800 ; Expire172800 ) ; Minimum TTL

IN NS lnfnet.lnf.infn.it. ; dichiarazione DNS server primarioIN NS dns2.lnf.infn.it. ; dichiarazione DNS server secondarioIN NS mvxrm1.roma1.infn.it. ; dichiarazione DNS server secondario

lnf.infn.it. IN MX 10 smtp1.lnf.infn.it. ; dichiarazione mail exchangerlnf.infn.it. IN MX 10 smtp2.lnf.infn.it. ; dichiarazione mail exchangerlnf.infn.it. IN MX 20 infngw.infn.it. ; dichiarazione mail exchanger$ORIGIN lnf.infn.it. ; definisce il dominio da aggiungere ai non FQDN

; (vale dalla riga successiva a quella di $ORIGIN)$TTL 172800 ; definisce il TTL (se non messo si usa quello del SOA)www 500 IN A 193.206.84.219 ; mappa piu’ indirizzi ip ad un solo nome usato per

500 IN A 193.206.84.220 ; load balancing tra due IP, definito un TTL di 500 secondi

lnfnet IN A 193.206.84.12 ; mappa il nome del DNS primario al suo indirizzo ipdns2 IN A 193.206.84.112 ; mappa il nome del DNS secondario al suo indirizzo ipafs1 IN A 193.206.84.121 ; mappa un nome ad un indirizzo ipntp1 IN CNAME afs1 ; definisce un alias ad afs1 con nome ntp1

Page 37: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

Esempio di zona inversa (da indirizzo a nome di dominio)@ IN SOA lnfnet.lnf.infn.it. root.lnfnet.lnf.infn.it. (

2005091302 ; Serial86400 ; Refresh3600 ; Retry604800 ; Expire172800 ) ; Minimum TTL

IN NS lnfnet.lnf.infn.it. ; dichiarazione DNS server primarioIN NS dns2.lnf.infn.it. ; dichiarazione DNS server secondarioIN NS mvxrm1.roma1.infn.it. ; dichiarazione DNS server secondario

$ORIGIN 84.206.193.in-addr.arpa. ; definisce il dominio da aggiungere; ai nomi non FQDN

12 IN PTR lnfnet.lnf.infn.it. ; mappa un indirizzo ip ad un nome112 IN PTR dns2.lnf.infn.it. ; mappa un indirizzo ip ad un nome121 IN PTR afs1.lnf.infn.it. ; mappa un indirizzo ip ad un nome219 IN PTR www1.lnf.infn.it. ; mappa un indirizzo ip ad un nome220 IN PTR www2.lnf.infn.it. ; mappa un indirizzo ip ad un nome

Per ogni record A nella zona diretta, DEVE esistere un record PTR nella zona inversa, i CNAME non necessitano di un PTR in quanto esiste gia un PTR del loro nome di dominio vero, i record NS e MX DEVONO avere un record A.

Page 38: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

DNS(Domain Name System)

Esercizio 1: Ogni studente deve installare un DNS Server Primario per il proprio dominio

“cognome.” (top level domain) e verificare che la risoluzione diretta ed inversa del proprio

dominio funzioni, inoltre verificare che funzioni anche la traduzione dei domini esistenti su

internet.

Verificare quale server e’ autoritativo per ogni dominio.

Esercizio 1a: Modificare la configurazione del DHCP Server precedentemente creato in

modo tale che ogni PC studente abbia indirizzo ip fisso (sempre lo stesso) e abbia come

DNS Server Primario il PC stesso.

Esercizio 2: Installare un solo DNS Server Secondario di tutti i domini precedentemente

creati e verificate che avvengono i trasferimenti di zona tra Master e Slave.

Esercizio 2a: Modificare la configurazione del DHCP Server precedentemente creato in

modo che, ogni PC studente abbia indirizzo ip fisso (sempre lo stesso) e abbia come DNS

Server Secondario quello appena realizzato.

Page 39: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Il World Wide Web (ragnatela mondiale, www o semplicemente web) e’ nato per semplificare lo scambio di informazioni e documenti scientifici al Cern di Ginevra.

Il web funziona con il meccanismo client-server, la parte client e’ il browser (Internet Explorer, Netscape, Mozilla, ecc.) disponibile per tutti i sistemi operativi presenti oggi (Windows, Linux, MacOs, Be Os, ecc.) che ha il compito di richiedere le informazioni ad un web server, mentre il serverha il compito di inviare le informazioni richieste ai client.

Appena ricevono le Informazioni, i browser le visualizzeranno in pagine indipendenti.

Le pagine web sono scritte nel linguaggio di formattazione HTML (Hyper Text Markup Language),che consente di creare pagine ipertestuali che qualsiasi server web puo’ distribuire e qualsiasibrowser puo’ visualizzare.

Il codice HTML contiene anche dei descrittori (tag) che consentono di indicare per esempio laformattazione del testo (dimensione, stile, posizionamento,ecc.) e la posizione di immagini, filmatie animazioni.

Una pagina web puo’ contenere collegamenti (link) ad altre pagine web, che possono risiedere anche su server diversi, possono essere incorporati nel testo od essere associati ad unaimmagine.

Page 40: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Questo e’ il concetto di ipertesto, ovvero e’ un testo che consente una lettura non linearedi un documento.Se in un testo che parla di motori c’è una informazione sulle case produttrici che liproducono, e a questa informazione è associato un link, basta fare clic sul link perandare ad una nuova pagina che parla di queste case, fermando la lettura della partededicata ai motori, alla quale si potrà tornare successivamente.Il sistema delle URL (Uniform Resource Locator) consente a tutte le informazioni diessere recuperate da quasi tutti i punti su Internet ed e’ stato creato per il web.La comunicazione tra browser (client web) e server web e’ il protocollo HTTP (Hyper TextTransfer Protocol) ed il modo piu’ comune per pubblicare informazioni attraverso la rete.Normalmente le informazioni pubblicate in questo modo sono rivolte a tutti gli utenti, nelsenso che non e’ richiesta nessun tipo di identificazione.Per offrire un servizio HTTP serve un programma in grado di gestirlo, di solito si tratta di un demone, che consente l’accesso ad una directory particolare (chiamata Document Root) e a quelle discendenti, si tratta di una directory personale degli utenti anonimi cheaccedono attraverso questo protocollo.

Page 41: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Anche dal lato client serve un programma in grado di gestire il protocollo HTTP, questo e’ il browser (o navigatore), che pero’ e’ in grado di servire anche altri protocolli, tipo FTP (File Transfer Protocol), HTTPS.L’integrazione di piu’ protocolli impone l’utilizzo di un sistema uniforme per indicare gli indirizzi, in modo tale dasapere subito in che modo effettuare un collegamento.Per questo quando si usa un navigatore si devono usare indirizzi espressi secondo il formato URI (UniformResource Identifier), mentre attualmente si usa ancora la vecchia definizione, cioe’ l’URL (Uniform ResourceLocator), che rappresenta un sottoinsieme dell’URI.Attraverso l’URI e’ possibile definire tutto quello che serve per raggiungere una risorsa: il protocollo da usare,l’indirizzo del nodo (host), la porta, ed il percorso, quindi

protocollo indirizzo_della_risorsa [dati aggiuntivi]Alcuni protocolli sono in grado di gestire dei dati aggiuntivi in coda all’indirizzo della risorsa, per esempio nelcaso dell’HTTP per effettuare richieste CGI o di percorsi aggiuntivi.Quando un URI comprende anche una stringa di richiesta (query) questa e’ indicata con un punto interrogativo (?):

protocollo indirizzo_della_risorsa?[richiesta]L’utilizzo di una stringa di richiesta, presume che la risorsa sia in grado di utilizzare l’informazione presente in talestringa:

http://www.brot.dg/cgi-bin/saluti.pl?buongiornoQuando l’indirizzo di una risorsa fa riferimento ad un programma, questo puo’ ricevere un informazione aggiuntivalegata ad un file o ad una directory particolare, questo si ottiene aggiungendo il percorso che identifica questo fileo questa directory:

http://www.brot.dg/cgi-bin/elabora.pl/archivio.docQuando si deve usare in un URI un simbolo non utilizzabile normalmente, si usa la notazione %hh, dovehh rappresenta una coppia di cifre esadecimali, a questa regola fa eccezione lo spazio che e’ rappresentato da un +, ma non in tutte le occasioni; per gli URI normali non c’e’ da preoccuparsi di questoproblema, che normalmente si presenta invece quando si costruiscono delle richieste.

Page 42: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

La tabella mostra l’elenco di alcune corrispondenze tra simboli particolari e la codifica alternativa utilizzabile negli URI:

Carattere Codifica Carattere Codifica

% %25 & %26

+ %2B / %2F

= %3D ~ %7E

Il funzionamento del protocollo HTTP e’ molto semplice e si compone di una serie di transazioni, ognuna delle quali si articola in queste fasi:

1. Apertura della connessione;2. Invio da parte del client di una richiesta;3. Risposta da parte del server;4. Chiusura della connessione.

In questo modo il server non deve tenere conto delle transazioni che iniziano e finiscono, ogni volta che unutente compie un azione attraverso il programma client (browser).

La richiesta inviata dal programma cliente deve contenere il metodo (i più comuni sono GET e POST),

l'indicazione della risorsa cui si vuole accedere, la versione del protocollo ed eventualmente l'indicazione dei tipi

di dati che possono essere gestiti dal programma cliente (si parla in questi casi di tipi MIME).

Il server HTTP risponde con una intestazione che indica in che modo l’informazione allegata va interpretata,

l’intestazione e’ staccata dall’intestazione attraverso una riga vuota, composta dalla sequenza <CR><LF>

(Carriage Return, Line Feed).

Page 43: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Vediamo come funziona una connessione HTTP, usiamo il comando telnet al posto del navigatore normale e supponiamo di collegarci al server www.brot.db, nel quale e’ installato e configurato il server web Apache (un comune web server), dal server vieneprelevato il file index.html, dalla directory Document Root

$ telnet www.brot.dg 80 [Invio]telnet risponde e si mette in attesa di una nostra richiesta:

Trying 192.168.1.1...Connected to www.brot.dg.Escape character is '^]'.

Si deve iniziare a scrivere, cominciando con una riga contenente il metodo, la risorsa e laversione del protocollo, continuando con una riga contenente le possibilità di visualizzazione del cliente (i tipi MIME):

GET /index.html HTTP/1.0 [Invio]Accept: text/html [Invio][Invio]

L’ultima riga vuota indica al server che la richiesta e’ finita e che va quindi evasa.

Page 44: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

HTTP/1.1 200 OKDate: Tue, 27 Jan 1998 17:44:46 GMTServer: Apache/1.2.4Last-Modified: Tue, 30 Dec 1997 21:07:24 GMTETag: "6b003-792-34a9628c"Content-Length: 1938Accept-Ranges: bytesConnection: closeContent-Type: text/html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML><HEAD><TITLE>Test Page for Linux's Apache Installation</TITLE></HEAD><!-- Background white, links blue (unvisited), navy (visited), red (active) --><BODY BGCOLOR="#FFFFFF“ TEXT="#000000“ LINK="#0000FF“ VLINK="#000080“ ALINK="#FF0000“><H1 ALIGN="CENTER">It Worked!</H1><P>If you can see this, it means that the installation of the<A HREF=http://www.apache.org/>Apache</A>software on this Linux system was successful. You may now add content to this directory and replace this page.</P>…...</BODY></HTML>Connection closed by foreign host.

Page 45: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Come già accennato, il messaggio restituito dal servente è composto da un'intestazione (header) in cui l'informazione più importante è il tipo di messaggio allegato (MIME), cioèin questo caso Content-Type: text/html, seguita da una riga vuota e quindi dall'oggetto richiesto,cioè il file index.html.Al termine della ricezione dell'oggetto richiesto, la connessione ha termine, lo si nota dalmessaggio dato da telnet: Connection closed by foreign host.Il lavoro di un programma cliente è tutto qui: inviare richieste al servente HTTP, ricevere lerisposte e gestire i dati, possibilmente visualizzandoli o mettendo comunque l'utente in grado di fruirne.Cerchiamo ora di capire cosa sono i tipi MIME: il MIME (Multipurpose Internet Mail Extensions) e’ una codifica standard per definire il trasferimento di documenti multimedialiattraverso la rete, e’ nato con la necessita’ di allegare documenti nei messaggi di postaelettronica, come l’acronimo lascia intendere.Il protocollo HTTP utilizza lo stesso metodo per indicare al client il tipo di documento che gli sta inviando, ed il client quando effettua una richiesta informa il server su quali tipi MIME sa gestire. Ma come fa il server HTTP a riconoscere la natura di un oggetto ?Questo grazie all’estensione dei file, quindi per ogni tipo MIME utilizzato nel protocolloHTTP c’e’ una associazione tipo MIME, e l’estensione relativa.

Page 46: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Tipo MIME Estensioni Descrizione

application/postscript ps eps Documento PostScript

application/rtf rtf Documento Rich Text

application/x-tex tex Documento Tex/Latex

audio/basic au snd File Audio

audio/x-wav wav File Audio

image/gif gif Immagine Gif

image/jpeg jpeg jpg Immagine Jpeg

image/tiff tiff Immagine Tiff

text/html html htm Documento Html

text/plain txt Documento Testo

video/mpeg mpeg mpg mpe Animazione Mpeg

video/quicktime qt mov Animazione QuickTime

Esempi di tipi MIME

Page 47: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Le risposte del server HTTP abbiamo visto che si compongono di una intestazione seguita da un eventuale allegato, che costituisce la risorsa alla quale voleva accedere il client.L’intestazione e’ separatadall’allegato da una riga vuota.La prima riga dell’intestazione e’ costituita dal codice di stato della risposta, nella migliore delle ipotesidovrebbe presentarsi nel seguente modo:

HTTP/1.0 200 OK

Comunque ci sono anche altri codici di ritorno, ecco i piu’ frequenti:

Codice Descrizione Codice Descrizione

200 OK 400 Richiesta errata

201 Creato 401 Non autorizzato

202 Accettato 403 Proibito

204 Nessun Contenuto 404 Non trovato

300 Scelte Multiple 500 Errore interno al server

301 Spostato in modo permanente 501 Servizio non realizzato (non disponibile)

302 Spostato temporaneamente 502 Gateway errato

304 Non modificato 503 Servizio non disponibile

Page 48: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Il software usato per implementare un Web Server in ambiente Linux inquesto Stage e’ l’Apache v.2.0 della Apache Software Foundation

Si puo’ scaricare da http://www.apache.org- e’ gratuito- e’ tenuto continuamente aggiornato- e’ molto stabile- e’ il web server piu’ usato al mondo, IBM, HP, ed altre societa’ ne

hanno uno loro basato su Apache e poi personalizzato- possibilita’ di avere piu’ virtual host sullo stesso server- possibilita’ di avere moduli aggiuntivi a quelli basi per vari tipi di

autenticazione (mysql, postgres, oracle) , di crittografazione (ssl), di aggiungere estensioni (php, java), ecc.

- la porta standard di risposta e’ 80 ed usa protocollo TCP

Page 49: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Passi necessari per l’installazione di un Web server:- Scaricare il pacchetto software Web server dal sito http://www.apache.org- Installarlo

tar –xvzf apache-2.0.54.tar.gz./configuremakemake install

- Configurarlomodificare il file /etc/httpd/conf/httpd.confeventualmente aggiungere dei tipi MIME in

/etc/httpd/conf/mime.types- Attivare il Web server

/etc/init.d/httpd start- Testare il funzionamento guardando i log in /etc/httpd/logs/error.log|access.log- Usare un browser per la verifica- Attivarlo come servizio partente al riavvio della macchina

chkconfig --add httpdchkconfig --level 35 httpd on

Page 50: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Esaminiamo il file di configurazione /etc/httpd/conf/httpd.conf della versione 1.3:

ServerType standalone|inetd ;modalita’ di funzionamento del server, standalone e’ la migliore

Port porta ;porta che usa il web server

Listen indirizzoip:porta ;(se si usa anche https Ie righe listen sono due, 80 e 443)

User nomeutente ; indicano utente e gruppo che eseguira’ il serverGroup nomegruppo

ServerAdmin emailaddress ; indica l’email da usare per riportate errori o problemi

DocumentRoot “pathcompleto” ; indica la directory che conterra’ le pagine web

<Directory pathcompleto> ; consente di specificare per una directory (e tutte quelle sottostanti) delleOptions opzioni ; delle caratteristiche particolari (tipo seguire i link Unix) deve esistere unaAllowOverride opzioni ; <Directory> per la DocumentRoot

Order Deny,Allow ; controlla chi puo’ accedere a questa directoryAllow from all ; tutti possono accedere a questa directoryDeny from all ; nessuno puo’ accedere a questa directory

</Directory>

DirectoryIndex file1.est file2.est ; indica il file da cercare e da visualizzare per default, e’ la pagina principale

Alias /nome “pathcompleto” ; indica un alias ad una directory, se il nome finisce con / allora nella URL di ; richiesta deve esserci lo / alla fine, altrimenti non funzionera’

ScriptAlias /nome “pathcompleto” ; indica un alias ad una directory che conterra’ scripts cgi,shell

ErrorLog pathcompletoenomefile ; indica il file dove saranno scritti eventuali errori riportati dal serverCustomLog pathcompletoenomefile ; indica il file dove saranno scritti tutti gli accessi al server

Page 51: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Esaminiamo il file di configurazione /etc/httpd/conf/httpd.conf della versione 2.0:

Listen indirizzoip:porta ;(se si usa anche https Ie righe listen sono due, 80 e 443)

User nomeutente ; indicano utente e gruppo che eseguira’ il serverGroup nomegruppo

ServerAdmin emailaddress ; indica l’email da usare per riportate errori o problemi

DocumentRoot “pathcompleto” ; indica la directory che conterra’ le pagine web

<Directory pathcompleto> ; consente di specificare per una directory (e tutte quelle sottostanti) delleOptions opzioni ; delle caratteristiche particolari (tipo seguire i link Unix) deve esistere unaAllowOverride opzioni ; <Directory> per la DocumentRoot

Order Deny,Allow ; controlla chi puo’ accedere a questa directoryAllow from all ; tutti possono accedere a questa directoryDeny from all ; nessuno puo’ accedere a questa directory

</Directory>

DirectoryIndex file1.est file2.est ; indica il file da cercare e da visualizzare per default, e’ la pagina principale

Alias /nome “pathcompleto” ; indica un alias ad una directory, se il nome finisce con / allora nella URL di ; richiesta deve esserci lo / alla fine, altrimenti non funzionera’

ScriptAlias /nome “pathcompleto” ; indica un alias ad una directory che conterra’ scripts cgi,shell

ErrorLog pathcompletoenomefile ; indica il file dove saranno scritti eventuali errori riportati dal serverCustomLog pathcompletoenomefile ; indica il file dove saranno scritti tutti gli accessi al server

Page 52: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Gli esempi precedenti riguardano la configurazione di un web server normale, un web server che gestisce un solosito web, ma se volessimo gestire “n” siti web con lo stesso web server ? Vediamo cosa c’e’ da aggiungere allaconfigurazione base del file /etc/httpd/conf/httpd.conf, valida sia per v.1.3 che per v.2.0 di apache

NameVirtualHost indirizzoip ; indica l’indirizzo IP del server, che rispondera’ a piu’ web server

<VirtualHost indirizzoipNVH>ServerName FQDNdelwebserver1 ; indica il nome di dominio del sito webServerAdmin emailaddress

DocumentRoot pathcompleto

<Directory pathcompletoDR>Options opzioniAllowOverride opzioni

Order Deny,AllowAllow from all | Deny from all

</Directory>

ErrorLog pathcompletoenomefileCustomLog pathcompletoenomefile

</VirtualHost>

<VirtualHost indirizzoipNVH>ServerName FQDNdelwebserver2

…</VirtualHost>

Page 53: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

WWW(World Wide Web)

Esercizio 1: Ogni studente deve installare un web server sul proprio PC, che

risponda alla porta 80, verificare che viene visualizzata la pagina di default di apache.

Esercizio 1a: Sostituire la Document Root di default con /var/webserver e creare una

pagina web iniziale per il proprio sito web, inoltre registrare nel dns l’entry relativa a

www.<cognome>, verificare con il browser che andando sul sito

http://www.<cognome> risponda il proprio web server con la nuova pagina appena

creata

Esercizio 2: Ogni studente deve installare 3 web server (Virtual Host) sul proprio PC

ognuno con la propria Document Root, file di logs, rispondenti agli indirizzi

www1.<cognome> www2.<cognome> e www3.<cognome> e registrarli nel proprio

dns

Page 54: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

L’esigenza sempre maggiore di reperire informazioni via Internet (documenti scientifici, programmi, demodei giochi, drivers, ecc.) tramite i Browsers (Internet Explorer, Netscape, Mozilla, ecc.) fa crescerel’esigenza di aumentare la banda da parte di providers, istituzioni in generale, ma anche di piccole

societa’.Purtroppo fino a qualche hanno fa una linea di connessione ad Internet costava veramente tanto, inoltreci si accorgeva che all’interno di una stessa rete, piu’ persone accedevano alle stesse informazioni (siti)piu’ volte durante la stessa giornata, senza contare che le informazioni a volte rimanevano le stesse perdiversi giorni, ed ogni volta veniva sprecata della banda per scaricare sempre le stesse pagine, gli stessidocumenti, gli stessi drivers. E’ da questa esigenza che e’ nato il Proxy server, vediamo i vari tipi attualmente disponibili:- web (http) proxy, non e’ altro che un collezionatore di pagine web, immagini e di tutti i documenti

statici esportati usando i protocolli HTTP e su alcuni anche FTP, il suo funzionamento e’ veramente semplice, ad ogni richiesta il Proxy verifica se nella cache e’ gia presente il documento, in caso affermativo lo restituisce direttamente, altrimenti lo scarica dalla rete, e lo restituisce, tenendone copia nella Cache, i documenti vengono eliminati dalla Cache usando degli algoritmi che tengono conto dell’eta’, della dimensione e della storia di accesso. Due semplici algoritmi sono il LRU (Least Recently Used, il meno recentemente usato) e LFU (Least Frequently Used, il meno frequentemente usato). Alcuni di questi proxy possono effettuare filtering contains, ovvero bloccare l’accesso a determinati siti. Il proxy viene acceduto solo attraverso un browser.

- Socks proxy, e’ un intermediatore tra client e server, per qualsiasi connessione TCP, il proxy gestisce tutta la comunicazione tra client e server interponendosi nella connessione. Questo permette al proxy di poter gestire ogni tipo di applicazione TCP e UDP che lo supporta, quindi puo’ essere usato per leggere la posta, usare ICQ, Napster, Edonkey ecc. ecc. purtroppo per funzionare con alcune applicazioni ha bisogno di programmi aggiuntivi (i normali browser non gestiscono proxy di tipo socks)

Page 55: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

- CGI proxy, non e’ altro che un server web dal quale richiedere un altra pagina web, la pagina richiesta apparira’ con indirizzo http://cigproxyFQDN/http/sitowebrichiesto, logicamente puo’ essere usato solo tramite l’uso di un browser

Noi tratteremo solo il primo tipo (quello piu’ comunemente usato) ovvero il http proxy

Quali sono i vantaggi di usare un Http Proxy Server ?

- Tempi di risposta piu’ rapidi; se la pagina cercata e’ nella cache del Proxy Server, la risposta sara’ immediata (sicuramente molto piu’ rapida che scaricare dalla rete la stessa pagina)

- Risparmio di banda; vedremo successivamente delle statistiche che mostreranno come in un ambiente con centinaia di client quasi il 50% delle richieste e’ espletata dalla cache

- Possibilita’ di vietare l’accesso ad alcuni siti

- Possibilita’ di vietare l’accesso web ad alcuni utenti

- Sicurezza e rispetto della privacy, i proxy anonymous, distruggono tutte le informazioni riguardanti il tuo computer in modo tale che le tue informazioni non possono essere usate da hackers e spammers

Page 56: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

Gli Http Proxy Server hanno diversi livelli di anonimita’ e dipende dalla loro configurazione:

- Trasparente: questi proxy non sono anonimi, il server dice al sito web che viene usato un proxy, ma fornisce tutti i dati relativi al client (indirizzo IP, browser usato, ecc.)

- Anonima: questi proxy informano il sito web che viene usato un proxy, ma non forniscono I dati relativi al client

- Distorta: questi proxy informano il sito web che viene usato un proxy, ma forniscono un indirizzo IP fantasma, generato casualmente dal proxy server, oppure impostato dall’utente, in ogni caso non e’ l’indirizzo IP del client, che effettua la richiesta

- Alta Anonimita’: questi proxy non informano il sito web che viene usato un proxy e forniscono un IP fantasma generato casualmente dal proxy server, oppure impostato dall’utente, in ogni caso non e’ l’indirizzo IP del client, che effettua la richiesta

E’ possibile inoltre creare una struttura di Http Proxy Servers, in modo da avere una elevata affidabilita’ ed anche per suddividere il carico delle richieste, si avranno quindi Proxy parent e sibling ai quali richiedere lepagine mancanti nella nostra cache, il parent scarica anche le pagine che noi richiediamo non presenti

nellasua cache, mentre il sibling ci fornisce solo quelle che ha gia scaricato.I vari proxy server comunicano tra di loro usando il protocollo ICP (Internet Cache Protocol) via UDP.

Page 57: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

Cerchiamo di capire come funziona il proxy server nel dettaglio.Quando arriva una richiesta da parte del client (per esempio http://www.yahoo.it) il server cerca nella sua cache per vedere se ha la pagina richiestaa) se non ha la pagina, la scarica dal sito, la da al client e la copia in cacheb) se ha la pagina, vede se e’ ancora valida (TTL non scaduto)

1) se e’ valida la da al client2) se non e’ valida (TTL scaduto), richiede al server con un messaggio

IMS se e’ cambiataa) se e’ cambiata, sostituisce quella in cache e la restituisce al

clientb) se non e’ cambiata, aggiorna il TTL se viene impostato dal

server e la restituisce al clientc) Quando la cache disco e’ piena, vengono cancellatte tutte le pagine ritenute

vecchie e meno accedute.L’IMS e’ solo un messaggio di richiesta da parte del Proxy, per sapere dal sito sela pagina e’ cambiata, solo se e’ cambiata la scarica nuovamente.

Page 58: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

INTERNET

Proxy server Router/Gateway

Client 3Client 2Client 1

www.libero.it

www.yahoo.com

www.ferrari.it

www.microsoft.com

Richieste http/ftp/gopher

Schema funzionamento di un normale Http Proxy Server

Richieste http/ftp/gopher e IMS

Page 59: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

INTERNET

Proxy server 1

Router/Gateway

Client 3Client 2Client 1

www.libero.it

www.yahoo.com

www.ferrari.it

www.microsoft.com

Richieste http/ftp/gopher

Schema funzionamento in ridondanza degli Http Proxy Server tramite scriptnel webserver

Proxy server 2

Page 60: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

Esempio di configurazione con 2 proxy server, in affidabilita’ (anche se uno e’ sprecato perche’ non fa cache finche’ nonmuore il primo)

//// File: proxy.pac// Author: Claudio Soprano// Date: Sept 2005// Last Modification: 22-settembre-2005//// Description: Mozilla proxy auto configuration for LNF.//// The only function we need to define.//function FindProxyForURL( url, host ){ if (isPlainHostName(host)) return "DIRECT"; if (dnsDomainIs(host,".lnf.infn.it")) return "DIRECT"; if (url.substring(0,5)=="http:" || url.substring(0,4)=="ftp:" || url.substring(0,7)=="gopher:") { return "PROXY wwwcache1.lnf.infn.it:3128 ; PROXY wwwcache2.lnf.infn.it ; DIRECT"; }}

Page 61: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

INTERNET

Proxy server 1Domini pari

Router/Gateway

Client 3Client 2Client 1

www.libero.it

www.yahoo.com

www.ferrari.it

www.microsoft.com

Richieste http/ftp/gopher

Schema funzionamento in bilanciamento degli Http Proxy Server tramite script nel webserver

Proxy server 2Domini dispari

Page 62: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

Esempio di configurazione con 2 proxy server, domini pari sul primo e domini dispari sul secondo, in caso di fail di uno dei due proxy siva sull’altro

//// File: proxy.pac// Author: Massimo Pistoni - Sandro Angius - Claudio Soprano// Date: May 1996// Last Modification: 13-novembre-2000//// Description: Mozilla proxy auto configuration for LNF.//// The only function we need to define.//function FindProxyForURL( url, host ){ if (isPlainHostName(host)) return "DIRECT"; if (dnsDomainIs(host,".lnf.infn.it")) return "DIRECT"; if (url.substring(0,5)=="http:" || url.substring(0,4)=="ftp:" || url.substring(0,7)=="gopher:") {

ret = url.length; if ( (ret % 2) == 0 ) { return "PROXY wwwcache1.lnf.infn.it:3128 ; PROXY wwwcache2.lnf.infn.it ; DIRECT";

} else { return "PROXY wwwcache2.lnf.infn.it:3128 ; PROXY wwwcache1.lnf.infn.it ; DIRECT"; } } else return "DIRECT";}

Page 63: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

INTERNET

Proxy server Router/Gateway

Client 3Client 2Client 1

Proxy domini IT

Proxy domini COM

Proxy domini GOV

Proxy domini ORG

Proxy domini …

Richieste http/ftp/gopher

Schema funzionamento di un Http Proxy Server in modalita’ gerarchicautilizzando il protocollo ICP

Richieste domini ORG

Richieste domini GOV

Richieste domini COM

Richi

este

dom

ini I

T

Richieste domini …

ICP ICP

ICP

ICP

ICP

ICPICP

Page 64: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

INTERNET

Proxy server 1 Router/Gateway

Client 3Client 2Client 1

Proxy1 domini ITparent

Proxy2 domini ITparent

Proxy1 domini ORGparent

Proxy domini …

Richieste http/ftp/gopher

Differenza tra parente e sibling in una modalita’ gerarchica di Http Proxy

Richieste domini ORG

Richieste domini IT

Richieste domini …

ICP ICP

ICP

ICP

ICP

ICP

ICP

Proxy server 2sibling

ICP

ICP

sibling

Proxy2 domini ORGparent

ICP

siblin

g

Page 65: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

Richieste Accesso Proxy/Cache Servers (3) 2004Percentuale Minima di richieste in Cache 37%Percentuale Media di richieste in Cache 45%

Percentuale Massima di richieste in Cache 56%

0

1,000,000

2,000,000

3,000,000

4,000,000

5,000,000

6,000,000

7,000,000

Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

Anno 2004

Totale dal 1/2 al 31/12, 53 Milioni di richiesteIn Cache 25 Milioni di richieste

Non in Cache 28 Milioni di richieste

Ric

hie

ste

Me

ns

ili

Richieste Totali

In Cache

Non in Cache

Page 66: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

Accesso Proxy/Cache Servers (3) in GBPercentuale Minima risparmiata 6%Percentuale Media risparmiata 12%

Percentuale Massima risparmiata 15%

0.00

10.00

20.00

30.00

40.00

50.00

60.00

70.00

80.00

90.00

Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

Anno 2004

Totale dal 1/2 al 31/12 570,02 GBScaricati 502,32 GB

Risparmiati 67,70 GB

GB

Me

ns

ili GB Totali

GB Rispiarmiati

GB Scaricati

Page 67: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

Vediamo come funziona una connessione ad un Proxy Server da parte di un client, usiamo il comando telnet al posto del navigatore normale e supponiamo di collegarci alProxy server wwwcache1.lnf.infn.it, nel quale e’ installato e configurato il server proxy Squid, al server gli chiedamo di darci la pagina di yahoo

$ telnet wwwcache1.lnf.infn.it 3128[Invio]telnet risponde e si mette in attesa di una nostra richiesta:

Trying 193.206.84.219...Connected to www.lnf.infn.it.Escape character is '^]'.

Si deve iniziare a scrivere, cominciando con una riga contenente il metodo, la risorsa e laversione del protocollo, continuando con una riga contenente le possibilità di visualizzazione del cliente (i tipi MIME):

GET http://www.yahoo.com HTTP/1.0 [Invio]Accept: text/html [Invio][Invio]

L’ultima riga vuota indica al server che la richiesta e’ finita e che va quindi evasa.Otterremo come risposta la index pagina del sito www.yahoo.com

Page 68: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

Ecco le possibili risposte di SQUID (le trovate nei logs) i codici TCP si riferiscono alle richieste HTTP

sulla porta 3128, quelli UDP alle richieste ICP sulla porta 3130

TCP_MISS l’oggetto richiesto non e’ nella cache

TCP_HIT l’oggetto richiesto e’ nella cache

TCP_REFRESH_HIT l’oggetto richiesto era in cache ma scaduto, l’IMS indica che non e’ cambiato

TCP_REFRESH_MISS l’oggetto richiesto era in cache da molto tempo, l’IMS indica che l’oggetto e’

cambiato e quindi viene riscaricato

TCP_CLIENT_REFRESH_MISS il client ha specificato di non prenderlo dalla cache, l’oggetto viene riscaricato

TCP_IMS_HIT il client ha richiesto una riconferma per un oggetto che e’ in cache ed e’ valido

TCP_SWAPFAIL_MISS l’oggetto si credeva in cache, ma non era possibile accedere ad esso

TCP_MEM_HITl’oggetto richiesto era in cache in memoria, non viene letto dal disco

TCP_DENIED accesso negato per la richiesta

UDP_HIT l’oggetto richiesto era in cache

UDP_MISS l’oggetto richiesto non era in cache

UDP_DENIED accesso negato per questa richiesta

UDP_INVALID richiesta non valida ricevuta

Page 69: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

Il software usato per implementare un Http Proxy Server inambiente Linux in questo Stage e’ Squid

Si puo’ scaricare da http://www.squid-cache.org- e’ gratuito- e’ tenuto continuamente aggiornato- e’ molto stabile- e’ il proxy server di default su Linux- possibilita’ di limitare l’accesso al proxy solo ad alcuni domini o

ad alcuni utenti- possibilita’ di creare una struttura gerarchica- la porta standard di risposta e’ 3128 ed usa protocollo TCP

Page 70: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

Passi necessari per l’installazione di un Http Proxy server:- Scaricare il pacchetto software Http Proxy server dal sito

http://www.squid-cache.org- Installare il pacchetto

tar –xvzf squid-2.5.STABLE10.tar.gz./configuremakemake install

- Configurare il Proxy servermodificare il file /etc/squid/squid.conf

- Creare le directory di caching con il comando, va dato ogni volta che aumentiamo la dim. della cache/sbin/squid -z

- Attivare il Proxy server/etc/init.d/squid start

- Testare il funzionamento guardando i log in /var/log/squid- access.log (contiene gli accessi al proxy e se sono fatti in cache o meno)- store.log (contiene le informazioni su tutti gli oggetti che entrano, ed escono dalla cache)- cache.log (contiene gli errori che Squid genera)

- Usare un browser per la verifica, attivando l’uso di un proxy server- Attivarlo come servizio partente al riavvio della macchina

chkconfig --add squidchkconfig --level 35 squid on

Page 71: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

File di configurazione /etc/squid/squid.conf

http_port porta indica la porta TCP sulla quale il server accettera’ le richieste (default 3128)

cache_mem valore MB indica la quantita’ di RAM da riservare per la cache in memoria (default 8 MB)calcolare come valore max RAMPC/3

maximum_object_size valore KB indica la dimensione massima degli oggetti da salvare in cache (default 4096 KB)

minimum_object_size valore KB indica la dimensione minima degli oggetti da salvare in cache (default 0 KB)

cache_dir ufs pathcompleto dimensioneinMB level1directory level2directory indica dove risiedera’ la cache (default /var/spool/squid), la dimensione in MB di tutta la cache, il numero di directory per il level1 (default 16) e il numero di directory per il level2 (default 256)

cache_access_log pathcompletoenomefile indica dove sono scritti i log di accesso (default /var/log/squid/access.log)cache_log pathcompletoenomefile indica dove sono scritti i log di funzionamento (default /var/log/squid/cache.log)cache_store_log pathcompletoenomefile indica dove sono scritti i log con informazioni sulla cache, cosa e’ salvato nella cache, cosa viene rimosso (default /var/log/squid/cache.log)

ftp_user emailaddress indica l’email usato per accedere a ftp anonimi (default Squid@)ftp_passive on|off indica se usare la modalita’ passiva per ftp (default on)

Page 72: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

File di configurazione /etc/squid/squid.conf (continua)

acl nome tipo opzioni crea un acl, di un tipo

acl nome proxy_auth REQUIRED indica che ogni accesso al proxy deve essere autenticato con login e password

auth_param tipo program pathcompletoefile opzioni indica il tipo di metodo di autenticazione da usare, quindi il programma esterno da usare e le eventuali opzioni, i metodi diautenticazione vanno compilati a parte

acl nome src|srcdomain valore crea un acl (access-list) basandosi su IP o su dominio questa viene usata perdire chi avra’ accesso alla cache

http_access allow|deny acl indica chi avra’ accesso o meno alla cache (ci sono piu’ http_access, e quindi

importante la posizione, l’ultimo e’ un deny normalmente)

http_reply_access allow|deny acl indica chi otterra’ le risposte alle richieste (e’ complementare ahttp_access,l’ultimo e’ un deny normalmente)

cache_mgr emailaddress indica l’email dell’amministratore del proxy server

cache_effective_user nomeutente indica l’utente che eseguira’ il demonecache_effective_group nomegruppo indica il gruppo di appartenenza del demone

Page 73: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

File di configurazione /etc/squid/squid.conf (continua)

visible_hostname FQDN indica il nome FQDN che apparira’ nei log (default e’ hostname)unique_hostname FQDN indica il nome FQDN unico del Proxy Server (ognuno ha il suo)

logfile_rotate valore indica il numero di logfile da creare quando si usa (squid –k rotate)

append_domain .domain indica il dominio da aggiungere ad hostname senza dominio

cachemgr_passwd passwordshutdown shutdown indica la password per effettuare lo shutdown del server via managercachemgr_passwd passwordconfig config indica la password per vedere lo stato del server via manager

cache_peer FQDN|IP parent|sibling http_port udp_port opzioniindica da quale altro proxy server prendere le informazioni, parent indica un proxy server che puo’ scaricare oggetti per

noi,sibling indica un proxy server che non puo’ scaricare per noi, nelle opzioni troviamo proxy-only, che indica che il nostro proxy non copiara’ nella cache gli oggetti ricevuti da un’altro proxy parent o sibling che sia

cache_peer_domain FQDN|IP .dominio1 .dominion !.dominio1 !.dominionindica per quali domini chiedere o non chiedere ad un altro proxy (parent o sibling, esempio .it !.com)

Page 74: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

HTTP Proxy

Esercitazione 1: ogni studente deve installare e configurare un Proxy server sul proprio

PC, configurare il browser per usarlo e verificare il suo funzionamento

Esercitazione 2: modificare apache in modo che sia possibile usare il cache-manager via

Web, per vedere le statistiche di accesso del nostro Proxy server

Esercitazione 3: creare una gerarchia divisa a Top Level Domain tra i Proxy servers

appena installati, in modo tale che ogni Proxy server chiede agli altri le pagine a seconda

del dominio richiesto

Page 75: Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati 21-22-23 Settembre 2005 Tutor: Claudio.

FINE

Domande ?