La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati Giugno 2008 Tutor: Claudio Soprano.

Presentazioni simili


Presentazione sul tema: "Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati Giugno 2008 Tutor: Claudio Soprano."— Transcript della presentazione:

1 Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati Giugno 2008 Tutor: Claudio Soprano Servizio di Calcolo Email: claudio.soprano@lnf.infn.itclaudio.soprano@lnf.infn.it

2 Argomenti trattati Introduzione alle reti Dhcp server Dns server Web server Proxy server

3 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 luso di protocolli di comunicazione, che definiscono un insieme di regole di funzionamento. Ogni nodo per parlare con gli altri deve quindi conoscere i protocolli di comunicazione usati dagli altri nodi. I protocolli di comunicazione usati in tutto il mondo per far comunicare i nodi presenti in una rete (Locale, Metropolitana, Estesa, Mondiale) sono inclusi nella suite dei Protocolli Internet. LIP (Internet Protocol) fa parte di questa suite.

4 Introduzione alle reti Rappresentazione dei Protocolli Internet nella pila OSI: Pila OSIProtocolli 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

5 Introduzione alle reti LIP e un protocollo di comunicazione che definisce che ogni nodo di una rete deve avere un indirizzo unico, chiamato indirizzo IP e deve essere diverso da quello di un altro nodo presente sulla stessa rete. LAN 193.206.80.40193.206.80.50193.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 allinterno di una stessa LAN). X.X.X.X

6 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 linterfaccia 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/annunciate su Internet

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

8 Introduzione alle reti Rete Lan (Local Area Network) Man (Metropolitan Area Network) Wan (Wide Area Network)

9 Differenze tra Unix (Linux) e Windows Il sistema operativo basato su codice sorgente UNIX che è più conosciuto tra gli utenti informatici è sicuramente Linux, che si distingue dal cugino Windows per diverse e importanti caratteristiche: È case sensitive È più macchinoso in quanto è stato progettato per operare con la riga di comando Il suo codice è opensource, quindi verificabile e modificabile da chiunque oppure E free (gratis)

10 Linux – Comandi base 1/2 Sintassi: comando opzioni parametri ls –l path# Esegue il listing di una directory pwd# Mostra il path/percorso corrente cd path/nomedir # Cambia la directory corrente mkdir path/nomedir# Crea una directory touch path/nomefile# Crea un file vuoto cat path/nomefile# Stampa su schermo il contenuto del file more path/nomefile# Stampa su schermo il contenuto del file a pagine vi path/nomefile# Modifica il contenuto di un file rm path/nomefile# Cancella il file cp path/nomesrc path/nomedest # Copia il file nomesrc in nomedest mv path/nomesrc path/nomedest # Sposta il file nomesrc in nomedest man nomecomando# Visualizza il manuale del comando

11 Linux – Comandi base 2/2 Comandi utili per la diagnostica di rete: netconfig# Permette la configurazione della rete ifconfig -a# Mostra le info di tutte le schede di rete ifconfig ethx down/up# Spegne/Accende la scheda di rete netstat # Comando si statistiche di rete netstat –rn# Mostra tabella di routing netstat –an# Mostra elenco delle porte in ascolto e delle connessioni attive ping indirizzo-ip/nome-ip# Verifica la funzionalita di rete tra noi ed indirizzo-ip (senza firewall presenti) nslookup nome-ip/indirizzo-ip# Traduce da nome-ip ad indirizzo ip e viceversa traceroute indirizzo-ip/nome-ip # Mostra tutti i routers attraversati per arrivare a indirizzo-ip/nome-ip (senza firewall presenti) dig# Successore di nslookup telnet indirizzo-ip/nome-ip porta# Apre una connessione verso indirizzo-ip sulla porta specificata

