20. DNS: Il Domain Name System 20.1 Introduzione È un database distribuito usato dalle applicazioni TCP/IP che: Mappa hostname su IP address Mappa IP address su hostname Fornisce informazione di routing per la posta elettronica Nessun host di Internet possiede l intera informazione contenuta nel database Ogni sito mantiene attivo un server DNS che altri sistemi sulla rete (client) possono interrogare per acquisire informazione DNS fornisce il protocollo mediante il quale i client interrogano i server Le applicazioni interrogano i server mediante un resolver che è acceduto mediante funzioni di libreria quali gethostbyname e gethostbyaddr È il resolver che si preoccupa di contattare uno o più server per rispondere alla richiesta Il resolver è parte dell applicazione, non del sistema operativo come TCP, UDP o IP Gli hostname servono principalmente per aiutare a ricordarsi un indirizzo di macchina usando stringhe di caratteri significative invece che numeri o dotted-quad Come è fatto lo spazio dei nomi? Pagina 20.1
20.2 Elementi fondamentali di DNS Lo spazio dei nomi è gerarchico Radice senza nome; etichette fino a 63 caratteri case-ignore Il domain name di un nodo è la lista delle etichette, partendo dal nodo fino alla radice, separate da. Quando un domain name finisce con un punto è un nome fully qualified, altrimenti occorre aggiungere un suffisso locale a destra del nome non qualificato arpa Organizational (generic) domains (sette, di tre caratteri) Country o geographical domains (due caratteri, codici ISO) Pagina 20.2
Domini generici/organizzativi: Com: organizzazioni commerciali Edu: istituzioni didattiche Gov: organizzazioni governative USA Int: organizzazioni internazionali Mil: militari USA Net: reti Org: altre organizzazioni Solo org e mil sono ristrette agli USA! Molti Paesi sotto al dominio geografico introducono sottodomini di tipo generico (ac per le università, co per commerciali) NIC mantiene i domini al top level e delega la responsabilità della gestione dei sottoalberi sottostanti Una zona è un sottoalbero amministrato separatamente. Molti domini di secondo livello sono a loro volta divisi in sottozone. La partizione delle zone non si può vedere dalla forma dei nomi Per ogni zona di autorità ci devono essere uno o più name server che forniscono informazione per quella zona. Un name server può avere autorità su più di una zona (importante per gli ISP!) Deve esistere un primary name server e zero o più secondary name server: ridondanza e disponibilità del servizio Il primary legge le informazioni che distribuisce da memoria secondaria stabile, i secondari caricano le informazioni dal primario (zone transfer) e le mantengono in cache in memoria primaria Pagina 20.3
Quando una macchina viene aggiunta al dominio, l amministratore aggiunge le informazioni sulla macchina nei file di configurazione e segnala a primario di rileggere il file I secondari ottengono le info a tempo effettuando una zone transfer Quando un name server è richiesto di una informazione che non possiede, la chiede ad un altro name server. Quale? Ogni name server deve conoscere l indirizzo IP dei pochi root name server definiti (si trovano in netinfo/root-servers.txt su ftp.rs.internic.net o nic.ddn.mil) I root name server conoscono nome e indirizzo IP di ognuno dei server di secondo livello, che devono saper scendere lungo il loro albero, se ha più livelli Ogni server si basa su cache dell informazione ricevuta per evitare di effettuare una lunga ricerca ogni volta Pagina 20.4
20.3 Formato dei messaggi DNS 0 16 31 identification flags number of questions number of answers RRs number of authority RRs Number of additional RRs questions answers autority additional information identification è settato dal client e ritornato uguale dal server nella risposta flags ha diversi campi che permettono di definire: Se il messaggio è una domanda o una risposta Se è una domanda normale, inversa, oppure una richiesta di stato del server Se la risposta giunge da un server che ha autorità sul dominio (oppure la risposta è stata generata da una cache) Se si vuole che il server interrogato trovi la risposta lui stesso (recursion desired) oppure si accetta che dia come risposta l indirizzo di un altro server da contattare (domanda iterativa) Se la ricorsione è disponibile oppure no Il codice di errore della risposta Se la risposta è stata troncata per mancanza di spazio in UDP Pagina 20.5
20.3.1 Struttura della domanda 0 16 31 nome della domanda tipo della domanda classe della domanda Il nome della domanda è il nome di dominio di cui si cerca informazione; struttura a lunghezza variabile: un byte con intero, altrettanti byte con caratteri, etc. fino ad avere byte con zero Domande e risposte (resource record) hanno un tipo; circa 20 tipi, molti obsoleti, i più comuni usati oggi sono: Nome A NS CNAME PTR HINFO MX Descrizione IP address Name server Canonical name Pointer record Informazione su host Mail exchange record AXFR Richiesta di zone transfer * oppure ANY Richiesta di tutti i record Pagina 20.6
20.3.2 Struttura della risposta 0 16 31 Nome di dominio tipo classe time-to-live Lunghezza risorsa dati della risorsa time-to-live è il numero di secondi per cui la risposta può essere cached da chi la riceve 20.3.3 Pointer Queries Come si fa trovare quale nome corrisponde ad un indirizzo IP? Occorre tornare alla figura con il disegno dello spazio dei nomi di Internet e guardare il ramo arpa e il sottodominio in-addr Quando ci viene assegnato un dominio Internet, otteniamo anche autorità su questo dominio, e ci viene assegnata una parte del sottodominio in-addr.arpa che corrisponde alla rete IP che associamo al dominio che ci viene assegnato e che naturalmente dobbiamo avere avuto regolarmente. Il primo, secondo ed eventualmente terzo byte dell indirizzo di rete (dipende dalla classe della rete) determina la parte che dobbiamo gestire. I byte successivi della classe individuano un nodo dell albero che rappresenta la macchina che ha un certo indirizzo: in questo nodo possiamo pubblicare resource record che descrivono questa macchina, individuata dal suo indirizzo IP Quindi in domain name basato sull indirizzo IP della macchina contiene i byte della dotted quad ma in ordine inverso rispetto all ordine nell indirizzo IP Pagina 20.7
In questo punto pubblichiamo il record PTR della macchina che contiene il nome di dominio della macchina Quale server DNS gestisce la parte di in-addr.arpa che contiene il reverse mapping? E come fa in server DNS a trovare il server giusto? La query di tipo PTR viene passata subito ai root server che hanno registrato quale è la macchina che fa il reverse mapping (dichiarata al momento della richiesta di un dominio) La query viene girata in ricorsione o iterativamente a questa macchina che deve esistere e deve avere il domain name del momento della registrazione: non potete spostare questo servizio su un altra macchina o cambiarle nome! Alcuni server richiedono che la macchina client abbia l indirizzo invertibile nel DNS: questa è una (debole) forma di autenticazione del client che non può usare indirizzi inventati e quindi deve essere parte di una rete regolare Ma il client a cui un ISP fornisce indirizzi dinamici non invertiti non riescono a usare questi server sospettosi Altri server, come rlogin, ancora più sospettosi richiedono anche il mapping diretto per vedere se uno degli indirizzi ritornati corrisponde all indirizzo da cui viene il pacchetto o la richiesta di connessione 20.3.4 Resource Record Ve ne sono di tanti tipi quante possono essere tipi di query Interessante è l MX record che permette di: Indicare il nome del server di mail di un dominio di mail Indicare server alternativi se dopo un certo numero di tentativi non si riesce a collegarsi a server indicati Pagina 20.8
20.3.5 UDP o TCP? DNS può usato sulla porta 53 di Udp e di TCP; quindi può usare ambedue i trasporti Il resolver in genere usa UDP, ma se la risposta indica che c è stato un troncamento, il resolver riprova la domanda questa volta usando TCP Zone transfer vengono richieste solo usando TCP perché le riposte sicuramente eccedono il limite di UDP Quando il resolver e i server usano UDP, dato che lavorano su rete geografica devono prevedere la perdita di pacchetti, ritrasmettendo dopo timeout e abbandonando dopo un certo numero di ritrasmissioni. Ma non hanno la sofisticazione di TCP per adattarsi a ritardi variabili e a congestioni della rete! Pagina 20.9