Risoluzione Nomi-Indirizzi e DNS

Origini del DNS

Originariamente la risoluzione hostname -> indirizzo IP era un unico file hosts gestito dal Network Information Center (NIC):

  • ogni computer connesso ad Internet aveva il suo indirizzo IP esclusivo e hostname esclusivo
  • si scaricava il file hosts da un repository centrale
  • ancora oggi i dati contenuti in /etc/hosts sono prioritari rispetto ad altri ambienti di risoluzione N2A

Il Domain Name System introduce spazi nomi chiamati domini.

Gli hostname sono univoci in ciascun dominio.

Vi è un’autorità di dominio che mantiene i record.

Software Implementativo

Tre implementazioni del DNS:

  • ChaosNet
    • MIT, esiste ancora ma è sempre stato un esercizio universitario, sigla CS
  • Hesiod
    • Digital Equipment Corporation, ritirato, sigla HS
  • Berkeley Internet Name Domain (BIND)
    • Università di Berkeley, su UNIX, sigla IN
    • Adottato da Microsoft, da Windows NT in poi
    • Le versioni vecchie sono insicure

Schema del DNS

Dnsschema

Domain Name System - Implementazione: Berkeley Internet Name Domain (BIND)

Demone: named

Ruoli DNS:

  • Resolver - solo client - /etc/resolv.conf
  • Master server (master) - ha i files di configurazione di zona
  • Slave server (slave) - copia i files di configurazione
  • Hint server (hint) - mantiene cache dei responsi; normalmente combinato con Master o Slave server

Zonadns

Comportamento del DNS

Dnscomp

Mappe e Resource Records

DNS mantiene due tipi di mappe:

  • forward
    • da campo di input a campo di output, a seconda del tipo di risorsa richiesto
    • originariamente era solo da hostname a indirizzo IP
  • reverse
    • da indirizzo IP a hostname
    • aveva senso solo quando esistevano le classi di indirizzamento

Una risorsa viene detta Resource Record.

Direttive (defaults):

$ORIGIN zona_di_origine
$TTL tempo_di_vita

Struttura records:

campo_in clas	TTL 	tipo [opz]		campo_out
zona			SOA			dettagli_zona
zona			NS			server_DNS
zona			MX priorità		server_mail
nome			A			indirizzo
nome_alias		CTYPE			nome_vero
indirizzo_rev		PTR			nome_FQDN

Esempio:

$TTL 1d
@		IN SOA zen.starshell.sh. root.zen.starshell.sh. (
 					2009121200	; serial
 					3h		; refresh
 					1h		; retry
 					1w		; expire
 					1d )		; minimum

 		IN NS		zen.starshell.sh.
 		IN MX 10	mail.starshell.sh.

zen		IN A		192.168.1.1
mail		IN CNAME	zen
air		IN A		192.168.1.4