12 Windows – Comandi di rete Elenco dei comandi disponibili in Windows dal prompt dei comandi: ipconfig# Mostra informazioni sulla rete ipconfig /all# Mostra informazioni su tutte le schede rete netstat # Comando si statistiche di rete netstat –rn# Mostra tabella di routing netstat –an# Mostra elenco delle porte in ascolto e delle connessioni attive ping indirizzo-ip/nome-ip# Verifica la funzionalita di rete tra noi ed indirizzo-ip (senza firewall presenti) nslookup nome-ip/indirizzo-ip# Traduce da nome-ip ad indirizzo ip tracert indirizzo-ip/nome-ip # Mostra tutti i routers attraversati per arrivare a indirizzo-ip/nome-ip (senza firewall presenti) telnet indirizzo-ip/nome-ip porta# Apre una connessione verso indirizzo-ip sulla porta specificata

13 Linux – Struttura del file system In Linux non esistono drive/unita (C: D:, ecc.) ma devices e si trovano nella directory /dev, ununita esterna (pennetta usb) per poter funzionare deve essere montata su una directory. A quel punto e accessibile dallutente come una qualsiasi altra directory, specificando il path completo (/mnt/pennetta per esempio).

14 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

15 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 dallAmministratore di Rete. Solo i client con il Mac Address allinterno della lista specificata otterranno un indirizzo IP Quindi 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 dallAmministratore 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 dallAmministratore 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 lunica modalita che permette di riassegnare un indirizzo IP non piu usato da un client ad un altro che ne fa richiesta.

16 DHCP (Dynamic Host Configuration Protocol) RETE LOCALE (LAN) Client 1Client 2 Dhcp Server DHCP DISCOVER Client n DHCP DISCOVER 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 DHCP DISCOVER

17 DHCP (Dynamic Host Configuration Protocol) Client 1Client 2 Dhcp Server Client n DHCP OFFER Fase 2 (DHCP Offer): Ogni DHCP Server risponde soltanto al Client 1 offrendogli un indirizzo IP, netmask, lindirizzo 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 Dhcp Server DHCP OFFER RETE LOCALE (LAN)

18 DHCP (Dynamic Host Configuration Protocol) Client 1Client 2 Dhcp Server DHCP REQUEST Client n DHCP REQUEST Fase 3 (DHCP Request): Il Client 1 accetta la prima offerta che gli arriva da un DHCP Server, verifica che lIP ricevuto e valido, in caso affermativo avvisera quel server che accetta i parametri di rete ricevuti precedentemente, se lIP ricevuto non e valido mandera un (DHCP Decline) al DHCP Server informandolo che non lo puo accettare. Dhcp Server RETE LOCALE (LAN)

19 DHCP (Dynamic Host Configuration Protocol) Client 1Client 2 Dhcp Server Client n DHCP ACK Fase 4 (DHCP ACK): Il DHCP Server rispondera al client dicendogli che gli ha riservato lIP e gli mandera tutti i dati di configurazione che lAmministratore di Rete ha inserito nel DHCP Server, inoltre scrivera i dati del client in un suo database (leases file).Se dovesse aver gia assegnato lIP 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 Dhcp Server RETE LOCALE (LAN)

20 DHCP (Dynamic Host Configuration Protocol) Client 1Client 2 Dhcp Server DHCP RELEASE Client n DHCP RELEASE Fase 5 (DHCP Release): Quando il Client 1 viene spento (procedura di Shutdown normale) questo informera il DHCP Server del rilascio dellindirizzo 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

21 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 laffidabilita 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 allAmministratore di Rete

22 DHCP (Dynamic Host Configuration Protocol) Il software usato per implementare un DHCP Server in ambiente Linux in questo Stage e lISC DHCP Server Si puo scaricare da http://www.isc.orghttp://www.isc.org - e gratuito - e tenuto continuamente aggiornato - e molto stabile

23 DHCP (Dynamic Host Configuration Protocol) Passi necessari per linstallazione di un DHCP server: - Scaricare il pacchetto software DHCP server dal sito http://www.isc.org - Installare il pacchetto tar –xvzf dhcp-3.0.5.tar.gz cd dhcp-3.0.5./configure make make install - Configurare il DHCP server modificare il file /etc/dhcpd.conf - Attivare il DHCP server /etc/init.d/dhcpd start - Testare il funzionamento guardando i log di sistema tail –f /var/log/messages o more /var/log/messages - Verificare la presenza del database dei client connessi more /var/lib/dhcp/dhcpd.leases - Attivare il dhcp come servizio partente al riavvio della macchina chkconfig --add dhcpd chkconfig --level 35 dhcpd on

