I ri­so­lu­to­ri DNS sono un com­po­nen­te es­sen­zia­le del Domain Name System (DNS). Fungono da con­tro­par­te di in­ter­ro­ga­zio­ne dei name server DNS che ri­spon­do­no alle richieste. Dal punto di vista dell’utente, un ri­so­lu­to­re DNS funge da in­ter­fac­cia tra l’utente o l’ap­pli­ca­zio­ne e i name server.

DNS gratuito
Riduci i tempi di ca­ri­ca­men­to del tuo sito web
  • Ri­so­lu­zio­ne rapida del dominio per un sito web sempre di­spo­ni­bi­le
  • Maggiore pro­te­zio­ne contro guasti e tempi di inat­ti­vi­tà
  • Nessun tra­sfe­ri­men­to di dominio richiesto

Cos’è un ri­so­lu­to­re DNS?

Un ri­so­lu­to­re DNS è un servizio che fornisce su richiesta un indirizzo IP per un nome di dominio. Si parla di ri­so­lu­zio­ne del dominio in un indirizzo IP; è da “ri­so­lu­zio­ne” che deriva il nome “ri­so­lu­to­re”, definito nel documento di specifica Internet RFC 1034:

Citazione

“Resolvers are programs that extract in­for­ma­tion from name servers in response to client requests. Resolvers must be able to access at least one name server and use that name server’s in­for­ma­tion to answer a query directly, or pursue the query using referrals to other name servers.” — fonte: https://www.rfc-editor.org/rfc/rfc1034.html

Tra­du­zio­ne: “I ri­so­lu­to­ri sono programmi che estrag­go­no in­for­ma­zio­ni dai name server in risposta alle richieste dei clienti. Devono avere accesso ad almeno un name server e uti­liz­za­re le sue in­for­ma­zio­ni per ri­spon­de­re di­ret­ta­men­te alla richiesta o per inol­trar­la ad altri name server.” (tra­du­zio­ne di IONOS)

I ri­so­lu­to­ri DNS sono la con­tro­par­te dei name server, che con­ten­go­no le in­for­ma­zio­ni DNS vere e proprie. Poiché i name server sono anche indicati come server DNS, il termine “client DNS” viene oc­ca­sio­nal­men­te uti­liz­za­to per i ri­so­lu­to­ri DNS. Tuttavia, molti ri­so­lu­to­ri DNS sono sem­pli­ce­men­te dei server; pertanto, il termine server DNS viene uti­liz­za­to più volte.

I ri­so­lu­to­ri DNS sono di­spo­ni­bi­li in molte forme diverse. Non si tratta ne­ces­sa­ria­men­te di un singolo com­po­nen­te né di una tec­no­lo­gia specifica. Dal punto di vista dell’utente, un ri­so­lu­to­re DNS è un sistema che si occupa di de­ter­mi­na­re un indirizzo IP per un nome di dominio, in­di­pen­den­te­men­te da come riceva esat­ta­men­te le in­for­ma­zio­ni.

Al livello più basso, ci sono i co­sid­det­ti “ri­so­lu­to­ri stub”. Di solito si tratta di una libreria software o di un servizio che viene eseguito sul sistema locale. I ri­so­lu­to­ri stub co­mu­ni­ca­no con i ri­so­lu­to­ri DNS situati su sistemi remoti, che svolgono il lavoro effettivo di ri­so­lu­zio­ne dei nomi.

Perché è ne­ces­sa­rio un ri­so­lu­to­re DNS?

Il Domain Name System (DNS) è un sistema ge­rar­chi­co di­stri­bui­to in tutto il mondo per la gestione dei dati associati ai domini Internet. Un dominio è un nome facile da ricordare e da usare ma­nual­men­te. Uno dei compiti prin­ci­pa­li del DNS è la ri­so­lu­zio­ne dei nomi, cioè l’as­se­gna­zio­ne dei nomi di dominio agli indirizzi IP. I ri­so­lu­to­ri DNS sono quindi una delle pietre miliari della struttura tecnica di Internet. Di seguito un esempio di ri­so­lu­zio­ne dei nomi:

