Indice - wikilibri
Transcript
Indice - wikilibri
Indice Voci Domain Name System 1 Tipi di record DNS 9 Risoluzione DNS inversa 13 Dynamic DNS 16 Riferimenti Fonti e autori del articolo 18 Fonti, licenze e autori delle immagini 19 Licenze della voce Licenza 20 Domain Name System 1 Domain Name System Suite di protocolli Internet Livello applicazioni DHCP, HTTP, HTTPS , SMTP, POP3, IMAP, FTP, SFTP, → DNS, SSH, IRC, SNMP, SIP, RTSP, Rsync, Telnet, HSRP, RTP, BGP, RIP, IGRP, VoIP,... Livello di trasporto TCP, UDP, SCTP, DCCP ... Livello di internetworking IPv4, IPv6, ICMP, ICMPv6, IGMP, IPsec... Livello di collegamento Ethernet, WiFi, PPP, Token ring, ARP, ATM, FDDI, LLC, SLIP, WiMAX, HSDPA, OSPF, MPLS ... Domain Name System (spesso indicato con DNS) è un sistema utilizzato per la risoluzione di nomi di host in indirizzi IP e viceversa. Il servizio è realizzato tramite un database distribuito, costituito dai server DNS. Il nome DNS denota anche il protocollo che regola il funzionamento del servizio, i programmi che lo implementano, i server su cui questi girano, l'insieme di questi server che cooperano per fornire il servizio. I nomi DNS, o "nomi di dominio", sono una delle caratteristiche più visibili di Internet. C'è confusione in merito alla definizione dell'acronimo: la S spesso viene interpretata come service, ma la definizione corretta è system. L'operazione di convertire un nome in un indirizzo è detta risoluzione DNS, convertire un indirizzo IP in nome è detto risoluzione inversa. Motivazioni ed utilizzi • La possibilità di attribuire un nome testuale facile da memorizzare a un server (ad esempio un sito world wide web) migliora di molto l'uso del servizio, in quanto gli esseri umani trovano più facile ricordare nomi testuali (mentre gli host e i router sono raggiungibili utilizzando gli indirizzi IP numerici). Per questo, il DNS è fondamentale per l'ampia diffusione di internet anche tra utenti non tecnici, ed è una delle sue caratteristiche più visibili. • È possibile attribuire più nomi allo stesso indirizzo IP (o viceversa) per rappresentare diversi servizi o funzioni forniti da uno stesso host (o più host che erogano lo stesso servizio) Questa flessibilità risulta utile in molti casi: • Nel caso il server debba sostituire il server che ospita un servizio, o si debba modificare il suo indirizzo IP, è sufficiente modificare il record DNS, senza dover intervenire sui client. • Un utilizzo molto popolare di questa possibilità è il cosiddetto virtual hosting basato sui nomi, una tecnica per cui un web server dotato di una singola interfaccia di rete e di singolo indirizzo IP può ospitare più siti web, usando l'indirizzo alfanumerico trasmesso nell'header HTTP per identificare il sito per cui viene fatta la richiesta. • Utilizzando nomi diversi per riferirsi ai diversi servizi erogati da un host, è possibile spostare una parte dei servizi su un altro host, e spostare i client su questo nuovo host modificando il suo record nel DNS. • Facendo corrispondere più indirizzi IP a un nome, il carico dei client viene distribuito su diversi server, ottenendo un aumento delle prestazioni complessive del servizio e una tolleranza ai guasti (ma è necessario assicurarsi che i diversi server siano sempre allineati, ovvero offrano esattamente lo stesso servizio ai client). • La risoluzione inversa è utile per identificare l'identità di un host, o per leggere il risultato di un traceroute. • Il DNS viene usato da numerose tecnologie in modo poco visibile agli utenti, per organizzare le informazioni necessarie al funzionamento del servizio. Domain Name System 2 Storia Il DNS fu ideato il 23 giugno 1983 da Paul Mockapetris, Jon Postel e Craig Partrige; le specifiche originali sono descritte nello standard RFC 882. Nel 1987 vennero pubblicati commenti allo standard RFC del DNS, con i nomi RFC 1034 e RFC 1035 rendendo obsolete le specifiche precedenti. Nomi DNS Un nome a dominio è costituito da una serie di stringhe separate da punti, ad esempio it.wikipedia.org. A differenza degli indirizzi IP, dove la parte più importante del numero è la prima partendo da sinistra, in un nome DNS la parte più importante è la prima partendo da destra. Questa è detta dominio di primo livello (o TLD, Top Level Domain), per esempio .org o .it. Un dominio di secondo livello consiste in due parti, per esempio wikipedia.org, e così via. Ogni ulteriore elemento specifica un'ulteriore suddivisione. Quando un dominio di secondo livello viene registrato all'assegnatario, questo è autorizzato a usare i nomi di dominio relativi ai successivi livelli come it.wikipedia.org (dominio di terzo livello) e altri come some.other.stuff.wikipedia.org (dominio di quinto livello) e così via. Record DNS Per approfondire, vedi la voce → Tipi di record DNS. Tipologie di record Ad un nome DNS possono corrispondere diversi tipi di informazioni. Per questo motivo, esistono diversi → tipi di record DNS. Ogni voce del database DNS deve essere caratterizzata da un tipo. I principali tipi sono: • Record A - Indica la corrispondenza tra un nome ed uno (o più) indirizzi IP (per la precisione indirizzi IPv4, ovvero la versione attualmente in uso). • Record MX - (Mail eXchange) indica a quali server debba essere inviata la posta elettronica per un certo dominio. • Record CNAME - Sono usati per creare un alias, ovvero per fare in modo che lo stesso calcolatore sia noto con più nomi. Uno degli utilizzi di questo tipo di record consiste nell'attribuire ad un host che offre più servizi un nome per ciascun servizio. In questo modo, i servizi possono poi essere spostati su altri host senza dover riconfigurare i client, ma modificando solo il DNS. • Record PTR - Il DNS viene utilizzato anche per realizzare la risoluzione inversa, ovvero per far corrispondere ad un indirizzo IP il corrispondente nome a dominio. Per questo si usano i record di tipo "PTR" (e una apposita zona dello spazio dei nomi in-addr.arpa). • Record AAAA - Restituisce un indirizzo IPv6. • Record SRV - Identificano il server per un determinato servizio all'interno di un dominio. Possono essere considerati una generalizzazione dei record MX. • Record TXT - Associano campi di testo arbitrari ad un dominio. Questi campi possono contenere una descrizione informativa oppure essere utilizzati per realizzare servizi. Vi sono anche tipi di record "di servizio", necessari al funzionamento del database distribuito: Domain Name System • Record NS - Utilizzato per indicare quali siano i server DNS autorevoli per un certo dominio, ovvero per delegarne la gestione. • Record SOA - (Start of Authority) usato per la gestione delle zone DNS. Nel DNS possono essere immessi altri tipi di record, alcuni folcloristici, come "LOC", usato (poco) per riportare le coordinate geografiche di un sito, altri aggiungono funzioni di sicurezza per evitare manomissioni. Per avere riferimenti su tutti questi record vedi → Tipi di record DNS. Record multipli Ad uno stesso nome di dominio, possono essere associati contemporaneamente record di tipo diverso, o più record dello stesso tipo. Questo generalmente viene fatto per suddividere il carico di un server molto frequentato su più computer che offrono lo stesso servizio. Time to live I record associati ad un nome di dominio possono cambiare nel tempo, permettendo ad esempio di assegnare un nuovo indirizzo IP ad un server, facendo in modo che questo continui a rispondere al nome già noto agli utenti. A ciascun record DNS è associato un parametro detto "time to live" o TTL (tempo di vita), che indica per quanto tempo questo record può venire memorizzato in un sistema di cache DNS prima che venga considerato scaduto. Quando un server risponde ad una richiesta con un record preso dalla propria cache, assegna alla risposta il time to live residuo del record. Quindi se il record originalmente ha un TTL di 12 ore, e un server risponde ad una richiesta con un dato che ha ottenuto due ore prima, nella risposta metterà un TTL di 10 ore. Utilizzo dei nomi DNS Un nome di dominio, come per esempio it.wikipedia.org, può essere parte di un URL, come http://it.wikipedia.org/wiki/Treno, o di un indirizzo e-mail, come per esempio [email protected]. Questi sono gli strumenti più utilizzati per identificare una risorsa su Internet, il che spiega la pervasività dei nomi di dominio. Molti nomi di dominio utilizzati per server web hanno nella parte sinistra la stringa di caratteri "www", ma non è sempre necessario averla. In molti casi, ma non sempre, il nome privato del prefisso "www." porta comunque alla stessa pagina, come per esempio "ns.nl" e "www.ns.nl". 3 Domain Name System Realizzazione I DNS implementano uno spazio dei nomi gerarchico, per permettere che parti di uno spazio dei nomi, conosciute come "zone", possano essere delegate da un name server ad un altro name server che si trova più in basso nella gerarchia. I nomi di dominio sono soggetti a determinate restrizioni: per esempio ogni parte del nome (quella cioè limitata dai punti nel nome) non può superare i 63 caratteri e il nome complessivo non può superare i 255 caratteri. I nomi di dominio sono anche limitati ad un sottoinsieme di caratteri ASCII; in questo modo si impedisce di scrivere nomi e parole con caratteri che non tutti hanno sulla propria tastiera. Per superare questa limitazione, il sistema di IDNA e basato sul modello Punycode, rileva stringhe Unicode in un insieme di caratteri DNS validi, venne approvato dall'ICANN e adottato da alcuni registri. Zone, deleghe e repliche Una zona DNS è una parte dello spazio dei nomi, costituita da un dominio e i suoi sottodomini che non sono a loro volta delegati, che è sotto una stessa gestione amministrativa e quindi è gestita da uno o più server. La gestione di una zona è delegata dalla zona superiore tramite dei record di tipo NS. Ad esempio, nella zona .org ci sarà una delega per la zona wikipedia.org ai server DNS che la gestiscono. Per ragioni di ridondanza, ciascuna zona è replicata su più server, e di conseguenza la delega è costituita da più record NS, che indicano che ciascuno dei server indicati contiene le informazioni per quella zona (ovvero è autorevole per la zona). All'interno di una zona possono essere delegate delle zone di livello inferiore, ad esempio in wikipedia.org potrebbero esistere deleghe per devel.wikipedia.org o per accounting.admin.wikipedia.org. I diversi server che sono delegati per una zona dovrebbero contenere le stesse informazioni, in modo che uno qualsiasi di questi possa rispondere ad una query per un record della zona. Lo schema di replica tipicamente prevede che ci sia un server master (primario), che è quello sul quale vengono aggiornate le informazioni, e uno o più server slave (secondari), che copiano le informazioni dal master quando necessario. Per tener traccia delle diverse "versioni" di una zona che possono esserci in circolazione, ed in particolare per permettere ad un secondario di decidere se deve trasferire la zona dal primario, ogni zona ha un numero di serie, che deve essere aumentato ogni volta che vengono fatte modifiche sul primario. Per ottenere il numero di serie di una zona presente su un server, si effettua una interrogazione di tipo SOA. Il secondario confronta il proprio numero di serie con quello del primario, e se quello del primario è superiore trasferisce la zona. L'operazione di copia di tutti i record di una zona dal master ad uno slave è detta zone transfer, e può essere completo (tutto il contenuto della zona viene copiato) o incrementale (vengono copiati solo i record modificati rispetto alla versione già presente. 4 Domain Name System Alcune implementazioni di DNS permettono di modificare le zone da qualsiasi server autorevole, propagando le modifiche sugli altri server. La radice (root) dell'albero dei nomi DNS è la zona . (punto), che è gestita da un insieme di server chiamati appunto root servers. Ricorsione In generale, per ottenere la risoluzione di un nome è necessario partire dalla radice, interrogare uno dei root server nel dominio di primo livello, ottenere il server che lo gestisce, interrogarlo nel dominio di secondo livello, fino a raggiungere il server autorevole per il nome desiderato. Questa tecnica è detta "ricorsione". Caching Alcuni server si prestano ad effettuare query ricorsive per conto di alcuni client. Una volta che hanno ottenuto una risposta, memorizzano in una cache tutte le informazioni che hanno imparato, fino alla loro scadenza. Alcune implementazioni del servizio DNS permettono di realizzare i cosiddetti servers caching only, ovvero privi di database proprio, ma utili per reindirizzare ad un server autorevole le query di risoluzione. Tale caratteristica è utile soprattutto quando la risoluzione deve essere effettuata attraverso collegamenti lenti (con velocità inferiore a 500 kbps) o firewall. Funzioni dei server Un server DNS può essere configurato per assolvere ad una o più delle seguenti funzioni: • server autorevole per una o più zone, ovvero il server su cui sono configurati i dati di una zona, e che è delegato a gestirla tramite record NS inseriti nella zona superiore. Normalmente sono presenti più server autorevoli per una zona. Molte implementazioni permettono di modificare i dati di una zona solo su un server: • primario - server autorevole su cui vengono modificati i dati di una zona • secondario - server autorevole che copia i dati di zona da un primario • server ricorsivo - il server che viene configurato in una popolazione di client, che si occupa di risolvere le query che riceve interrogando i server originali, e mantenendo una cache delle risposte ricevute • query forwarder - un server che viene configurato in una popolazione di client, che risolve le loro query non direttamente ma interrogando un server ricorsivo Origine dei dati I dati contenuti in una zona possono essere configurati da uno o più operatori, oppure possono essere alimentati da meccanismi automatici: • nelle implementazioni più semplici, i dati di zona sono memorizzati in uno o più file sul server primario • implementazioni più raffinate immagazzinano i dati in un database. In alcuni casi, questo è accessibile non solo agli operatori del servizio ma anche direttamente ai clienti (è il caso dei servizi DNS commerciali) 5 Domain Name System DNS dinamico Il termine DNS dinamico, o DDNS, indica un insieme di tecnologie che permettono di inserire automaticamente in una zona DNS gli indirizzi di calcolatori che ottengono un indirizzo non predefinito, tipicamente attraverso il protocollo DHCP o PPP. A questo scopo, sono definite query DNS di "UPDATE". In una rete locale, questa funzionalità può essere utilizzata direttamente dai client, è presente nei servizi Active Directory di windows, o può essere configurata usando BIND e il server DHCP di Internet Systems Consortium (ISC). Il DDNS viene inoltre utilizzato da servizi commerciali per permettere agli utenti dial-up (modem, ADSL) di registrare un nome corrispondente all'indirizzo che viene loro assegnato di volta in volta dal loro provider. In questo modo, un host con indirizzo IP dinamico è sempre raggiungibile. Esistono client DDNS sia sotto forma di applicazioni che all'interno di router destinati al mercato domestico. Utilizzo Per utilizzare il servizio, è necessario configurare su ciascun client uno o più server DNS di riferimento. Questi sono predisposti a effettuare query ricorsive e che effettuano servizi di caching. Quando un sistema ha la necessità di comunicare con un altro sistema, chiede al server DNS di riferimento di effettuare il processo detto di "risoluzione" del nome in un indirizzo IP. Il server effettua una ricerca all'interno del suo database per ottenere l'indirizzo IP corrispondente al sistema ricercato. Se il server interrogato possiede l'informazione richiesta, il processo di ricerca termina con l'invio dell'indirizzo IP al richiedente. Se la ricerca ha esito negativo il server effettua una richiesta "ricorsiva". Implementazione Il protocollo DNS è implementato da diversi software. Di seguito alcuni dei più diffusi: • • • • • • • BIND (Berkeley Internet Name Domain), il nome del più comune demone DNS usato sui sistemi Unix. DJBDNS (Dan J Bernstein's DNS implementation) Unbound, un server DNS progettato modularmente e con un riguardo particolare verso DNSSEC. MaraDNS NSD (Name Server Daemon) PowerDNS DDNS (Dynamic Domain Name System) Il servizio DNS alla base dei servizi di directory Microsoft incluso nelle versioni server da Windows 2000 in poi. Il DNS utilizza il protocollo di trasporto UDP e la porta 53 per soddisfare le richieste di risoluzione provenienti dagli host. I server DNS effettuano gli zone transfer usando il protocollo di trasporto TCP e la porta 53. Questa porta viene usata anche quando una query ha una risposta molto lunga. Il lato client del servizio DNS è normalmente implementato tramite librerie di sistema, che spesso lo integrano con altri servizi di risoluzione, come ad esempio WINS, NIS, o con la consultazione di file locali, in modo che un utente possa utilizzare un nome simbolico in un'applicazione ed ottenere la sua risoluzione in un indirizzo IP senza preoccuparsi di quale strumento è stato utilizzato per ottenere la risoluzione. 6 Domain Name System Il sistema DNS in Internet Qualsiasi rete IP può usare il DNS per implementare un suo sistema di nomi privato. Tuttavia, il termine "nome di dominio" è più comunemente utilizzato quando esso si riferisce al sistema pubblico dei DNS su Internet. Questo è basato su 13 "root server" universali, i cui indirizzi IP sono distribuiti indipendentemente dal DNS tramite un file detto "root hints" (letteralmente: indizi per la radice). Da questi server principali, il DNS viene poi delegato ad altri server DNS che si occupano dei nomi all'interno di parti specifiche dello spazio dei nomi DNS. Dieci dei tredici root server sono, almeno nominalmente, situati negli USA. Tuttavia, dato l'accesso a molti di essi è realizzato tramite indirizzamento anycast, che permette di assegnare a più computer lo stesso indirizzo IP per fornire un servizio uniforme su vaste aree geografiche, la maggior parte dei server sono in effetti localizzati al di fuori degli Stati Uniti. Il proprietario di un nome di dominio è rintracciabile in un database chiamato Whois: per molti domini di primo livello un Whois base è gestito dalla IANA, con il Whois dettagliato mantenuto dall'autorità di registrazione che controlla quel dominio. Per i più di 240 domini nazionali l'autorità di registrazione gestisce in esclusiva il Whois per il dominio di competenza. Politica Allocazione delle zone di primo livello L'attuale modalità di controllo del sistema DNS offre spesso alcune criticità. Il problema più comune è l'abuso monopolistico da parte di grosse società maintainer, come ad esempio l'americana VeriSign, Inc..Wikipedia:Cita_le_fonti Manipolazione delle risposte Quando un client inoltra una query DNS ad un server ricorsivo, si aspetta di ottenere la risposta "corretta", ovvero il valore del record DNS richiesto oppure un messaggio di errore "NXDOMAIN" se il nome richiesto non esiste. Alcuni gestori di server ricorsivi tuttavia manipolano le risposte fornite ai propri clienti, eliminando selettivamente alcune risposte, oppure restituendo un indirizzo IP diverso da quello corretto. Questa tecnica può essere usata con diversi scopi: • protezione da abusi: il server DNS può filtrare le query relative a siti pericolosi per gli utenti, ad esempio a causa della distribuzione di malware, o perché usati per operazioni di phishing • censura: vengono filtrate le query relative a siti che si vogliono rendere inaccessibili per decisione politica (del gestore della rete o di una autorità pubblica). In caso la visita o il tentativo di visita a siti "proibiti" venga qualificata come indizio di reato, la redirezione del traffico su un server diverso da quello richiesto dall'utente può permettere la raccolta degli indirizzi IP dei client, o anche in alcuni casi il furto di credenziali [1]. • man-in-the-middle: le query vengono modificate in modo da reindirizzare tutto o parte del traffico verso un server che agisce da proxy trasparente, intercettando il traffico degli utenti. Questo permette il monitoraggio del traffico degli utenti, e quindi anche il furto di informazioni sensibili e/o credenziali. • redirezione degli errori: alle query per nomi inesistenti viene risposto con l'indirizzo IP di un server, che tipicamente ospita un motore di ricerca e tenta di aiutare gli utenti a trovare il sito cercato. Queste tecniche possono essere adottate anche dai gestori di rete, redirigendo le query DNS dirette verso l'esterno su propri server mediante meccanismi di destination NAT. 7 Domain Name System 8 Voci correlate • • • • • • • • → Risoluzione DNS inversa Record DNS → Dynamic DNS DNSSEC ICANN Nslookup Cybersquatting Nome di dominio internazionalizzato Collegamenti esterni • • • • • DNS Security Extensions (DNSSEC) [2] Ricerca domini liberi in tempo reali usando ajax [3] root-servers.org [4] RFC 882 RFC 883 • RFC 1034 • RFC 1035 • Accesso alle funzioni DNS in .NET [5] Per approfondire, vedi la voce Tipi di record DNS#Collegamenti esterni. Riferimenti [1] [2] [3] [4] [5] http:/ / www. lastknight. com/ 2008/ 08/ 17/ thepiratebay-password-a-rischio/ http:/ / www. dnssec. net/ http:/ / www. ajaxdomainfinder. net http:/ / www. root-servers. org/ http:/ / www. giuseppesicari. it/ articoli/ framework-dot-net/ domain-name-system Tipi di record DNS 9 Tipi di record DNS Questo elenco di Tipi di record DNS consente di orientarsi facilmente fra le varie tipologie di record utilizzate dal DNS. Record DNS normalmente in uso Codice Numero RFC di ID riferimento Descrizione Funzione A 1 RFC [1] 1035 record di indirizzo restituisce un indirizzo IPv4 a 32 bit, normalmente utilizzato per collegare un nome host al suo indirizzo IP. AAAA 28 RFC [2] 3596 record di indirizzo IPv6 restituisce un indirizzo IPv6 a 128 bit, normalmente utilizzato per collegare un nome host al suo indirizzo IPv6. AFSDB 18 RFC 1183 record del database AFS puntamento al server di database AFS. Questo record è utilizzato dai client AFS per contattare un server AFS fuori dal proprio dominio. Un sottotipo di questo record era utilizzato dall'obsoleto file system DCE/DFS. AXFR 252 RFC [1] 1035 Trasferimento dell'intera zona Richiesta di trasferimento dell'intera zona dal server principale ad un secondario. CERT 37 RFC [3] 4398 Record di certificato Trasferisce un certificato di tipo PKIX, SPKI, PGP, ecc. CNAME 5 RFC [1] 1035 record di nome canonico Permette di collegare un nome DNS ad un altro. La risoluzione continuerà con il nuovo nome indicato dal record CNAME. Questa funzione è molto utile quando, ad esempio, sullo stesso server sono disponibili più servizi come FTP, WEB ecc operanti su porte differenti. Ciascun servizio potrà avere il suo riferimento DNS (ad esempio ftp.example.com. e www.example.com.). È molto utile anche quando sullo stesso server ci sono più istanze web con differenti nomi ma utilizzando lo stesso indirizzo. Questa funzione richiede, però, il supporto da parte del server di identità multiple con riconoscimento dell'intestazione http. DHCID 49 RFC [4] 4701 Identificazione DHCP Utilizzato in congiunzione con un record FQDN restituisce informazioni sul server DHCP DLV 32769 RFC [5] 4431 Record per la validazione DNSSEC Utilizzato per pubblicare un puntatore a un certificato DNSSEC fuori dalla catena di delegazione. DNAME 39 RFC [6] 2672 nome di delegazione Opera in modo simile al record CNAME ma invece di far riferimento ad un singolo nome fa riferimento ad una porzione di albero DNS sotto un nuovo nome. Analogamente a CNAME la risoluzione continuerà con il nuovo nome. DNSKEY 48 RFC [7] 3755 record chiave DNS Il record chiave utilizzato in DNSSEC DS 43 RFC [8] 3658 Delegazione del firmatario Utilizzato per identificare la chiave di firma DNSSEC per una zona delegata HIP 55 RFC [9] 5205 Host Identity Protocol Un protocollo che consente di aumentare la sicurezza separando gli indirizzi IP degli host. IPSECKEY 45 RFC [10] 4025 Chiave IPSEC Utilizzato per trasferire informazioni IPSEC Tipi di record DNS 10 IXFR 251 RFC [11] 1995 Trasferimento di zona incrementale Trasferisce la porzione di zona che è stata cambiata dal server DND principale ad un secondario. KEY 25 RFC [12] 4034 Record chiave Utilizzato solo per TKEY (RFC 2930). Prima che fosse pubblicata l'RFC 3755 era anche utilizzato per DNSSEC, attualmente DNSSEC utilizza DNSKEY. LOC 29 RFC [13] 1876 Record di localizzazione Associa una localizzazione geografica ad un nome DNS. MX 15 RFC [1] 1035 Server di posta Collega un nome di dominio ad una lista di server di posta autorevoli per quel dominio. I record indicano anche la preferenza di un server rispetto ad un altro. NAPTR 35 RFC [14] 3403 Naming Authority Pointer Un nuovo tipo di record DNS che supporta l'indirizzamento utilizzando espressioni regolari. NS 2 RFC [1] 1035 Riferimento ai server DNS Delega una zona DNS ad essere gestita da un server DNS autorevole per quel nome di dominio. NSEC 47 RFC [7] 3755 Record Next-Secure Utilizzato da DNSSEC per stabilire se un nome non esiste. NSEC3 50 RFC [15] 5155 Record NSEC versione 3 utilizzato da DNSSEC. NSEC3PARAM 51 RFC [7] 5155 Parametri NSEC3 Parametri del record NSEC3. OPT 41 RFC [16] 2671 Option Pseudo record DNS necessario per supportare EDNS PTR 12 RFC [1] 1035 Record puntatore Puntatore ad un nome canonico utilizzato per la → risoluzione DNS inversa. Inserendo un record PTR per un nome canonico di dominio nella zona in-addr.arpa. fa si che si possa risalire al nome host dal suo indirizzo IP. RRSIG 46 RFC [7] 3755 Firma DNSSEC Firma per una serie di record DNSSEC sicuri SIG 24 RFC [17] 2535 Firma Record di firma utilizzato in SIG(0) (RFC 2931). Prima che fosse pubblicata l'RFC 3755 era anche utilizzato per DNSSEC, attualmente DNSSEC utilizza RRSIG. SOA 6 RFC [1] 1035 Record di start of authority Restituisce informazioni autorevoli sulla zona DNS, incluso il server DNS principale, l'E-mail dell'amministratore, il numero seriale del dominio (utile per sapere se i dati della zona sono stati variati) e diversi timer che regolano la frequenza di trasferimento e la durata di validità dei record. SPF 99 RFC [18] 4408 Record SPF Specifica dati relativi al protocollo SPF. In alternativa questi dati posso essere inseriti in un record TXT. SRV 33 RFC [19] 2872 Localizzatore di servizi Un servizio generalizzato di ricerca di servizi molto utile per nuovi protocolli per non dover aggiungere tipi di record specializzati come ad esempio il record MX. SSHFP 44 RFC [20] 4255 Impronta della chiave pubblica SSH Pubblica la chiave pubblica dell'host SSH sul DNS, in modo da aiutare la verifica dell'autenticità dell'host. TA 32768 Nessuna Certificazione DNSSEC Parte della proposta DNSSEC senza una radice DNS firmata. TKEY 249 RFC [22] 2930 Chiave di transazione Supporta un metodo per rendere sicuro il DNS. Implementa la sicurezza fra il server DNS che risolve la richiesta e il server autorevole di zona. DNSSEC, al contrario, rende sicuri i singoli record. [21] Tipi di record DNS 11 TSIG 250 RFC [23] 2845 Firma di transazione Supporta un insieme di meccanismi di sicurezza del DNS. Implementa la sicurezza fra il server DNS che risolve la richiesta e il server autorevole di zona. DNSSEC, al contrario, rende sicuri i singoli record. TXT 16 RFC [1] 1035 Record di testo era stato pensato per aggiungere commenti leggibili ad un record DNS. Dall'inizio degli anni '90, invece, è utilizzato per trasferire informazioni di sicurezza in accordo alla RFC 1464, opportunistic encryption, Sender Policy Framework e DomainKeys. Il systema di DNS dinamico del server dhcp ISC utilizza campi di testo nelle zone dinamiche per identificare i record modificati dal server DHCP. Altri tipi di record Il tipo di record 255 è riservato e significa "qualsiasi record". In nslookup scrivere type=all significa porre a 255 il campo tipo e richiedere quindi il trasferimento di qualsiasi tipo di record corrispondente alla risoluzione richiesta. Ci sono poi altri tipi di record non normalmente utilizzati e qui suddivisi per categoria di non utilizzo. • Obsoleti: • MD(3) da RFC 973 • MF (4) da RFC 973 • NXT(30) • MAILB (253) • MAILA (254) da RFC 973 • Errori: • NB(32) Il tipo 32 ora è utilizzato per NIMLOC • NBSTAT(33) (RFC 1002) Il tipo 33 ora è utilizzato per SRV. • Non ben definiti: • • • • AFSDB(18) X25(19) ISDN(20) RT(21) • NSAP(22) • NSAP-PTR(23) • PX(26) • EID(31) • NIMLOC(32) • ATMA(34) • KX(36) • A6(38) • Sperimentali: • MB(7) • MG(8) • MR(9) • NULL(10) • Resi inutili dalla nuova versione di DNSSEC introdotta dall RFC 3755: • NXT(30). • Non normalmente in uso: • WKS(11) dovrebbe fornire informazioni sui servizi di un host Tipi di record DNS • HINFO(13) fornisce informazioni sull'hardware e sulla versione di sistema operativo. Sconsigliato per motivo di sicurezza anche se molto utilizzato in origine per cercare di comprendere problemi di incompatibilità ma attualmente fornendo queste informazioni ci si può esporre ad un attacco mirato. • MINFO(14), • RP(17) • GPOS(27) • SINK(40) • APL(42) • Riservati da IANA: • • • • UINFO(100) UID(101) GID(102) UNSPEC(103) Voci correlate • → Domain Name System • → Risoluzione DNS inversa Collegamenti esterni • Strumenti di ricerca DNS sul web [24] su Open Directory Project ( Segnala [25] su DMoz un collegamento pertinente all'argomento "Strumenti di ricerca DNS sul web") (EN) DNS Security Extensions (DNSSEC) [2] (EN) root-servers.org [4] (EN) RFC 882 - Concetti generali sul DNS (documento storico ormai superato) (EN) RFC 883 - Specifiche implementative del DNS (documento storico ormai superato) (EN) RFC 1033 - Istruzioni operative per gli amministratori dei domini DNS (EN) RFC 1034 - Introduzione al DNS (EN) RFC 1123 - Requisiti di un server Internet - Sezione 2.2 (Come utilizzare il DNS), Sezione 5.2.12 (Non utilizzare i record WKS con i record MX), 6.1 (Risoluzione DNS). • (EN) Parametri del DNS IANA [26]. • • • • • • • Riferimenti [1] (EN) RFC 1035 - DNS - Implementazione e specifiche [2] (EN) RFC 3596 - Estensioni del DNS per supportare l'indirizzamento IPv6 [3] (EN) RFC 4398 - Memorizzazione di certificati digitali nei record DNS [4] (EN) RFC 4701 - Specifiche per l'integrazione nel DNS delle informazioni del protocollo DHCP [5] (EN) RFC 4431 - Meccanismo di delegazione del DNSSEC [6] (EN) RFC 2672 - Redirezione dei nomi DNS Non Terminale (redirezione di zona) (DNAME) [7] (EN) RFC 3755 - Documento di base per il DNSSEC (supera i documenti precedenti sulla sicurezza dei singoli record) [8] (EN) RFC 3658 - Delegation Signer (DS) (Sistema di delegazione di DNSSEC [9] (EN) RFC 5205 - Specifiche per integrare nel DNS le informazioni relative al protocollo Host Identity Protocol (HIP) [10] (EN) RFC 4025 - un metodo per inserire informazioni IPsec nei record DNS [11] (EN) RFC 1995 - Trasferimento incrementale di zona [12] (EN) RFC 4034 - Estensioni di sicurezza del DNS (aggiornamento di RFC 2535) [13] (EN) RFC 1876 - La localizzazione geografica nei recod DNS (LOC) [14] (EN) RFC 3403 - Dynamic Delegation Discovery System (DDDS) (Utilizza espressioni regolari per la trasformazione dei nomi DNS) [15] (EN) RFC 5155 - Specifiche DNSSEC per il riconoscimento delle violazioni di autenticazione. [16] (EN) RFC 2671 - Metodo di estensione del DNS (EDNS0) [17] (EN) RFC 2535 - Estensioni di sicurezza del DNS (integrata da RFC 4034). 12 Tipi di record DNS [18] [19] [20] [21] [22] [23] [24] [25] [26] 13 (EN) RFC 4408 - Protocollo Sender Policy Framework (SPF) per la sicurezza della posta elettronica. (EN) RFC 2872 - Descrizione del meccanismo di identificazione delle applicazioni e sub applicazioni. (SRV) (EN) RFC 4255 - Utilizzazione dei record DNS per memorizzare chiavi pubbliche. (SSH) (EN) Proposta DNSSEC senza una radice DNS firmata (http:/ / www. watson. org/ ~weiler/ INI1999-19. pdf) (EN) RFC 2930 - Specifiche per la chiave segreta (TKEY) per il DNS (EN) RFC 2845 - Transazione autenticata da chiave segreta per il DNS. (TSIG) http:/ / www. dmoz. org/ Computers/ Internet/ Protocols/ DNS/ Web_Tools/ http:/ / www. dmoz. org/ cgi-bin/ add. cgi?where=Computers/ Internet/ Protocols/ DNS/ Web_Tools/ http:/ / www. iana. org/ assignments/ dns-parameters Risoluzione DNS inversa La risoluzione DNS inversa, forse meglio nota nella notazione inglese Reverse DNS lookup (rDNS), permette di risalire al nome dell'host connesso ad internet conoscendone l'indirizzo IP. Introduzione Il → Domain Name System è utilizzato per determinare quale indirizzo IP è associato ad un certo nome di dominio. Allo stesso modo, con la risoluzione DNS inversa, si può risalire al nome di dominio facendo una ricerca in base all'indirizzo IP. La risoluzione DNS inversa, molto spesso chiamata semplicemente risoluzione inversa, si ottiene inserendo un record "reverse IN-ADDR" nella zona → DNS di reverse. Questo record è di tipo PTR. Necessità del DNS inverso L'RFC 1033 [1] nella sezione "INSTRUCTIONS" e, successivamente, L'RFC 1912 [2] nella sezione 2.1 specificano che "Ciascun host raggiungibile su internet deve avere un nome" e che "ciascuno deve verificare che i propri record PTR e record A siano coerenti". Risoluzione DNS inversa in IPv4 La risoluzione DNS inversa ove si utilizzi un indirizzamento IPv4 utilizza un particolare dominio DNS in-addr.arpa. Un indirizzo IPv4 è rappresentato, nel dominio in-addr.arpa, da una sequenza di byte in ordine inverso, in rappresentazione decimale con la separazione di un punto fra ciascun numero e terminato con il suffisso .in-addr.arpa. Ad esempio, il nome di 140.13.12.10.in-addr.arpa. dominio per la risoluzione DNS inversa dell'indirizzo 10.12.13.140 è Il nome dell'host con indirizzo IP 1.2.3.4 può essere ottenuto effettuando una richiesta DNS per un record PTR corrispondente a 4.3.2.1.in-addr.arpa. Risoluzione DNS inversa Risoluzione DNS inversa Classless Storicamente, un indirizzo IP di 32 bit viene diviso in 4 byte così l'indirizzo si scrive in 4 numeri da 0 a 255. In questo modo gli indirizzi vengono raggruppati in gruppi di 256. In questo modo è stato semplice scrivere i record PTR in quanto i punti separano ciascun blocco e quindi, applicare i meccanismo di delega a ciascun gruppo è stato altrettanto semplice. La mancanza di indirizzi IP su internet, ha portato, però, ad una suddivisione più piccola in quanto normalmente alle aziende vengono assegnati 8, 16 o 32 indirizzi IP. Per superare questo problema è stata pubblicata l'RFC 2317 [3] che mediante l'uso di record CNAME permette di suddividere ulteriormente i gruppi di indirizzi in modo che ciascun utente possa ricevere la delega per gestire il propri indirizzi anche se ne ha meno di 256. Risoluzione DNS inversa in IPv6 La risoluzione DNS inversa in IPv6 analogamente utilizza lo speciale nome di dominio ip6.arpa. Un indirizzo IPv6 è un nome nel dominio ip6.arpa formato da una sequenza di nibble (ossia di gruppi di 4 bit) in ordine inverso, rappresentati da una cifra esadecimale separati da punti. Ad esempio, il nome per la risoluzione DNS inversa dell'indirizzo IPv6 4321:0:1:2:3:4:567:89ab è b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.ip6.arpa. Record PTR multipli Sebbene la maggior parte delle voci rDNS hanno un solo record PTR, è perfettamente legale avere più record PTR diversi.[4] In ogni modo, utilizzare più record PTR per lo stesso indirizzo IP generalmente non è consigliato a meno che non ci siano delle specifiche necessità. As esempio, se un webserver supporta molte macchine virtuali, può esserci un record PTR per ciascuna macchina virtuale. Ci sono dei sistemi operativi e dei software di gestione che automaticamente aggiungono un record PTR per ciascuna host e quindi anche per ciascuna macchina virtuale. L'utilizzo di record PTR multipli può essenzialmente causare due problemi: • Mandare in crisi alcune applicazioni che si aspettano di ricevere un unico record PTR • La presenza di molti record PTR multipli, come nel caso di grossi webserver, può creare pacchetti DNS di risposta molto più grandi del normale. Altri tipi di record diversi da PTR Anche se non sono molto frequenti se paragonati con i record PTR, ci sono altri tipi di record DNS che è possibile inserire nell'albero del dominio della risoluzione DNS inversa. Ad esempio si possono inserire delle chiavi di criptazione per IPsec (RFC 4025[5] ), SSH (RFC 4255[6] ) e IKE (RFC 4322[7] ). Ci sono poi anche record meno standardizzati come il record TXT per inserire commenti e il record LOC per identificare la localizzazione di un indirizzo IP. 14 Risoluzione DNS inversa Utilizzi Gli usi più frequenti della risoluzione DNS inversa sono: • L'utilizzo principale e lo scopo per cui fu inventata la risoluzione DNS inversa è la diagnostica della rete come ping, traceroute, il messaggio "Received:" del record dei messaggi e-mail SMTP, la localizzazione degli utenti collegati ad un server web ecc. • Un tecnica di controllo dello spamming è quella di controllare che il nome di dominio nei record PTR corrisponda al nome del server SMTP. Siccome la maggior parte dello spamming proviene da computer domestici che hanno un nome rDNS assegnato in automatico e generico, molti server di posta rifiutano e-mail che provengono da server a cui è associato un record PTR generico. [8] [9] • La tecnica Forward Confirmed reverse DNS (FCrDNS) è utilizzata per controllare che un host con un certo nome provenga da un indirizzo IP appartenente allo stesso dominio dell'host. Questa non è una metodologia molto sicura ma è sufficiente per stabilire delle whitelist di controllo accesso in quanto di solito gli spammer e i phishers normalmente utilizzano dei computer zombie che non appartengono allo stesso dominio. • Molto spesso le sessioni SSH vengono rifiutate dai server SSH quando le richieste provengono da client con un indirizzo IP il cui record PTR appartiene ad un dominio sconosciuto. Voci correlate • → Domain Name System • Record DNS Collegamenti esterni • Strumenti di ricerca DNS sul web [24] su Open Directory Project ( Segnala [25] su DMoz un collegamento pertinente all'argomento "Strumenti di ricerca DNS sul web") (EN) Reverse IP and Reverse DNS [10] • • (EN) Internet draft che fornisce alcune considerazioni sull'uso della risoluzione DNS inversa [11] • (EN) Zona in-addr.arpa di internet [12] Riferimenti [1] [2] [3] [4] (EN) RFC 1033 - Fornisce istruzioni operative per gli amministratori dei domini DNS (EN) RFC 1912 - Fornisce indicazioni su come operare con il DNS (EN) RFC 2317 - Illustra come implementare il meccanismo di delega rDNS in un ambiente CIDR (EN) IEEE Considerations for the use of DNS Reverse Mapping (http:/ / tools. ietf. org/ html/ draft-ietf-dnsop-reverse-mapping-considerations). [5] (EN) RFC 4025 - Descrive un metodo per inserire informazioni IPsec nei record DNS] [6] (EN) RFC 4255 - Utilizzazione dei record DNS per memorizzare chiavi pubbliche (SSH) [7] (EN) RFC 4322 - Criptazione mediante il protocollo IKE [8] (EN) Documento su SpamHaus sull'utilizzo del rDNS per il controllo dello spamming (http:/ / www. spamhaus. org/ faq/ answers. lasso?section=ISP Spam Issues#131) [9] (EN) Documento su AOL sul rDNS (http:/ / postmaster. aol. com/ info/ rdns. html) [10] http:/ / www. ip-adress. com/ reverse_ip/ [11] http:/ / tools. ietf. org/ html/ draft-ietf-dnsop-reverse-mapping-considerations [12] http:/ / www. robert. net/ ccTLD/ ARPA/ IN-ADDR 15 Dynamic DNS Dynamic DNS Il DNS Dinamico è una tecnologia che permettere ad un nome → DNS in Internet di essere sempre associato all'indirizzo IP di uno stesso host, anche se l'indirizzo cambia nel tempo. Motivazione I nomi DNS sono normalmente associati stabilmente ad indirizzi IP, i quali a loro volta sono stabilmente assegnati ad host che hanno funzioni di server. Molti host, in particolare quelli che si collegano ad internet utilizzando i servizi di uno (o più) ISP, ricevono invece un indirizzo diverso ad ogni connessione. Pertanto è impossibile raggiungerli da internet, perché non si conosce il loro indirizzo IP. Questo preclude la possibilità di amministrarli remotamente e di offrire servizi su questi host. Il DNS dinamico permette a questi host di essere sempre raggiungibili attraverso il loro nome DNS, e quindi rende possibile amministrarli remotamente ed erogare servizi raggiungibili da chiunque su internet. Realizzazione Un servizio di DNS dinamico è costituito da una popolazione di client dinamici (host con indirizzo IP dinamico che vogliono che il loro IP attuale sia registrato nel DNS), da uno o più server DNS dinamici e da un protocollo di comunicazione tra le due parti. Quando un client dinamico ottiene un indirizzo IP, contatta uno dei server e lo informa del suo IP attuale. Il server inserisce allora un record DNS che punta al nuovo indirizzo del cliente. In questo modo, altri host sono in grado di ottenere l'indirizzo IP attuale del client dinamico utilizzando il normale servizio DNS, e quindi senza essere consci che l'host che contattano ha un indirizzo IP registrato dinamicamente. La comunicazione tra client dinamico e server, che permette ad un client di aggiornare il proprio record DNS, è realizzata mediante diversi protocolli proprietari, che normalmente richiedono l'autenticazione del client dinamico per poter effettuare l'aggiornamento. Esiste anche una estensione standardizzata del protocollo DNS, che rende possibile effettuare query di UPDATE per aggiornare una zona DNS. Numerosi fornitori di servizi su internet offrono servizi di DNS dinamico gratuiti e a pagamento. Il gestore del sito con IP dinamico ha la responsabilità di mantenere aggiornato il proprio record DNS. Questo può essere effettuato tramite una pagina web apposita del sito del fornitore di servizio, ma questa soluzione richiede un intervento manuale ogni volta che l'IP cambia. Nella pratica si utilizzano dei programmi che aggiornano autonomamente il database del DNS dinamico, quando l'IP cambia oppure periodicamente. Questi programmi sono adeguati soprattutto quando girano direttamente sull'host a cui è assegnato l'indirizzo pubblico, in quanto possono facilmente conoscere l'indirizzo assegnato dal provider, e spesso possono anche essere informati dal sistema operativo dei cambi di indrizzo IP. Quando invece si utilizza un router per la connessione ad internet, l'indirizzo pubblico è normalmente configurato su questo router, e i PC collegati a questo router accedono ad internet mediante qualche forma di network address translation, pertanto non possono facilmente conoscere l'indirizzo IP pubblico con cui si presentano su internet (e sul quale possono essere raggiungibili se sono configurate delle redirezioni sul router). Alcuni router utilizzati per la connessione ad internet includono un client di DNS dinamico, e possono quindi provvedere autonomamente all'aggiornamento dell'indirizzo IP. Se invece il client di DNS dinamico deve essere installato su un calcolatore che utilizza un indirizzo IP privato, è necessario scoprire l'indirizzo IP assegnato al router NAT per poterlo registrare nel DNS dinamico. Alcune tecniche prevedono di effettuare connessioni verso server esterni, che riportano l'IP da cui vedono provenire la connessione (una tecnologia di questo tipo è STUN). In alternativa, alcuni programmi di DNS dinamico sono in grado di collegarsi autonomamente ad un router per scoprire l'indirizzo di rete pubblico assegnato dal provider. 16 Dynamic DNS Nella realizzazione del DNS dinamico è necessario inoltre impostare il massimo tempo di caching del dominio per un periodo breve (tipicamente pochi minuti). Questo serve a prevenire che gli altri server DNS mantengano a lungo nella loro cache il vecchio indirizzo, rendendo meno probabile che una query DNS per un indirizzo gestito dal DNS dinamico ottenga come risposta un indirizzo obsoleto. Dynamic DNS • • • • • • • • • Dyndns [1] Easydns [2] Freedns [3] No-ip [4] Tzo [5] Zoneedit [6] ChangeIP [7] Regfish [8] Dnsomatic [9] Voci correlate • Domain name system Collegamenti esterni • Servizi DNS dinamici [10] su Open Directory Project ( Segnala [11] su DMoz un collegamento pertinente all'argomento "Servizi DNS dinamici ") • • • • Web based DDNS server per Linux/Unix [12] Web based DDNS server per Windows Servers [13] Specifica RFC2136 dell'IETF per il DNS dinamico [14] Uno dei tanti modi di trovare il proprio DNS [15] Riferimenti [1] http:/ / www. dyndns. com/ [2] http:/ / www. easydns. com/ [3] http:/ / freedns. afraid. org/ [4] http:/ / www. no-ip. com/ [5] http:/ / www. tzo. com/ [6] http:/ / www. zoneedit. com/ [7] http:/ / www. ChangeIP. com/ [8] http:/ / www. regfish. de/ [9] http:/ / www. dnsomatic. com/ [10] http:/ / www. dmoz. org/ Computers/ Software/ Internet/ Servers/ Address_Management/ Dynamic_DNS_Services/ [11] http:/ / www. dmoz. org/ cgi-bin/ add. cgi?where=Computers/ Software/ Internet/ Servers/ Address_Management/ Dynamic_DNS_Services/ [12] http:/ / gnudip2. sourceforge. net/ [13] http:/ / www. dyndnsservices. com/ [14] http:/ / www. ietf. org/ rfc/ rfc2136. txt/ [15] http:/ / davidesito. altervista. org/ DNS/ 17 Fonti e autori del articolo Fonti e autori del articolo Domain Name System Source: http://it.wikipedia.org/w/index.php?oldid=27242961 Contributors: %Pier%, .anaconda, .mau., Abisys, Albert2810, Alfio, Antonellosinisi1986, Ary29, Avesan, Balabiot, Beta16, Brownout, Calabash, ChemicalBit, Dav82, Domenico Romeo, Enricomilano, Frack, Frieda, Gastipi, GiaGar, Gig, Gionnico, Giovannigobbin, Govoch, HT, Hce, Hellis, Hill, Igualeonte, Iron Bishop, Jredmond, Kaeso, Lp, M7, Marcok, Maui, Michelep23, Mira1-System, Moongateclimber, Nitya Dharma, P tasso, Piermarini, Quoniam, Rollopack, Salparadiso, Sbisolo, Scienzape, Senpai, Sentruper, Simone, Sir marek, Smallpox, Snowdog, Speedymax, Theferro, Tibe, Utopio, Valepert, Vulkano, Yukie, 76 anonymous edits Tipi di record DNS Source: http://it.wikipedia.org/w/index.php?oldid=26032804 Contributors: Abisys, Jalo, M7, Mira1-System, Triquetra, 3 anonymous edits Risoluzione DNS inversa Source: http://it.wikipedia.org/w/index.php?oldid=26092142 Contributors: Abisys, Filnik, Lustiger seth, M7, Mira1-System, 4 anonymous edits Dynamic DNS Source: http://it.wikipedia.org/w/index.php?oldid=26823629 Contributors: Abisys, Enrico 204, Gagio, Gionnico, H2o, Hce, Helios, Hellis, Madaki, Mattia, Moongateclimber, Onlyfrancy, Rollopack, Salvatore Ingala, Square87, Vulkano, 8 anonymous edits 18 Fonti, licenze e autori delle immagini Fonti, licenze e autori delle immagini Immagine:Exquisite-kfind.png Source: http://it.wikipedia.org/w/index.php?title=File:Exquisite-kfind.png License: GNU General Public License Contributors: Guppetto File:An example of theoretical DNS recursion.svg Source: http://it.wikipedia.org/w/index.php?title=File:An_example_of_theoretical_DNS_recursion.svg License: Public Domain Contributors: LionKimbro, The Anome, 4 anonymous edits File:DNS in the real world.svg Source: http://it.wikipedia.org/w/index.php?title=File:DNS_in_the_real_world.svg License: Public Domain Contributors: LionKimbro, 2 anonymous edits File:Domain name space.svg Source: http://it.wikipedia.org/w/index.php?title=File:Domain_name_space.svg License: Public Domain Contributors: GeorgHH, Herbythyme, LionKimbro, Ma-Lik, Mdd, 12 anonymous edits 19 Licenza Licenza Creative Commons Attribution-Share Alike 3.0 Unported http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/ 20