24 DHCP (Dynamic Host Configuration Protocol) File di configurazione /etc/dhcpd.conf default-lease-time nnn; specifica la validita di default dei dati in secondi max-lease-time nnn; specifica la validita massima dei dati in secondi use-host-decl-names on;indica di assegnare come nome ip il nome indicato option host-name nome;specifica il nome ip da assegnare al client option domain-name nomedominio;specifica il dominio da assegnare ai client option domain-name-servers ipserver1,ipserver2…; specifica gli indirizzi IP dei server dns option subnet-mask xxx.xxx.xxx.xxx; specifica la network mask option routers iprouter1,iprouter2….; specifica gli indirizzi IP dei router/gateway option 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

25 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 registrati allow 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 sullinterfaccia di rete per funzionare group {definisce un gruppo di regole valide per i client definiti allinterno del gruppo …. } host nomeclient {definisce i dati di un client hardware ethernet xx:xx:xx:xx:xx:xx;definisce il Mac-Address del client che effettuera la richiesta fixed-address xxx.xxx.xxx.xxx;definisce lindirizzo/nome IP da assegnare staticamente }al client, nomeclient puo essere un nome fittizio per comodita si usa lo stesso nome del client

26 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 lindirizzo 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

27 DNS (Domain Name System) In una rete molto estesa con molti nodi (PC, server, stampanti, router, switch) ricordare a memoria 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 distribuito gerarchicamente 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 per organizzazioni senza scopo di lucro, MIL per istituzioni militari, GOV per istituzioni governative, EDU per istituzioni educazionali (come universita), COM e NET usate principalmente per scopi commerciali, inoltre ogni tanto ne vengono aggiungono altri. Ognuno di questi domini principali e poi suddiviso in altri domini (di secondo livello) che a seconda della 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 dellalbero. 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.