Nome di dominio in­ter­ro­ga­to Indirizzo IP re­sti­tui­to
example.com 93.184.216.34

Anche se la maggior parte delle/degli utenti non ne è con­sa­pe­vo­le, molte delle ope­ra­zio­ni quo­ti­dia­ne iniziano con la ri­so­lu­zio­ne di un nome di dominio in un indirizzo IP. L’accesso a un sito web, il recupero di un’e-mail o l’accesso a un account utente tramite un’app iniziano tutti con la ri­so­lu­zio­ne del nome. Solo a questo punto avviene il tra­sfe­ri­men­to effettivo dei dati.

Ope­ra­zio­ne Pro­to­col­lo Server Esempio di nome host
Accedere a un sito HTTP Server web www.ionos.com
Ri­chia­ma­re le e-mail IMAP Server di posta imap.gmail.com
Login di un’app HTTPS Server API api.twitter.com

Le ope­ra­zio­ni descritte sopra hanno in comune il coin­vol­gi­men­to dei server. In altre parole, sistemi remoti con cui il nostro sistema locale comunica. Per co­mu­ni­ca­re, è ne­ces­sa­rio l’indirizzo dell’in­ter­lo­cu­to­re. In questo caso, l’indirizzo IP del server. Tuttavia, di solito co­no­scia­mo solo i loro nomi di dominio. For­tu­na­ta­men­te, esistono dei ri­so­lu­to­ri DNS che si occupano della ri­so­lu­zio­ne dei nomi al nostro posto.

DNS gratuito
Riduci i tempi di ca­ri­ca­men­to del tuo sito web
  • Ri­so­lu­zio­ne rapida del dominio per un sito web sempre di­spo­ni­bi­le
  • Maggiore pro­te­zio­ne contro guasti e tempi di inat­ti­vi­tà
  • Nessun tra­sfe­ri­men­to di dominio richiesto

Cosa succede se manca il ri­so­lu­to­re DNS?

In teoria, è possibile fare a meno di un ri­so­lu­to­re DNS e uti­liz­za­re di­ret­ta­men­te gli indirizzi IP, anche se ciò è vero solo teo­ri­ca­men­te. In pratica, si ve­ri­fi­ca­no perdite con­si­de­re­vo­li se manca la ri­so­lu­zio­ne dei nomi.

In­nan­zi­tut­to, il pro­to­col­lo sicuro HTTPS è legato ai nomi di dominio. Se si tenta di in­ter­ro­ga­re un sito web senza un IP, la co­mu­ni­ca­zio­ne crit­to­gra­fa­ta non è possibile. Inoltre, solo l’as­se­gna­zio­ne del nome di dominio consente di ospitare più siti web su un unico server e di in­di­riz­zar­li in modo specifico.

I moderni approcci alla di­stri­bu­zio­ne geo­gra­fi­ca delle risorse dei server ri­chie­do­no anche l’accesso a un ri­so­lu­to­re DNS. In questo caso, un singolo nome di dominio è collegato a diversi indirizzi IP. Per com­pren­de­re meglio questo processo, prendiamo a esempio l’homepage di Google: se fosse ac­ces­si­bi­le con un solo indirizzo IP, il traffico mondiale si ac­cu­mu­le­reb­be su questa pagina e il sistema ri­sul­te­reb­be ben presto so­vrac­ca­ri­ca­to.

Come funziona un ri­so­lu­to­re DNS?

Il sistema dei nomi di dominio (DNS) è co­sti­tui­to da com­po­nen­ti di­stri­bui­ti a livello globale che in­te­ra­gi­sco­no tra loro. Esistono quattro classi prin­ci­pa­li di com­po­nen­ti; tre di queste sono i name server, che con­ten­go­no record DNS. La classe rimanente comprende i ri­so­lu­to­ri DNS, che sono la con­tro­par­te dei name server.