28 DNS (Domain Name System) itcomedu 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 dellalbero 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. Lultimo 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 qualcunaltro (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 servers Dominio. Radice

29 DNS (Domain Name System) Ogni dominio deve avere almeno due DNS Server per funzionare, uno Primario (master) ed uno Secondario (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 Secondari verrano 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 le informazioni del dominio infn.it ma non sa chi detiene le informazioni per il dominio lnf.infn.it I 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 non autoritativi 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 appartenenza www.lnf.infn.itwww.lnf.infn.it e un FQDN, www.libero.it e un FQDN, www non e un FQDN.www.libero.it Il DNS server usa il protocollo UDP ed ascolta sulla porta 53 per le richieste da parte dei client (che usano invece una porta alta, sulla quale rispondera il DNS), usa invece protocollo TCP e porta 53 per I trasferimenti di zona con i DNS Secondari.

30 DNS (Domain Name System). Root name server it name server infn.it name server lnf.infn.it name server name server Client resolver www.lnf.infn.itwww.lnf.infn.it A ? itfres infnvirgilio roma1milnf www.lnf.infn.itwww.lnf.infn.it A ? Chiedi al NS it www.lnf.infn.itwww.lnf.infn.it A ? Chiedi al NS infn.it www.lnf.infn.itwww.lnf.infn.it A ? Chiedi al NS lnf.infn.it www.lnf.infn.itwww.lnf.infn.it A ? 193.206.84.220 Salva in cache 1 2 3 4 5 6 7 8 9 A B Cancella dalla cache (TTL) C Come si puo notare la traduzione di un FQDN (www.lnf.infn.it) ad indirizzo IP avviene partendo da destrawww.lnf.infn.it (il. e implicito) e a mano mano andando a sinistra (poi it poi infn poi lnf) fino ad arrivare allultimo nameserver.

31 DNS (Domain Name System) INTERNET DNS Primario Router/Gateway Client 3Client 2 dns.libero.it dns.yahoo.com dns.virgilio.it dns.microsoft.com … Richieste dns Client 1 DNS Secondario Richieste dns Collocazione dei DNS Server Primari e Secondari

32 DNS (Domain Name System) Quando arriva una richiesta di traduzione da nome ad indirizzo o viceversa, il DNS server 1. se riguarda una delle proprie zone di autorita esegue direttamente la traduzione e restituisce il dato richiesto 2. 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 linformazione 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)

33 DNS (Domain Name System) Finora abbiamo visto esempi di come trovare un indirizzo dato un nome ed abbiamo visto che 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 metodo anche per i numeri, creando un dominio chiamato in-addr.arpa (in-addr sta per Internet Address) che copre lintero indirizzamento IP. Al suo interno ci sono 256 sottodomini (da 0 a 255) per esempio 193.in-addr.arpa, e dentro ognuno di loro altri 256 domini (da 0 a 255) per esempio 203.193.in-addr.arpa, ancora allinterno 256 domini (da 0 a 255) per esempio 84.203.193.in-addr.arpa ed infine allinterno gli ultimi 256 domini (da 0 a 255) e finalmente 112.84.203.193.in-addr.arpa, che corrisponde 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 dellindirizzo IP 193.206.84.112, il nostro client, lo chiede al nostro DNS, che lo chiede a quello di in-addr.arpa, che ci risponde di chiederlo al DNS di 193.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 con dns2.lnf.infn.it e la ricerca e terminata e messa nella cache del nostro DNS.

34 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 servers Dominio.. 01….193….255 01….206….255 01….84….255 01….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 allindirizzo 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

35 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 lindirizzo email del Responsabile (non si usa la @), ogni zona DEVE avere un record SOA (allinizio) - 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

36 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 lultima 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 linformazione vale

37 DNS (Domain Name System) Tools per la verifica di un DNS server: nslookup e dig sono i comandi che si possono usare per effettuare delle richieste ai DNS server di tutto il mondo (non solo a quello locale 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 ci permettera 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)

38 DNS (Domain Name System) Il software usato per implementare un DNS Server in ambiente Linux in questo Stage e lISC DNS Server (Bind) Si puo scaricare da http://www.isc.orghttp://www.isc.org - e gratuito - e tenuto continuamente aggiornato - e molto stabile - e quello usato in tutte le distribuzioni Linux

39 DNS (Domain Name System) DNS Server runnante come utente root Passi necessari per linstallazione 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 cd bind-9.3.1./configure make make install - Configurare il DNS server modificare il file /etc/named.conf creare 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 named chkconfig --level 35 named on

40 DNS (Domain Name System) DNS Server runnante come named in ambiente protetto (chroot) Passi necessari per linstallazione 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 cd bind-9.3.1./configure make make install - Configurare il DNS server modificare il file /etc/named.conf creare 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 named chkconfig --level 35 named on

41 DNS (Domain Name System) File /etc/named.conf acl nome { indirizzoip1; indirizzoip2; ….}; definisce un nome al quale associare diversi numeri ip options { definisce opzioni generali directory 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 zona masters { 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 zona allow-query { none|any|nomeacl|indirizzi IP;}; definisce chi puo effettuare richieste per questa zona allow-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 …. };

42 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; Serial 86400; Refresh 3600; Retry 604800; Expire 172800 ); Minimum TTL IN NS lnfnet.lnf.infn.it.; dichiarazione DNS server primario IN NS dns2.lnf.infn.it.; dichiarazione DNS server secondario lnf.infn.it.IN MX 10 smtp1.lnf.infn.it.; dichiarazione mail exchanger lnf.infn.it.IN MX 10 smtp2.lnf.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 lnfnetIN A 193.206.84.12; mappa il nome del DNS primario al suo indirizzo ip dns2IN A 193.206.84.112; mappa il nome del DNS secondario al suo indirizzo ip afs1IN A 193.206.84.121; mappa un nome ad un indirizzo ip ntp1IN CNAME afs1; definisce un alias ad afs1 con nome ntp1 Per ogni record NS e MX nella zona diretta, DEVE esistere un record A nella zona diretta

43 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; Serial 86400; Refresh 3600; Retry 604800; Expire 172800 ); Minimum TTL IN NS lnfnet.lnf.infn.it.; dichiarazione DNS server primario IN NS dns2.lnf.infn.it.; dichiarazione DNS server secondario $ORIGIN 84.206.193.in-addr.arpa.; definisce il dominio da aggiungere ; ai nomi non FQDN 12IN PTR lnfnet.lnf.infn.it.; mappa un indirizzo ip ad un nome 112IN PTR dns2.lnf.infn.it.; mappa un indirizzo ip ad un nome 121IN PTR afs1.lnf.infn.it.; mappa un indirizzo ip ad un nome 219IN PTR www1.lnf.infn.it.; mappa un indirizzo ip ad un nome 220IN 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.

44 DNS (Domain Name System) Esercizio 1: Ogni studente deve installare un DNS Server Primario per il proprio dominio cognome.it (dominio di secondo livello) e verificare che la risoluzione diretta ed inversa del proprio dominio funzioni. 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.

45 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, Firefox, Opera, ecc.) disponibile per tutti i sistemi operativi presenti oggi (Windows, Unix, Mac Os, Be Os, ecc.) che ha il compito di richiedere le informazioni ad un web server, mentre il Server ha il compito di inviare le informazioni richieste ai Clients. 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 qualsiasi browser puo visualizzare. Il codice HTML contiene anche dei descrittori (tag) che consentono di indicare per esempio la formattazione del testo (dimensione, stile, posizionamento,ecc.) e la posizione di immagini, filmati e 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 una immagine.

46 WWW (World Wide Web) Questo e il concetto di ipertesto, ovvero e un testo che consente una lettura non lineare di un documento. Se in un testo che parla di motori cè una informazione sulle case produttrici che li producono, e a questa informazione è associato un link, basta fare clic sul link per andare ad una nuova pagina che parla di queste case produttrici, fermando la lettura della parte dedicata ai motori, alla quale si potrà tornare successivamente. Il sistema delle URL (Uniform Resource Locator) consente a tutte le informazioni di essere 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 Text Transfer 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, nel senso 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 laccesso ad una directory particolare (chiamata Document Root) e a quelle discendenti, si tratta di una directory personale degli utenti anonimi che accedono attraverso questo protocollo. Il Server web risponde sulla porta TCP 80 (protocollo HTTP) e 443 (protocollo HTTPS).

47 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. Lintegrazione di piu protocolli impone lutilizzo di un sistema uniforme per indicare gli indirizzi, in modo tale da sapere subito in che modo effettuare un collegamento. Per questo quando si usa un navigatore si devono usare indirizzi espressi secondo il formato URI (Uniform Resource Identifier), mentre attualmente si usa ancora la vecchia definizione, cioe lURL (Uniform Resource Locator), che rappresenta un sottoinsieme dellURI. Attraverso lURI e possibile definire tutto quello che serve per raggiungere una risorsa: il protocollo da usare, lindirizzo 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 allindirizzo della risorsa, per esempio nel caso dellHTTP 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] Lutilizzo di una stringa di richiesta, presume che la risorsa sia in grado di utilizzare linformazione presente in tale stringa: http://www.brot.dg/cgi-bin/saluti.pl?buongiorno Quando lindirizzo di una risorsa fa riferimento ad un programma, questo puo ricevere un informazione aggiuntiva legata ad un file o ad una directory particolare, questo si ottiene aggiungendo il percorso che identifica questo file o questa directory: http://www.brot.dg/cgi-bin/elabora.pl/archivio.doc Quando si deve usare in un URI un simbolo non utilizzabile normalmente, si usa la notazione %hh, dove hh 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 ce da preoccuparsi di questo problema, che normalmente si presenta invece quando si costruiscono delle richieste.

48 WWW (World Wide Web) La tabella mostra lelenco di alcune corrispondenze tra simboli particolari e la codifica alternativa utilizzabile negli URI: CarattereCodificaCarattereCodifica %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 un utente 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 linformazione allegata va interpretata, lintestazione e staccata dallinformazione attraverso una riga vuota, composta dalla sequenza (Carriage Return, Line Feed).

49 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 ewww.brot.db installato e configurato il server web Apache (un comune web server), dal server viene prelevato il file index.html, dalla directory Document Root $ telnet www.brot.dg 80 [Invio]www.brot.dg 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 la versione 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] Lultima riga vuota indica al server che la richiesta e finita e che va quindi evasa.