Com­po­nen­te DNS Equi­va­len­te inglese Spie­ga­zio­ne
Name server radice Root name server Contiene gli indirizzi dei name server TLD.
Name server TLD TLD name server Contiene gli indirizzi dei name server au­to­re­vo­li per un TLD.
Name server au­to­re­vo­li Au­tho­ri­ta­ti­ve name server Contiene in­for­ma­zio­ni per una zona DNS.
Ri­so­lu­to­re ricorsivo Recursive resolver Determina gli indirizzi IP per i nomi host; effettua richieste ai name server a tale scopo.
Consiglio

De­si­de­ra­te ap­pro­fon­di­re l’argomento DNS? Nell’articolo “Che cos’è un root server” scoprite di più sulle basi del Domain Name System.

Come già sapete, un ri­so­lu­to­re DNS riceve un nome di dominio come richiesta e ha il compito di de­ter­mi­na­re un indirizzo IP associato. Come funziona esat­ta­men­te il processo? In realtà, esistono diversi modi di procedere.

Se la richiesta è già stata fatta in pre­ce­den­za, ad esempio quando si accede ri­pe­tu­ta­men­te a google.com, la risposta viene caricata dalla cache locale. In caso contrario, il ri­so­lu­to­re si rivolge ai name server e compila una risposta sulla base delle in­for­ma­zio­ni ottenute. L’algoritmo uti­liz­za­to per la ri­so­lu­zio­ne dei nomi è stato definito nella specifica RFC 1034 e si occupa di:

1) Ve­ri­fi­ca­re se la risposta de­si­de­ra­ta è contenuta nella cache locale. In caso af­fer­ma­ti­vo, consegna la risposta al client.

2) De­ter­mi­na­re i migliori name server da in­ter­ro­ga­re.

3) Inviare richieste ai name server finché non si ottiene una risposta.

4) Valutare la risposta; suc­ces­si­va­men­te:

  1. Se la risposta risolve la query o contiene un errore nel nome, questa viene me­mo­riz­za­ta nella cache e con­se­gna­ta al client.
  2. Se la risposta contiene un ri­fe­ri­men­to ad altri name server, questa viene me­mo­riz­za­ta nella cache e si continua con il passaggio (2).
        1. Se la risposta è un record CNAME, viene me­mo­riz­za­to nella cache il CNAME e si continua con il nome canonico nel passaggio (1).
  3. Se la risposta contiene un errore del server o sembra non essere corretta, viene rimosso il server dall’elenco dei server e si procede con il passaggio (3).

Cosa fare in caso di problemi con il ri­so­lu­to­re DNS?

Come abbiamo visto, i ri­so­lu­to­ri DNS e la relativa ri­so­lu­zio­ne dei nomi sono im­por­tan­ti per l’utilizzo quo­ti­dia­no delle risorse Internet. Allo stesso tempo, il DNS è noto per essere una fonte di errori.

La pro­pen­sio­ne all’errore risiede nella natura del sistema. Il DNS è un sistema di­stri­bui­to a livello globale e or­ga­niz­za­to ge­rar­chi­ca­men­te, all’interno del quale i cam­bia­men­ti si propagano gra­dual­men­te. Questa ope­ra­zio­ne può ri­chie­de­re fino a 48 ore, quindi è facile che si ve­ri­fi­chi­no di­scre­pan­ze. Inoltre, a tutti i livelli vengono uti­liz­za­te le cache, che sono fon­da­men­ta­li per le pre­sta­zio­ni ma portano anche a errori.

Consiglio

Gli errori nelle in­for­ma­zio­ni DNS me­mo­riz­za­te in locale possono causare una serie di problemi. Pertanto, in molte si­tua­zio­ni è utile can­cel­la­re la cache DNS.

A dif­fe­ren­za dell’effettivo scambio di dati su Internet, che avviene prin­ci­pal­men­te tramite il pro­to­col­lo TCP/IP, l’UDP viene uti­liz­za­to per la co­mu­ni­ca­zio­ne DNS. Lo User Datagram Protocol (UDP) è più semplice e richiede meno risorse. Purtroppo, sono proprio queste proprietà a rendere i ri­so­lu­to­ri DNS pubblici bersagli in­te­res­san­ti per i criminali in­for­ma­ti­ci.