50 WWW (World Wide Web) HTTP/1.1 200 OK Date: Tue, 27 Jan 1998 17:44:46 GMT Server: Apache/1.2.4 Last-Modified: Tue, 30 Dec 1997 21:07:24 GMT ETag: "6b003-792-34a9628c" Content-Length: 1938 Accept-Ranges: bytes Connection: close Content-Type: text/html Test Page for Linux's Apache Installation It Worked! If you can see this, it means that the installation of the Apache http://www.apache.org/ software on this Linux system was successful. You may now add content to this directory and replace this page. …... Connection closed by foreign host.

51 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 dal messaggio dato da telnet:Connection closed by foreign host. Il lavoro di un programma cliente è tutto qui: inviare richieste al servente HTTP, ricevere le risposte 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 multimediali attraverso la rete, e nato con la necessita di allegare documenti nei messaggi di posta elettronica, come lacronimo 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 allestensione dei file, quindi per ogni tipo MIME utilizzato nel protocollo HTTP ce una associazione tipo MIME, e lestensione relativa.

52 WWW (World Wide Web) Tipo MIMEEstensioniDescrizione application/postscriptps epsDocumento PostScript application/rtfrtfDocumento Rich Text application/x-textexDocumento Tex/Latex audio/basicau sndFile Audio audio/x-wavwavFile Audio image/gifgifImmagine Gif image/jpegjpeg jpgImmagine Jpeg image/tifftiffImmagine Tiff text/htmlhtml htmDocumento Html text/plaintxtDocumento Testo video/mpegmpeg mpg mpeAnimazione Mpeg video/quicktimeqt movAnimazione QuickTime Esempi di tipi MIME

53 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.Lintestazione e separata dallallegato da una riga vuota. La prima riga dellintestazione e costituita dal codice di stato della risposta, nella migliore delle ipotesi dovrebbe presentarsi nel seguente modo: HTTP/1.0 200 OK Comunque ci sono anche altri codici di ritorno, ecco i piu frequenti: CodiceDescrizioneCodiceDescrizione 200OK400Richiesta errata 201Creato401Non autorizzato 202Accettato403Proibito 204Nessun Contenuto404Non trovato 300Scelte Multiple500Errore interno al server 301Spostato in modo permanente501Servizio non realizzato (non disponibile) 302Spostato temporaneamente502Gateway errato 304Non modificato503Servizio non disponibile

54 WWW (World Wide Web) Il software usato per implementare un Web Server in ambiente Linux in questo Stage e lApache v.2.0 della Apache Software Foundation Si puo scaricare da http://www.apache.orghttp://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

55 WWW (World Wide Web) Passi necessari per linstallazione di un Web server: - Scaricare il pacchetto software Web server dal sito http://www.apache.orghttp://www.apache.org - Installarlo tar –xvzf apache-2.0.59.tar.gz cd apache-2.0.59./configure make make install -Configurarlo modificare il file /etc/httpd/conf/httpd.conf eventualmente 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 httpd chkconfig --level 35 httpd on

56 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 server Group nomegruppo ServerAdmin emailaddress; indica lemail da usare per riportate errori o problemi DocumentRoot pathcompleto; indica la directory che conterra le pagine web ; consente di specificare per una directory (e tutte quelle sottostanti) delle Options opzioni; delle caratteristiche particolari (tipo seguire i link Unix) deve esistere una AllowOverride opzioni; per la DocumentRoot Order Deny,Allow; controlla chi puo accedere a questa directory Allow from all; tutti possono accedere a questa directory Deny from all; nessuno puo accedere a questa 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 server CustomLog pathcompletoenomefile; indica il file dove saranno scritti tutti gli accessi al server

57 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 server Group nomegruppo ServerAdmin emailaddress; indica lemail da usare per riportate errori o problemi DocumentRoot pathcompleto; indica la directory che conterra le pagine web ; consente di specificare per una directory (e tutte quelle sottostanti) delle Options opzioni; delle caratteristiche particolari (tipo seguire i link Unix) deve esistere una AllowOverride opzioni; per la DocumentRoot Order Deny,Allow; controlla chi puo accedere a questa directory Allow from all; tutti possono accedere a questa directory Deny from all; nessuno puo accedere a questa 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 server CustomLog pathcompletoenomefile; indica il file dove saranno scritti tutti gli accessi al server

58 WWW (World Wide Web) Gli esempi precedenti riguardano la configurazione di un web server normale, un web server che gestisce un solo sito web, ma se volessimo gestire n siti web con lo stesso web server ? Vediamo cosa ce da aggiungere alla configurazione base del file /etc/httpd/conf/httpd.conf, valida sia per v.1.3 che per v.2.0 di apache NameVirtualHost indirizzoip; indica lindirizzo IP del server, che rispondera a piu web server ServerName FQDNdelwebserver1; indica il nome di dominio del sito web ServerAdmin emailaddress DocumentRoot pathcompleto Options opzioni AllowOverride opzioni Order Deny,Allow Allow from all | Deny from all ErrorLog pathcompletoenomefile CustomLog pathcompletoenomefile ServerName FQDNdelwebserver2 …

59 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 lentry relativa a www.<cognomewww., verificare con il browser che andando sul sito http://www. risponda il proprio web server con la nuova pagina appenattp://www.<cognome 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. www2. e www3. e registrarli nel proprio dns

60 HTTP Proxy Lesigenza sempre maggiore di reperire informazioni via Internet (documenti scientifici, programmi, demo dei giochi, drivers, ecc.) tramite i Browsers (Internet Explorer, Netscape, Mozilla, ecc.) fa crescere lesigenza 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, inoltre ci si accorgeva che allinterno 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 per diversi giorni, ed ogni volta veniva sprecata della banda per scaricare sempre le stesse pagine, gli stessi documenti, 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 delleta, 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 laccesso 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)

61 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 luso di un browserhttp://cigproxyFQDN/http/sitowebrichiesto 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 laccesso ad alcuni siti - Possibilita di vietare laccesso 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

62 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 dallutente, in ogni caso non e lindirizzo 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 dallutente, in ogni caso non e lindirizzo 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 le pagine mancanti nella nostra cache, il parent scarica anche le pagine che noi richiediamo non presenti nella sua 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.

63 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)http://www.yahoo.it il server cerca nella sua cache per vedere se ha la pagina richiesta a)se non ha la pagina, la scarica dal sito, la da al client e la copia in cache b)se ha la pagina, vede se e ancora valida (TTL non scaduto) 1)se e valida la da al client 2)se non e valida (TTL scaduto), richiede al server con un messaggio IMS se e cambiata a)se e cambiata, sostituisce quella in cache e la restituisce al client b)se non e cambiata, aggiorna il TTL se viene impostato dal server e la restituisce al client c)Quando la cache disco e piena, vengono cancellatte tutte le pagine ritenute vecchie e meno accedute. LIMS e solo un messaggio di richiesta da parte del Proxy, per sapere dal sito se la pagina e cambiata, solo se e cambiata la scarica nuovamente.

64 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

65 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 script nel webserver Proxy server 2

66 HTTP Proxy Esempio di configurazione con 2 proxy server, in affidabilita (anche se uno e sprecato perche non fa cache finche non muore 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"; }

67 HTTP Proxy INTERNET Proxy server 1 Domini 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 2 Domini dispari

68 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 si va sullaltro // // 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"; }

69 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 gerarchica utilizzando il protocollo ICP Richieste domini ORG Richieste domini GOV Richieste domini COM Richieste domini IT Richieste domini … ICP

70 HTTP Proxy INTERNET Proxy server 1 Router/Gateway Client 3Client 2Client 1 Proxy1 domini IT parent Proxy2 domini IT parent Proxy1 domini ORG parent 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 Proxy server 2 sibling ICP sibling Proxy2 domini ORG parent ICP sibling

71 HTTP Proxy

72

73 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 al Proxy 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 la versione 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] Lultima 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