Con la variante di attacco UDP flood, i ri­so­lu­to­ri DNS pubblici vengono uti­liz­za­ti im­pro­pria­men­te come am­pli­fi­ca­to­ri per gli attacchi DDoS. Inoltre, esistono attacchi di cache poisoning che mirano a in­tro­dur­re di nascosto in­for­ma­zio­ni DNS false nei ri­so­lu­to­ri DNS. A livello di server, la ran­do­miz­za­zio­ne della porta di origine (in inglese “Source Port Ran­do­mi­za­tion”) viene uti­liz­za­ta come misura di pro­te­zio­ne.

Come si controlla se la ri­so­lu­zio­ne dei nomi funziona?

Se sul sistema locale si ve­ri­fi­ca­no errori strani che po­treb­be­ro ri­con­dur­si al DNS, è con­si­glia­bi­le ve­ri­fi­ca­re in­nan­zi­tut­to il fun­zio­na­men­to della ri­so­lu­zio­ne dei nomi, un’ope­ra­zio­ne facile da svolgere e che fornisce ra­pi­da­men­te in­for­ma­zio­ni su eventuali problemi.

Su quasi tutti i sistemi, lo strumento nslookup è di­spo­ni­bi­le come programma a riga di comando. Nel caso più semplice, si esegue lo strumento e si trasmette il nome host de­si­de­ra­to come argomento. Se la ri­so­lu­zio­ne dei nomi funziona, riceviamo come risposta un indirizzo IP cor­ri­spon­den­te. Inoltre, lo strumento fornisce il ri­so­lu­to­re DNS con­fi­gu­ra­to:

nslookup example.com
bash

In pratica, nslookup può essere uti­liz­za­to anche per la ricerca inversa del DNS. In questo caso, si trasmette un indirizzo IP come argomento e si ottengono uno o più nomi:

nslookup 9.9.9.9
bash

In al­ter­na­ti­va a nslookup, è possibile eseguire un ping sul nome di dominio. Il comando ping è pre­in­stal­la­to sulla maggior parte dei sistemi e attiva la ri­so­lu­zio­ne dei nomi quando viene ri­chia­ma­to. Tra­smet­tia­mo quindi il nome host come argomento:

ping example.com
bash

Se nslookup o ping non for­ni­sco­no un indirizzo IP, si deve presumere che la ri­so­lu­zio­ne dei nomi non funzioni. In questo caso, è opportuno provare a cambiare il ri­so­lu­to­re DNS o a creare una voce tem­po­ra­nea nel file hosts. Maggiori in­for­ma­zio­ni di seguito.

Se viene vi­sua­liz­za­to un indirizzo IP, la ri­so­lu­zio­ne del nome funziona, almeno in linea di principio. Tuttavia, le in­for­ma­zio­ni po­treb­be­ro essere errate. Per valutare il risultato fornito, vale la pena di con­fron­tar­lo con i record DNS me­mo­riz­za­ti a livello globale. Uti­liz­zia­mo lo strumento DNS Pro­pa­ga­tion Checker di wha­tsmydns.net per vi­sua­liz­za­re i record A del nome host.

Come si cambia il ri­so­lu­to­re DNS?

Come spiegato all’inizio, il termine ri­so­lu­to­re DNS ha diversi si­gni­fi­ca­ti. Quando si parla di cambiare il ri­so­lu­to­re DNS, si intende l’indirizzo del server con­fi­gu­ra­to nel sistema che esegue la ri­so­lu­zio­ne dei nomi per noi. La maggior parte degli utenti pro­ba­bil­men­te non è a co­no­scen­za dell’utilizzo di un server esterno.

Nello stato di base, il ri­so­lu­to­re DNS del ri­spet­ti­vo provider Internet viene uti­liz­za­to sulla maggior parte dei sistemi, siano essi PC, computer portatili o smart­pho­ne. Nelle reti do­me­sti­che, l’indirizzo IP del ri­so­lu­to­re DNS è so­li­ta­men­te me­mo­riz­za­to nel router. Tuttavia, l’uso del ri­so­lu­to­re DNS pre­im­po­sta­to può com­por­ta­re notevoli svantaggi.

Oltre all’in­ter­cet­ta­zio­ne di in­for­ma­zio­ni DNS as­se­gna­bi­li per­so­nal­men­te, nota come DNS leak, esiste un altro problema con il DNS spoofing. In questo caso, il provider Internet fornisce all’utente dati DNS ma­ni­po­la­ti. Ad esempio, i con­cor­ren­ti vengono bloccati o il traffico Internet viene rein­di­riz­za­to verso pagine con pub­bli­ci­tà. È quindi ge­ne­ral­men­te una buona idea impostare au­to­no­ma­men­te il ri­so­lu­to­re DNS.

Per mo­di­fi­ca­re il ri­so­lu­to­re DNS, si procede in modo diverso a seconda del sistema operativo. In genere, si configura la con­nes­sio­ne di rete e si inserisce l’indirizzo Internet di un ri­so­lu­to­re DNS noto. Ana­lo­ga­men­te al DNS se­con­da­rio, un server se­con­da­rio viene inserito accanto al ri­so­lu­to­re DNS primario. Ciò fornisce ri­don­dan­za e protegge dagli errori se il server DNS non risponde.

Per questa ope­ra­zio­ne di modifica, è ne­ces­sa­rio conoscere gli indirizzi IP esatti di uno o più server che ge­sti­sco­no un ri­so­lu­to­re DNS. Poiché la ri­so­lu­zio­ne dei nomi non è possibile senza di esso, non è possibile uti­liz­za­re lo­gi­ca­men­te nomi fa­cil­men­te leggibili dagli esseri umani.

I ri­so­lu­to­ri DNS gratuiti offrono una serie di vantaggi. Oltre a una maggiore velocità e pro­te­zio­ne della privacy, alcuni di essi offrono funzioni di filtro. Esempi noti sono Clou­d­fla­re con l’indirizzo IP omonimo 1.1.1.1 e Quad9 con 9.9.9.9.

Come si può aggirare il ri­so­lu­to­re DNS?

Come abbiamo visto, i ri­so­lu­to­ri DNS sono es­sen­zia­li per lavorare con Internet. Tuttavia, ci sono alcune si­tua­zio­ni in cui ha senso bypassare la ri­so­lu­zio­ne dei nomi tramite il ri­so­lu­to­re DNS. Il trucco tecnico consiste nel creare voci nel file hosts.

Il file hosts è una reliquia degli albori di Internet. All’epoca non esisteva il DNS, ma d’altronde il numero di computer collegati era gestibile. Per risolvere i nomi host in indirizzi IP, le com­bi­na­zio­ni cor­ri­spon­den­ti sono state inserite di­ret­ta­men­te nel file hosts. Un singolo indirizzo IP si trova a sinistra, uno o più nomi di host a destra. Anche il nome host localhost per l’in­ter­fac­cia di loopback viene spesso con­fi­gu­ra­to in questo modo:

# IPv4
127.0.0.1       localhost
# IPv6
::1                 localhost

Per la ri­so­lu­zio­ne dei nomi, il ri­so­lu­to­re stub DNS locale valuta le voci del file hosts. Se viene trovata una cor­ri­spon­den­za per il nome host in­ter­ro­ga­to, il ri­so­lu­to­re stub re­sti­tui­sce l’indirizzo IP cor­ri­spon­den­te. In questo caso, la query rimane com­ple­ta­men­te sulla macchina locale. Al­tri­men­ti, il normale processo di ri­so­lu­zio­ne dei nomi avviene tramite il ri­so­lu­to­re DNS esterno con­fi­gu­ra­to.

Il file hosts consente di lavorare senza un ri­so­lu­to­re DNS. Tuttavia, ciò richiede la creazione di una voce per ogni nome host da risolvere. Non è molto pratico per il lavoro quo­ti­dia­no, ma è adatto per ap­pli­ca­zio­ni speciali. Poiché il file hosts viene valutato per primo, può essere usato come soluzione per vari problemi.