74 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_MISSloggetto richiesto non e nella cache TCP_HITloggetto richiesto e nella cache TCP_REFRESH_HITloggetto richiesto era in cache ma scaduto, lIMS indica che non e cambiato TCP_REFRESH_MISS loggetto richiesto era in cache da molto tempo, lIMS indica che loggetto e cambiato e quindi viene riscaricato TCP_CLIENT_REFRESH_MISS il client ha specificato di non prenderlo dalla cache, loggetto viene riscaricato TCP_IMS_HITil client ha richiesto una riconferma per un oggetto che e in cache ed e valido TCP_SWAPFAIL_MISS loggetto si credeva in cache, ma non era possibile accedere ad esso TCP_MEM_HITloggetto richiesto era in cache in memoria, non viene letto dal disco TCP_DENIEDaccesso negato per la richiesta UDP_HITloggetto richiesto era in cache UDP_MISSloggetto richiesto non era in cache UDP_DENIEDaccesso negato per questa richiesta UDP_INVALIDrichiesta non valida ricevuta

75 HTTP Proxy Il software usato per implementare un Http Proxy Server in ambiente Linux in questo Stage e Squid Si puo scaricare da http://www.squid-cache.orghttp://www.squid-cache.org -e gratuito - e tenuto continuamente aggiornato - e molto stabile - e il proxy server di default su Linux - possibilita di limitare laccesso 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

76 HTTP Proxy Passi necessari per linstallazione 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./configure make make install -Configurare il Proxy server modificare 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 luso di un proxy server - Attivarlo come servizio partente al riavvio della macchina chkconfig --add squid chkconfig --level 35 squid on

77 HTTP Proxy File di configurazione /etc/squid/squid.conf http_port portaindica la porta TCP sulla quale il server accettera le richieste (default 3128) cache_mem valore MBindica la quantita di RAM da riservare per la cache in memoria (default 8 MB) calcolare come valore max RAMPC/3 maximum_object_size valore KBindica la dimensione massima degli oggetti da salvare in cache (default 4096 KB) minimum_object_size valore KBindica 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 emailaddressindica lemail usato per accedere a ftp anonimi (default Squid@) ftp_passive on|offindica se usare la modalita passiva per ftp (default on)

78 HTTP Proxy File di configurazione /etc/squid/squid.conf (continua) acl nome tipo opzionicrea 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 opzioniindica il tipo di metodo di autenticazione da usare, quindi il programma esterno da usare e le eventuali opzioni, i metodi di autenticazione vanno compilati a parte acl nome src|srcdomain valorecrea un acl (access-list) basandosi su IP o su dominio questa viene usata per dire chi avra accesso alla cache http_access allow|deny aclindica chi avra accesso o meno alla cache (ci sono piu http_access, e quindi importante la posizione, lultimo e un deny normalmente) http_reply_access allow|deny acl indica chi otterra le risposte alle richieste (e complementare a http_access,lultimo e un deny normalmente) cache_mgr emailaddressindica lemail dellamministratore del proxy server cache_effective_user nomeutenteindica lutente che eseguira il demone cache_effective_group nomegruppoindica il gruppo di appartenenza del demone

79 HTTP Proxy File di configurazione /etc/squid/squid.conf (continua) visible_hostname FQDNindica il nome FQDN che apparira nei log (default e hostname) unique_hostname FQDNindica il nome FQDN unico del Proxy Server (ognuno ha il suo) logfile_rotate valoreindica il numero di logfile da creare quando si usa (squid –k rotate) append_domain.domainindica il dominio da aggiungere ad hostname senza dominio cachemgr_passwd passwordshutdown shutdown indica la password per effettuare lo shutdown del server via manager cachemgr_passwd passwordconfig config indica la password per vedere lo stato del server via manager cache_peer FQDN|IP parent|sibling http_port udp_port opzioni indica 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 unaltro proxy parent o sibling che sia cache_peer_domain FQDN|IP.dominio1.dominion !.dominio1 !.dominion indica per quali domini chiedere o non chiedere ad un altro proxy (parent o sibling, esempio.it !.com)

80 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

81 FINE Domande ?


Scaricare ppt "Servizi Essenziali di Rete Stage per Sistemista Linux Istituto Nazionale Fisica Nucleare Laboratori Nazionali Frascati Giugno 2008 Tutor: Claudio Soprano."

Presentazioni simili


Annunci Google