Un uso del file hosts è quello di assegnare un indirizzo IP fisso a un nome host. Questo trucco viene spesso uti­liz­za­to per di­sat­ti­va­re le app che “te­le­fo­na­no a casa”. Ciò è dovuto al fatto che alcune ap­pli­ca­zio­ni inviano pe­rio­di­ca­men­te rapporti a un server con­fi­gu­ra­to in base al nome host e tra­smet­to­no i dati in modo non con­trol­la­to. Per evitare che ciò accada, è suf­fi­cien­te inserire una voce nel file hosts.

Il­lu­stria­mo il principio con un esempio. De­si­de­ria­mo impedire a un programma locale di accedere a spy.example.com. Per fare ciò, inseriamo il nome del dominio nel file hosts e facciamo ri­fe­ri­men­to all’IP di loopback 127.0.0.1. In questo modo, le richieste vanno al sistema locale e non rag­giun­go­no mai il server. Dal punto di vista dell’ap­pli­ca­zio­ne, le richieste si bloccano come se, ad esempio, la con­nes­sio­ne a Internet fosse stata in­ter­rot­ta:

127.0.0.1   spy.example.com

Il principio può anche essere invertito. Molti paesi uti­liz­za­no ora il blocco del web a livello di DNS. I provider Internet sono costretti per ordine del tribunale a fornire indirizzi IP ine­si­sten­ti o fal­si­fi­ca­ti per de­ter­mi­na­ti nomi di dominio. A rigore, si tratta di spoofing DNS au­to­riz­za­to dallo Stato. Dal punto di vista dell’utente, i domini de­si­de­ra­ti non possono essere ri­chia­ma­ti.

L’uso in­tel­li­gen­te del file hosts sul proprio sistema consente di aggirare il blocco del web basato sul DNS. Tutto ciò che serve è l’indirizzo IP effettivo del sito web bloccato, che viene inserito nel file hosts insieme al nome di dominio. Ad esempio, sup­po­nia­mo che il dominio blocked.example.com sia bloccato dal provider tramite il blocco del web DNS. Se inseriamo l’indirizzo IP del sito nel file hosts, l’accesso è nuo­va­men­te possibile:

93.184.216.34 blocked.example.com

Ultimo ma non meno im­por­tan­te, vi pre­sen­tia­mo un approccio da sviluppo web per con­fi­gu­ra­re la ri­so­lu­zio­ne dei nomi sul di­spo­si­ti­vo locale tramite il file hosts. Sup­po­nia­mo che debba essere migrato un sito web esistente sotto il dominio www.example.com. Per preparare la mi­gra­zio­ne, tra­sfe­ria­mo in­nan­zi­tut­to il sito sul nuovo server. Ora dobbiamo testare l’in­stal­la­zio­ne, ma c’è un problema: il sito esistente sul vecchio server 93.184.216.34 viene ancora ri­chia­ma­to con il nome di dominio; il sito migrato sul nuovo server non può essere testato in questo modo.

È quindi suf­fi­cien­te inserire l’indirizzo IP del nuovo server insieme al nome del dominio nel file hosts. In questo modo, le nostre richieste locali vanno al nuovo server e possiamo testarlo senza problemi. Allo stesso tempo, tutti gli altri vi­si­ta­to­ri con­ti­nua­no a ricevere l’indirizzo IP del vecchio server. In questo modo, il sito rimane com­ple­ta­men­te ac­ces­si­bi­le ai vi­si­ta­to­ri.

198.51.100.0 localhost www.example.com

Una procedura simile viene uti­liz­za­ta per svi­lup­pa­re un sito di staging a livello locale. Im­ma­gi­nia­mo che il sito www.example.com debba essere ri­co­strui­to. Pertanto, creiamo un sito di staging in un ambiente di sviluppo locale, ac­ces­si­bi­le con l’indirizzo di loopback 127.0.0.1. Nel file hosts, ag­giun­gia­mo una voce per il nome host dev.example.com:

127.0.0.1 localhost dev.example.com
Vai al menu prin­ci­pa­le